最新更新的文章列表
精彩推荐列表
钩子获取鼠标在窗口上的位置
2008-07-07 09:37:37.0
HHOOK hMsgHook;
//钩子函数
LRESULT CALLBACK GetMsgProc(int nCode,WPARAM wParam,LPARAM lParam)
{
LPMOUSEHOOKSTRUCT pMouseHook = (MOUSEHOOKSTRUCT FAR *)lParam;
if(nCode == HC_ACTION)
{
if(HIBYTE(GetKeyState(VK_LBUTTON )))
{
if(X!=0 && Y!=0)
{
Form1->Edit1->Text=(int)pMouseHook->pt.x-Form1->Left;
Form1->Edit2->Text=(int)pMouseHook->pt.y-Form1->Top;
Form1->Shape1->Left=(int)pMouseHook->pt.x-Form1->Left-4-Form1->Shape1->Width/2 ;
Form1->Shape1->Top=(int)pMouseHook->pt.y-Form1->Top-30-Form1->Shape1->Height/2 ;
Form1->Controls[a]->Left=Form1->Shape1->Left+2;
Form1->Controls[a]->Top=Form1->Shape1->Top+2;
}
}
}
return CallNextHookEx(hMsgHook,nCode,wParam,lParam);
}
{
LPMOUSEHOOKSTRUCT pMouseHook = (MOUSEHOOKSTRUCT FAR *)lParam;
if(nCode == HC_ACTION)
{
if(HIBYTE(GetKeyState(VK_LBUTTON )))
{
if(X!=0 && Y!=0)
{
Form1->Edit1->Text=(int)pMouseHook->pt.x-Form1->Left;
Form1->Edit2->Text=(int)pMouseHook->pt.y-Form1->Top;
Form1->Shape1->Left=(int)pMouseHook->pt.x-Form1->Left-4-Form1->Shape1->Width/2 ;
Form1->Shape1->Top=(int)pMouseHook->pt.y-Form1->Top-30-Form1->Shape1->Height/2 ;
Form1->Controls[a]->Left=Form1->Shape1->Left+2;
Form1->Controls[a]->Top=Form1->Shape1->Top+2;
}
}
}
return CallNextHookEx(hMsgHook,nCode,wParam,lParam);
}
//安装钩子
void __fastcall TForm1::FormShow(TObject *Sender)
{
hMsgHook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)GetMsgProc,NULL,GetCurrentThreadId());
}
//卸载钩子
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(hMsgHook!=NULL)
{
UnhookWindowsHookEx(hMsgHook);
}
}
void __fastcall TForm1::FormShow(TObject *Sender)
{
hMsgHook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)GetMsgProc,NULL,GetCurrentThreadId());
}
//卸载钩子
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(hMsgHook!=NULL)
{
UnhookWindowsHookEx(hMsgHook);
}
}
文章评论
[以下网友留言只代表其个人观点,不代表中华网的观点或立场]