思路是这样的:
创建个DLL WIN32 Dynamic-Lik Libray
里面带全局钩子.
SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,hIstance,0)关键是怎么通知main 函数里面的
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
.来个高手写下DLL 文件的
和在main函数里面的引用方法.和执行步骤
创建个DLL WIN32 Dynamic-Lik Libray
里面带全局钩子.
SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,hIstance,0)关键是怎么通知main 函数里面的
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
.来个高手写下DLL 文件的
和在main函数里面的引用方法.和执行步骤
解决方案 »
- error LNK2001: unresolved external symbol __imp__WSASocketA@24
- 关于gethostbyaddr函数的使用问题??????????????????
- 如何用程序取得路由器上的外网连接IP?
- 如何使鼠标停留在button会提示
- 加密高手入
- 大家多帮忙,visual assist的问题
- 求高手解决VC关于“function does not take 3 parameters”问题
- VC/MFC 如何建立共享资料夹且权限设定为Everyone
- 如何把程序缩成任务栏右下角的小图标?
- CComboBox 为什么只有一条缝?
- FFmpeg 录像保存为avi文件,播放时有时出现模糊不清的情况,并且声音有杂音
- asp调用vc6的写的com组件是个DLL,请问如何debug这个dll?
http://download.csdn.net/detail/gameslq/3692065
{ if(nCode < 0)
{
CallNextHookEx(hook, nCode, wParam, lParam);
return 0;
}
if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode))
{
if (( wParam>=VK_LBUTTON )&&( wParam<=VK_OEM_CLEAR ) )
{
HWND hwnd = ::GetFocus();
while( hwnd != NULL )
{
hwnd = ::GetParent(hwnd);
CHAR name[255];
::GetClassName(hwnd,name,255); if ( 0 == lstrcmp(name,"MyOCXWnd") )
break;
}
SendNotifyMessage( hwnd, UWM_KEYBOARD_MSG, wParam, lParam /*(LPARAM)hwnd*/ );
}
} return CallNextHookEx(hook, nCode, wParam, lParam);
}这段代码是一个OCX控件里的,也是DLL文件,发了一个自定义的消息UWM_KEYBOARD_MSG
给控件所在的父窗体,父窗体的消息处理可以做进一步处理,比如调用函数,触发事件。