Remote Display Control for Windows CE
PB 自带的工具,通过网络(或者Activesync),在PC上远程控制wince设备(包括Smartphone,PPC)添加了两个功能1 自动连接,启动cerhost的时候,通过activesync拷贝cerdisp到wince设备并自动连接cerhost2 保存截图到BMP文件软件截图[@more@]转帖请注明出处(http://simplaman.itpub.net)下载程序及源码
wince下鼠标钩子
这篇文章算是wince下按键钩子的姊妹篇吧.关键的代码也就是这么一句QASetWindowsJournalHook(WH_JOURNALRECORD, MouseProc, &msg).但是验证起来却是颇费了一番功夫.写下这么几句,希望可以省掉您不少功夫:1 用VS联机调试时,虽然QASetWindowsJournalHook返回成功,但实际上系统不会调用MouseProc2 MouseProc中不会调用MessageBox[@more@]转帖请注明出处(http://simplaman.itpub.net)点击下载示例代码 (在WINCE5,PPC2003,WM5上测试正常)
基于命令行的WINCE驱动开发工具
1 主要功能查看,修改,比较物理内存,寄存器值.进程管理动态卸载,加载驱动(需要wince5或以上)动态卸载,加载服务(需要wince5或以上)[@more@]2 版本此次发布有两个版本,都是基于命令行的,功能完全一样同步版 rconsole.exe + shell.dll rconsole.exe在PC上,通过ActiveSync同wince机器连接.调试串口版 cedbg.exe 在wince机器上运行,在PC上通过串口(连到wince的调试口)发送命令,接收命令响应注 : 如果需要在wince6下访问物理内存,需要手工将mapper.dll拷贝到wince机器根目录或者其他能加载的目录.3 使用说明3.1 功能介绍# 访问物理内存,寄存器mem
wince remote call profiler(性能分析)
如何使用1 建立工程,CPU类型必须于目标机型一致如ARMV4I,所以选择WCE Application,然后选择empty project2 project settings 中,link页,Object/library modules中添加 cecap.lib(前面有空格),Ingore libraries中添加,libc.lib(前面有逗号).C/C++页Project Options最后添加 /callcap(前面有空格)cecap.lib 在C:Program FilesCommon FilesMicrosoft SharedWindows CE ToolsPlatmansdkwce500lib 下(wce500是目标机器平台)3 添加文件main.cpp,(文档中要求必须include文件cecap.h,实际上可以不包含该文件)4 编译(确保Active Configuration是ARM
wince下按键钩子
wince上按键钩子网上有很多源码,但有不同程度的误解(如钩子回调函数必须在单独的动态库),且示例代码相当繁琐(LoadLibrary,GetProcAddress...).下面为我在PPC2003和WM5上测试通过的代码: 点击下载示例代码几点体会1 必须在主线程中调用GetMessage,否则KeyBoardProc不会被调用,从此也可见wince上按键钩子是基于窗体消息机制的,并不需要将KeyBoardProc注入到其他进程,因此不需要单独的动态库2 该钩子只能钩按键消息,如keybd_event发送的消息,可以截获软键盘的上下左右等按键,但不能截获软键盘上数字字母键[@more@]
wince 自带的web server
同arm linux相比,wince的网络功能用的相对较少.实际上,wince的网络功能并不逊色,比如"remote display control"就能通过网络远程控制终端.wince自带的web server也是功能强大,绝非arm linux上轻量级的boa之类可比(当然arm linux上有很多其他选择).PB工程加上web server的组件:Catalog-Core OS-Windows CE devices-Communication Services and Networking-Servers-Web Server,如果需要ASP,加上JScript或者VBScript,体验一把吧.编译下载,连接好网络.就可以通过浏览器访问web server了.缺省,服务器文件目录为/windows/www/wwwpub.静
wince remote spy 原理
一直好奇remote spy是如何截获其他窗口消息的,用IDA肢解了一下,大概流程如下1 用GetWindow得到窗口树2 针对用户选择的窗口,调用 GetWindowLong(hwnd,GWL_WNDPROC) 得到之前的消息处理函数3 SetWindowLong替换窗口消息处理函数到自己的处理函数,在该函数内记录消息,并会用CallWindowProc调原来窗口消息处理函数验证:打印出特定窗口的GWL_WNDPROC,发现remote spy前后GWL_WNDPROC发生了变化,关闭消息窗口后,GWL_WNDPROC恢复之前值[@more@]
嵌入式:本机查看串口调试信息
串口输出信息是嵌入式系统开发最基本的调试手段.但由于空间,外观的限制,很多产品无法在最终产品上连接出调试串口.前后期调试手段的差异,给产品的后期调试带来不少的麻烦.可以在最初开发的时候考虑到输出信息的重定向.如wince应用程序,调试时可以将RETAILMSG即 重定向到主机开发工具上.如果是Release版本,也可以用wprintf替换NKDbgPrintfW,修改注册表,拷贝console.dll到windows目录,调试信息就会输出到控制台窗口.如果是系统调试信息,动态加载的驱动也可以用wprintf,不过wprintf会比较费时间,非动态加载部分则相对麻烦,除非在OEM函数如OEMW
ActiveSync Service Provider实现wince联系人同步
1 什么是ActiveSync Service Provider(ASP)参考文章,引用2处有一个完整的例子引用1 Developing ActiveSync Service Providers: The First Look引用2 Developing ActiveSync Service Providers: Desktop Part Implementation引用3(中文)2 为什么要'重现'联系人同步实际上,mobile和wince上都有现成的联系人同步组件.如果你可以接受POOM复杂的接口,接受POOM中联系人的固定属性以及POOM存储联系人的实现方式,那好,加上POOM同步组件就可以了.POOM联系人在wince上是存在ObjectStore中的Contact数据库(CEDATABASE中).在wince5上,ObjectStore只能在
wince6.0下DeviceEmulator 基于共享文件夹的hive实现
从wince6.0开始,注册表缺省就 是Hive based.不过缺省情况下Hive会存放在Ram Filesys中,掉电后就不复存在.修改注册表即可将Hive存放到DeviceEmulator的共享文件夹中,修改部分的注册表如下(粗体部分为添加内容); HIVE BOOT SECTION; @CESYSGEN IF FILESYS_FSREGHIVE[HKEY_LOCAL_MACHINEinitBootVars]; "DefaultUser"=""; "Start DevMgr"=dword:1 "RegistryFlags"=dword:1 "Flags"=dword:F; @CESYSGEN ENDIF[HKEY_LOCAL_MACHINESystemStorageManagerAutoLoadObjectStore] "M
wince hive based 注册表清除
1 在OEMIOControl中实现IOCTL_HAL_GET_HIVE_CLEAN_FLAG,系统启动时,根据特定标志决定是否需要清除HIVE.[注 这种方式会清除所有HIVE中内容,包括注册表,数据库等,不仅仅是注册表]2 调用函数RegReplaceKey,如RegReplaceKey(HKEY_LOCAL_MACHINE,NULL,NULL,NULL);设置成NULL后需要复位,相应分支注册表才会恢复为缺省内容[@more@]
WINCE System Event Log
关于wince上Eventlog的介绍与使用http://blog.ccw.com.cn/blog-htm-uid-17284.html 有比较详细的描述.补充几点1 WINCE5.0 下 Eventlog没有单独可选的catalog选项.可以在平台的bat文件(或者工程属性)中添加 SET CE_EXTRA_MODULES=eventlog eventlogmsgs2 WINCE6.0 上 Eventlog组件为Core OS-CEBASE-Core OS Services-System Event Log若别的工程有编译好的eventlog.dll,可以修改platform.bib(或project.bib),添加文件eventlogmsgs.dll,eventlog.dll,修改platform.reg,添加如下[HKEY_LOCAL_MACHINESYSTEMObjectStore] "EnableEven