用Visual C++实现屏幕抓程序(5)
break;
case VK_CONTROL:
MaskBits|=CTRLBIT;
break;
case VK_SHIFT:
MaskBits|=SHIFTBIT;
break;
default: //judge the key and send message
break;
}
for(int index=0;index {
if(hCallWnd[index]==NULL)
continue;
if(IsWindow(hCallWnd[index])&&(HotKey[index]==wParam)&&(HotKeyMask[index]==MaskBits))
{
SendMessage(hCallWnd[index],WM_HOTKEY,wParam,WM_KEYDOWN);
bProcessed=TRUE;
}
}
}
if(!bProcessed){
for(int index=0;index if(hCallWnd[index]==NULL)
continue;
if(IsWindow(hCallWnd[index])&&(HotKey[index]==0)&&(HotKeyMask[index]==0))
SendMessage(hCallWnd[index],WM_HOTKEY,WM_HOTKEY,lParam);
}
}
}
return CallNextHookEx( hHook, nCode, wParam, lParam );
}
BOOL InitHotkey()
{
if(hHook!=NULL){
nHookCount++;
return TRUE;
}
else
hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
if(hHook!=NULL)
nHookCount++;
return (hHook!=NULL);
}
BOOL UnInit()
{
if(nHookCount>1){
nHookCount--;
return TRUE;
}
BOOL unhooked = UnhookWindowsHookEx(hHook);
if(unhooked==TRUE){
nHookCount=0;
hHook=NULL;
}
return unhooked;
}
BOOL __declspec(dllexport) __stdcall AddHotkey(HWND hWnd,UCHAR cKey,UCHAR cMask)
{
BOOL bAdded=FALSE;
for(int index=0;index if(hCallWnd[index]==0){
- 上一篇:VC++中实现以复杂线条为基础的图形绘图
- 下一篇:通过例程分析状态条用法
- Android定时器实现的几种方式整理及removeCallbacks失效问题解决_Android开发_龙盟编程网
- 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)_MySQL 技术_龙盟编程网
- 查询反向链接中link和domain的区别_SEO优化_龙盟编程网
- sql 查询本年、本月、本日记录的语句,附SQL日期函数_Sql Server开发_龙盟编程网
- 如何应用PHP函数imagettftext处理图片_php编程_个人技术分享
- 如何解决C语言,函数名与宏冲突_C/C++开发_龙盟编程网
- 在ASP.Net中应用Javascript_Javascript编程_龙盟编程网