有两个问题一直困扰着我,希望有高手指点
1.我使用API加Timer控件,可以实现捕获按键情况。我现在想实现的是如何能够在捕获后,让Windows不响应这个按键。比如,我想造成好像a键坏了,比如在Word打字时,一旦发现按下a,就让他什么都不出现。
2.在WinXP或Win2000中,如何实现使自己的应用程序不出现在Ctrl+Alt+Del后的任务中。我知道在WIn98,WinMe下,可以通过一个API实现,但到了WinXP下不能用了。谢谢!
问题点数:0、回复次数:4Top
1 楼freewing(羽田共)回复于 2003-08-04 00:42:42 得分 0
用VC做一个HOOK,做成DLL
// KeyHook.cpp
HHOOK hMyHook=NULL;
HINSTANCE hMod=NULL;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hMod=(HINSTANCE)hModule;//
return TRUE;
}
void CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)
{
if(wParam!=VK_A)
//这个不返回,按键就丢了
::CallNextHookEx(hMyHook,code,wParam,lParam);
}
extern "C" BOOL WINAPI SetHook()
{
hMyHook=::SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)&KeyboardProc,hMod,NULL);
if(hMyHook)
return TRUE;
else
return FALSE;
}
extern "C"BOOL WINAPI UnHook()
{
if(hMyHook)
::UnhookWindowsHookEx(hMyHook);
return TRUE;
}
用DEF文件导出
; KeyHook.def : Declares the module parameters for the DLL.
LIBRARY "KeyHook"
DESCRIPTION 'KeyHook Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
SetHook
UnHook
在VB里面调用SetHook()就可以,调用UnHook()取消
Top
2 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2003-08-04 06:35:25 得分 0
只能用全局HookTop
3 楼MazyTes(Mazy)回复于 2003-08-06 22:49:02 得分 0
好像不用VC也能写你以上程序吧,第二个问题谁会?Top
4 楼goodname008(卢培培,充电中......)回复于 2003-08-06 22:55:39 得分 0
可以用 RegisterHotKey 将a键注册成系统热键,我没试,你试试看行不行。Top




