随笔分类 -  wince/windows

通过WM_COPYDATA消息完成进程间通信
摘要:完成进程间通信最简单的方式就是发送WM_COPYDATA消息。(1)发送WM_COPYDATA消息SendMessage(接收窗口句柄, WM_COPYDATA, (WPARAM)发送窗口句柄, (LPARAM)&copyData);其中的copyData是要发送的数据,类型为COPYDATASTRUCT结构体:typedef struct tagCOPYDATASTRUCT{DWORD dwData;DWORD cbData;PVOID lpData;} COPYDATASTRUCT;dwData : Specifies up to 32 bits of data to be pas 阅读全文

posted @ 2013-03-03 15:56 zhuyf87 阅读(42964) 评论(0) 推荐(2)

分享WinCE钩子封装库
摘要:在最近的项目中,需要使用WinCE的键盘钩子。具体是勾住WinCE终端的扫描按键。翻出自己以前的旧程序,重新封装了一下。现在分享出来,如果大家的项目中也需要用到键盘钩子或者鼠标钩子,又不想在这上面花费太多时间的话,假如你搜索到了这个帖子,不妨试用一下我封装的这个。CeHook.dll导出6个函数:#ifndef _CE_HOOK_H_#define _CE_HOOK_H_#define DLLCEHOOK_API __declspec(dllexport)#define WM_HOOK_MOUSE WM_USER + 101#define WM_HOOK_KEYDOWN ... 阅读全文

posted @ 2013-01-26 19:03 zhuyf87 阅读(832) 评论(3) 推荐(1)

WinCE键盘钩子与鼠标钩子
摘要:最近需要在Windows CE 5.0操作系统下实现这样的功能:如果没有点击屏幕,则等待5秒钟后自动调暗背光。一旦屏幕有输入,则自动调亮背光。调节背光的功能,已经在底层做好了,可以通过接口函数来调节。剩下的问题就是感应这个屏幕点击,就想到了鼠标钩子。道理很简单,当有鼠标消息发生时,操作系统先交给我的钩子过程,等我用完了,再交给钩子链中的下一个钩子或者目标窗口。不过诸如:SetWindowsHookEx,CallNextHookEx,UnhookWindowsHookEx这些函数在Windows CE下都没有提供。微软的MSDN说Windows CE不支持钩子,特别失望。不过还是去google了 阅读全文

posted @ 2013-01-25 14:20 zhuyf87 阅读(3589) 评论(1) 推荐(0)

等待一个线程的结束
摘要:Win32 提供WaitForSingleObject()函数,其第一个参数是一个核心对象(如线程)的 handle。为方便讨论,把等待线程称为线程#1,把被等待线程称为线程#2。调用 WaitForSingleObject()并放置一个“线程句柄”作为参数,将使线程#1开始睡眠,直到线程#2结束。像Sleep()函数一样,WaitForSingleObject()也有一个参数用来指定最长的等待时间。DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds);hHandle:等待对象的 handle(代表一个核心... 阅读全文

posted @ 2012-12-25 18:09 zhuyf87 阅读(11905) 评论(0) 推荐(0)

Windows CE系统生成随机数字符串
摘要:srand函数用于初始化随机数生成器,rand函数用于产生随机数。srand的参数称为随机数种子,要确保rand函数产生真正的随机数(每次生成的随机数不同),随机数种子就要设置为不同的值。(In order to generate random-like numbers, srand is usually initialized to some distinctive value)通常以系统时间作为随机数种子,最常用的方式是:srand(time(NULL));,但Windows CE编程时,c库不支持time函数,所以这里以GetTickCount代替。另外注意下面函数中的for循环,由于f 阅读全文

posted @ 2012-12-12 07:51 zhuyf87 阅读(1097) 评论(0) 推荐(0)

Windows Mobile系统弹出输入法时,自动调整窗口显示
摘要:windows mobile系统自带的输入法没有标题栏,用户没有办法移动它的显示位置。如果对话框的底部,有需要输入的编辑框,就会被弹出的输入法遮挡住,这样用户无法实时看到自己输入的内容。参考mobile自带的系统程序,一般可以做成下面这种效果。也就是弹出输入法时,自动给窗口添加一个滚动条。用户可以通过滚动条调整界面的显示。当关闭输入法时,将滚动条去掉,同时窗口恢复到弹出输入法之前的默认显示。下面介绍如何实现这种功能。首先需要在系统“弹出输入法”和“关闭输入法”时,能够获得一个通知。这可以通过响应WM_SETTINGCHANGE消息来完成。当执行到自定义的WM_SETTINGCHANGE消息响应 阅读全文

posted @ 2012-12-11 11:11 zhuyf87 阅读(925) 评论(1) 推荐(0)

Windows Mobile 消除安装程序时显示“此程序来自未知发行者…“提示的方法
摘要:修改注册表HKey_Local_Machine\Security\Policies\Policies\0000101a = 11为取消提示,0为认证提示。 阅读全文

posted @ 2012-11-12 11:02 zhuyf87 阅读(470) 评论(0) 推荐(0)

UTF的字节序和BOM
摘要:UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如“奎”的Unicode编码是“594E”,“乙”的Unicode编码是“4E59”。如果收到UTF-16字节流“594E”,那么这是“奎”还是“乙”?Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。 BOM是一个有点小聪明的想法:在UCS(Unicode Character Set)编码中有一个叫做“ZERO WIDTH NO-BREAK SPACE 阅读全文

posted @ 2012-11-07 14:37 zhuyf87 阅读(742) 评论(0) 推荐(0)

如何让WriteFile立即生效
摘要:WriteFile函数通常是将数据写入到内部缓冲区,然后OS会定期将缓冲区中的数据写入到磁盘。如果想在调用WriteFile之后,数据就立即写入磁盘,有如下三种方法:1. 调用FlushFileBuffers(hFile);Flushes the buffers of a specified file and causes all buffered data to be written to a file.BOOL FlushFileBuffers( HANDLE hFile // open handle to file whose buffers are to be flushed);该函数 阅读全文

posted @ 2012-11-01 10:17 zhuyf87 阅读(5305) 评论(0) 推荐(1)

WinCE6程序移植到WinCE5
摘要:涉及到硬件相关的东西肯定需要修改,这些自不必说。如果用到了WinCE6支持而WinCE5不支持的API,当然也需要修改,或者寻找替代方法(这个很少遇到)。这些都搞完之后,可能还会遇到下面这个问题(此图是调试时截取):解决方法:打开“Properties | Configuration Properties | Linker | Command Line”。把6改成5就OK了。上面说的是把WinCE6应用程序移植到WinCE5的情况,把WinCE7的app移植到WinCE5也是同样的操作。 阅读全文

posted @ 2012-10-22 11:26 zhuyf87 阅读(412) 评论(0) 推荐(0)

导航