由于Wince系统里的程序有很多,用键盘关闭的时候有的是ESC,有的是ALT+F4,有的是ALT C,有的是ALT X等,乱七八糟,我想把他们统一一下,比如都用ALT+F4。所以我想先用程序捕获到键盘的消息,如果是ALT+F4的话,就找到系统当前最上面的程序,然后强制关闭他。现在...
全文
回复(7) 2004-12-14 19:26 来自版块 - Wince 程序开发
表情
wwei_wang兄弟你可以试试下面的函数: HWND GetParent( HWND hWnd ); 当你得到一个窗口的句柄之后,你可以递归调用它,直到找到对应的应用程序的主窗口,然后关闭它;如果当前窗口即为主窗口,直接关闭它就可以了。 [编辑 - 12/17/04 by ...(2004-12-17 08:31)
blue123键盘捕获的问题我已经解决了,谢谢大家,我注册了一个系统热键,就可以得到了。 第二个问题就比较麻烦了,我得到窗口的句柄,那个句柄虽然不是我程序的,但可能是另外一个程序的一个自窗口的句柄,这样的话,我给那个句柄发关闭消息,结果是那个句柄的窗口(也就是子窗口)被关闭了,而不是应用...(2004-12-16 16:06)
wwei_wangjoyfly说得没错。但是DLL也是一种应用,到底在哪里实现完全是个人所好,而且与实际情况有关。如果把这个功能放到其他的动态链接库里面,那么就可以减少一个进程的运行,这对物理内存相对比较紧缺的系统来说肯定是有益的。当然,具体的实现还是与实际的情况有关的。:))))(2004-12-16 08:35)
joyfly如果可以修改KEYBOARD DRIVER,就可以在DRIVER里得到你要的KEY的时候,SetEvent()通知你的APPLICATION就可以了,用不着写DLL那么麻烦了; 同时还能在DRIVER里把你不想交给系统处理的KEY直接丢掉,不给GWES,也就起到了屏蔽一些KEY...(2004-12-15 15:47)
wwei_wang对于“如何捕获到键盘的消息?”,我觉得也可以在键盘驱动程序里实现,先捕获Alt+F4,然后通知上层的应用(也可以是一个动态链接库,当然这个需要自己开发,应该很简单的),由这个应用(或动态链接库)负责关闭处于顶层的应用程序。 如果我说的不对,还请各位大侠批评指正,谢谢:))) (2004-12-15 14:15)
joyfly关于WINCE下的HOOK的有限支持, http://www.cnemb.com/index.php?name=PNphpBB2&file=viewtopic&t=10333 关于"如何找到当前系统中正在运行的最上面的那个程序,然后关闭他?&...(2004-12-15 12:55)
wwei_wang(2)通过调用GetForegroundWindow()函数可以获得当前的前台窗口。调用DestroyWindow函数可以销毁指定的窗口。 [编辑 - 12/15/04 by wwei_wang](2004-12-15 08:58)

返回顶部