- 博客(68)
- 资源 (50)
- 收藏
- 关注
原创 Windows 下直接控制打印端口
近日在完成最后的 POS 打印模块时有所斩获。POS 机的小票打印是一个不太好控制的内容,原因是小票的长度从来不固定,它要根据用户购买的货品种类,以及附加信息的不同(例如可能需要打印折扣/优惠/会员等汇总信息);用报表+自定义纸张也许可以解决,不过长度的精确计算是件不容易实现的事,且动态自定义纸张要求当前用户拥有管理员或打印机操作员的权限,受到的限制颇多;另一方面,POS 打印机通常都自带字库,而
2008-09-13 19:55:00 3488 4
原创 注册表控件的设计时授权
我当前机器上的 MS 控件设计时授权码,放在这备用吧:Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT/Licenses]@="Licensing: Copying the keys may be a violation of established copyrights."[HKEY_CLASSES_RO
2008-09-10 05:44:00 1839 5
原创 生成 vfp2c32.fll 的代码
我通常不喜欢将那些小的 DLL / FLL 作为独立的文件来发布,我一般会将它们作为资源放入一个编译进 exe 的 dbf 文件的备注字段内,使用前再 Copy Memo res_name To ... 释放出来,这样可以避免文件被用户删除/替换/病毒感染造成运行错误。然而如果要在示例代码中使用 DLL / FLL,那么就需要将它一起提供给用户,碰到像 CSDN 这样的 blog,不提供附件下载的
2008-09-09 23:01:00 235356 14
原创 web service
今天花了半天的时间来研究 web service,最后发现其实挺简单,如果你以前编写过 COM / DCOM 组件,写服务端的代码没什么区别。vfp 提供了一个向导将这个 COM 升迁为一个 web service 组件,自动生成了所需的 WSDL 文件;客户端如果注册好了这个组件的话,只需用向导从 ToolBox 的 My XML Web Service 中拖放这个 WSDL 到代码窗口中自动生
2008-09-09 15:48:00 1163 1
原创 使用 BLOB 类型字段
vfp9 中增加了 blob 型字段,这可是个好东西!用它来存储图像数据最合适,与 SQL 的交换也很顺利,接下来就是使用它了。使用它当然无外乎是显示/打印图像;显示很简单,表单上放一个 Image 控件,然后将 Image.PictureVal 赋值为这个 blob 字段即可;然而如何打印却费了我一番周折,在梅子上看到有人说先用 StrToFile 保存为图像文件,然后再用于报表,当然也行;不过
2008-09-05 23:32:00 10754 18
原创 打开文件对话框缺省为缩略图方式显示
最新情况: 参见 打开公用对话框的初始视图类型问题------------------------------------------------------坛子上有人问到如何对使用 CommonDialog 组件显示的打开对话框缺省显示为缩略图的问题,其实上一次提出这个问题的时候我就已经回答过,可能楼主对 api 不熟悉,所以没有写出实现的代码。这次豆三版主挑出了我的马甲,只好勉为其难了。查
2008-08-30 19:58:00 3198 7
原创 创建快捷方式
C 程序员通常都会使用 IShellLink 来创建快捷方式,但 vfp 没有这么幸运,虽然可以用 CoCreateInstance 创建出一个 IShellLink 界面对象,可是却无法调用这种 COM 对象提供的方法,原因可以参见这里。所以一直以来都没有非常好的编程创建快捷方式的方法。常用方法是使用安装程序提供方法来在安装时创建它,可如果做成绿色版,就没这个方便性了,于是利用编程动态创建快捷方
2008-08-25 16:55:00 1824 16
原创 vfp 中使用 BStr, SafeArray
当我们调用其它语言编写的 DLL 或使用某些 COM / OCX 对象时,我们经常碰到要传递 BSTR 类型的字符串和 SafeArray 类型数组的问题。BSTR 来自于 Basic 的字符串结构( Basic STRing),其结构是:[Length prefix] + [Data string] + [Terminator]Length prefix - 长度前缀, 4 字节, 不包含尾
2008-08-22 16:09:00 2301 2
原创 TreeView/ListView/ImageList 控件改造
今天又有人发短消息问怎样更改树控件的背景色,又是一个问了上千次的问题!实在不想再回答,就放在这里自己看吧。其实用到的 api 就一条,但是很多人都没有正确的使用它们。正确的方法是:1. 不要使用 v6 版的 TreeView 控件,同时也就不要使用 v6 版的 ImageList 控件,要用就都用 v5 版的。v5 版的除了不带检查框这个比较麻烦外,其它都可以用 SetWindowLong
2008-08-09 11:32:00 4066 17
原创 一行代码禁用 ctrl+alt+del
今天看到一行 vb 代码,真令我吃惊!照此处理:1. 新建一表单2. 加一个自定义表单属性: hh,初始值 03. 加两个按钮,分别设 Caption 为 “禁用任务管理器” 和 “使能任务管理器”4. 在“禁用”按钮的 Click 中写: Thisform.hh = FOpen( GetEnv( WinDir ) + /system32/taskmgr.exe, 12 )5. 在“使能”
2008-08-08 11:43:00 1246 10
原创 卷管理函数(续)
上一篇研究了利用 DefineDosDevice 和 QueryDosDevice 这两个函数来映射一个文件夹到一个本地盘符,以及查询所有 DOS 映射设备的方法,附带发现了一个获取硬盘序列号的方法。卷挂接在 Unix/Linux/Netware 系统上应用比较常见,Windows 可能由于多用于个人平台,所以知道卷挂接技术的人就比例上来说少了很多。你可以将它理解为:把一个物理设备挂接到一个逻辑盘
2008-08-08 04:07:00 1301 2
原创 卷管理函数
今天研究 Volume Management Functions 部分的 api 函数:这个部分函数包含两大块,第一块是卷管理,第二块是卷挂接第一块中的函数包括:DefineDosDevice, GetDriveType, GetLogicalDrives, GetLogicalDriveStrings, GetVolumeInformation, GetVolumeInformationByH
2008-08-07 22:02:00 1557 11
原创 Windows 系统文件保护(续)
研究了一晚上,发现:第一种方法并不容易实现,而且过程繁琐第二种方法可以实现,但由于需要采用远程注入的方式来调用未公开函数 SfcTerminateWatcherThread(sfc_os.dll 中序号为 2,此函数必须在 WinLogon 进程内调用才生效),这样就存在一个限制,因为要调用 CreateRemoteThread 在 WinLogon 进程空间内创建远程线程,而这个功能会被很多病毒
2008-08-07 09:07:00 1198 3
原创 Windows 系统文件保护
Windows 从 2000 开始就引入了系统文件保护功能(WFP),今天先看看如何列出被保护的系统文件。代码很简单,只调用了一个 api 函数:SfcGetNextProtectedFileDECLARE Long SfcGetNextProtectedFile IN sfc Long RpcHandle, String @ ProtFileDataCREATE CURSOR p
2008-08-06 21:35:00 937 4
原创 创建一个不能用鼠标操作的表单
新建一个表单,设置 Desktop = .T.(或者设为顶层表单),先加几个文本框控件,再加一个退出按钮,按钮.Click 中写 Thisform.Release(),然后在表单的 Load 事件中加入下面的代码:DECLARE Long GetWindowLong IN WIN32API Long, LongDECLARE Long SetWindowLong IN WIN32A
2008-08-06 16:34:00 776 7
原创 Ping 操作
咱也来个 ping 函数,使用的主要是 ICMP(Internet Control Message Protocol) 提供的函数来完成的,用到了下面几个结构:#define WSADESCRIPTION_LEN 256 #define WSASYS_STATUS_LEN 128 typedef struct WSAData { WORD wVersion;
2008-08-05 20:57:00 2269 8
原创 一种屏蔽所有系统热键的方法
今天在这个网站上看到一篇论述在新建桌面中运行应用程序来屏幕所有系统热键的文章,很受启发,按照它的思路和代码改成了一个 vfp 类,只要直接实例化它并调用它的 run 方法即可在新建桌面中运行一个应用程序。关于屏蔽系统热键的问题,以前看过很多方法,最好的方法是替换 GINA,但用 vfp 无法实现。这篇文章中的方法可以很容易的修改为几乎所有语言的代码。原理很简单:系统热键(如:ctrl+alt+
2008-08-05 00:34:00 4232 1
原创 获取指定类型文件的缺省系统关联
有时我们需要检查指定类型的文件是否存在缺省的程序可用来打开它,例如,如果我们要显示一个 .DOC 文件,首先我们要检查当前系统中是否安装了合适的程序可以打开它,下面的函数可以完成此功能:m.cType = xlsm.cExeFile = SysDefaultOpenedBy( m.cType )IF EMPTY( m.cExeFile ) MESSAGEBOX
2008-08-04 08:31:00 1240 4
原创 让机器进入待机或休眠状态
系统待机 / 休眠----------------------------------------------------------------------------------------------DECLARE Long SetSuspendState IN PowrProf ; Long Hibernate, Long ForceCritical, Long DisableWak
2008-08-04 06:24:00 1780 11
原创 检查是否已连接上 Internet
一小段检查 Internet 连接的代码:IF CheckInternetConnection() MESSAGEBOX( 已经连上 Internet ) ELSE MESSAGEBOX( 没有连上 Internet ) ENDIFFUNCTION CheckInternetConnection #define TEST_PROMPT
2008-08-04 05:20:00 1790 1
原创 枚举和清除 IE 缓存
使用 WinINet 中的函数实现枚举和清除 IE 缓存文件, Cookie, 浏览历史。PUBLIC oFormoForm = NEWOBJECT( MyForm )oForm.Show#define CSIDL_INTERNET_CACHE 0x0020#define CSIDL_COOKIES 0x0021
2008-08-01 04:29:00 2013 9
原创 自用参考
http://www.connectionstrings.com/ 据说对眼睛保护最有利的屏幕颜色: rgb(199,237,204) B名单:andylauxinggodoverheychenlin2532 needacoderneedanothercoderpengwei0417thinclientwzz80
2008-07-30 01:45:00 694 1
原创 跨进程获取树控件节点信息
几天前在 myf1 上遇到人问如何获取其它程序中的树控件节点内容,当时就将要用到的几个 api 告诉了它,然后自己试了一试,成功!今天空闲时无意中又运行了它,结果却发现被探测的程序挂掉了!仔细回忆一下,原来测试时是在同一个 vfp 内运行两个表单,一个做测试对象,里面有一个 TreeView,另一个就是这个探测器;由于同在一个 vfp 进程内,所以没有发生错误。这次不同是,被探测的是 msdn 的
2008-07-16 21:27:00 3498 6
原创 下载连接
昨天在分析为什么天网无法用 OpenProcess 打开时在网上搜了很多地方,最后在炉子的博客里转不出来了,牛人,可怕啊,还只是一个高中生!用他的 SSDT 看了一下,原来 pfw hook 了很多的 api,其中就有 OpenProcess,自然被它截取了,用 ssdt 恢复后就没有问题了,不过要用 vfp 来实现还真是难。顺便找到一个有不少工具的地方:http://cid-0b2eb0a417
2008-07-08 10:20:00 2370 7
原创 列举系统进程及调用模块
好久没有写东西了,这两天晚上抽空又熟悉了一下 TlHelp32 中几个 api 函数,有点收获,也要感谢 yrt888,如果没有他提出这个问题,我也不会研究这几个 api 的用法。下面是这个工具的 prg 版本(不知道如何上传文件到这个博客,换成 prg 版本可是花了点时间的),由于主要是研究 api 函数的用法,所以没有去实现一个工具应有的一些功能,例如点题头排序,右键菜单,自动刷新等,其实要自
2008-07-05 14:52:00 2136 12
原创 临时以其它登录用户来执行操作
有时我们需要临时以其它用户的权限来执行某项操作。典型的像从一个共享文件夹中复制数据到本地,如果这个共享文件夹处于一个安全的服务器上,且设置了只有指定的用户才能读取,这时这种技术就非常有用;通常的处理方法是临时映射一个本地盘符,用完后取消映射,但如果要处理的时间稍长,有经验的用户会察觉到它,并在你的程序执行操作的同时也同样可以访问到其中的敏感内容,所以我们需要秘密的访问它。Windows 有几个 A
2008-05-07 21:46:00 1239 1
原创 关于保存网页为 MHTML Document 格式的第三种方式
前两种方式可以参见:http://dkfdtf.blogbus.com/logs/20284731.html 当我们用 InternetExplorer 或 WebBrowse 对象来保存网页为 mht 格式的本地文件时, 对话框是一定会出现的,不管你如何设置 ExecWB 的第二个参数。但我们可以用程序来模拟用户按键,这样就可以不需要用户的参与了。问题是 vfp 只能以单线程的方式来运行
2008-05-06 06:07:00 5218 2
原创 这就算开通啦
开通时间: 2008.04.23 - 19:19 , 接 http://dkfdtf.blogbus.com/先找点时间将其它的技术文章搬过来,有时间再写点新东西。
2008-04-23 19:21:00 677 1
mscomctl.ocx autosize 不可见
2014-03-09
comctl32.ocx autosize 不可见
2014-03-07
vfp9 显示和输出 unicode 文本(bug fixed) demo
2018-11-04
Reg-Free 工具
2017-02-03
VFP IMEMode 属性修复示例
2016-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人