取的控件HANDLE后,就可以了
但是开始时,我用FORM将当前桌面复制并覆盖,这样就取不到控件的HANDLE了
有没有办法解决?
但是开始时,我用FORM将当前桌面复制并覆盖,这样就取不到控件的HANDLE了
有没有办法解决?
解决方案 »
- if GetVolumeInformation('c:', Buffer, SizeOf(Buffer), 请问这优代码的意思是什么
- 如何用opendialog打开带密码的数据库
- 关于连接Access 数据库的问题,高手请进!!!!!
- 我用webbrowser控件的webbrowser1.ExecWB(OLECMDID_FIND,0)告诉我试图调用未注册的丢弃目标,这是怎末回事
- 关于COM+的问题,请各位高手关注!
- 请问delphi可以写COM+组件吗?
- 请教:怎样让自己的程序检查到注册表有发生变化?(就是做个监视记录注册表的改变)
- 如何得知StringGrid行的宽被修改
- 程序在运行时,用什么办法可能用鼠标来改变一个控件(如:panel)的大小及位置???
- 请进!简单到两句话你就把分数捡走!
- 为何delphi的exe programm这么大?
- 请问哪里有中文tts(或例程)可以下载(100分)
你就是想把鼠标放到某个控件上然后一点,就可以把抓下来是吗?
一般的做法,点击抓拍按钮,然后隐藏窗体.通过
getcursorpos得到鼠标的坐标 通过
windowfrompoint 得到当前坐标的控件句柄.
不就行了
当你启动了抓品程序的时候所有的单击,双击事件全部截获
你可以参见我回答的这个贴子,可以截获所有的应用程序的消息.
http://www.csdn.net/expert/topic/1068/1068010.xml?temp=.7460443
//编译,建一个应用程序 用 EnableHotKeyHook, 启动截获
// DisableHotKeyHook; 停止截获
library getkey;
uses
Windows,
Messages,
classes,
stdctrls,
Sysutils;
var
hNextHookProc: HHook;
procSaveExit: Pointer;
hwnd,hwnd2:longint;
info:String;
function MouseHookHandler(iCode: Integer;wParam: WPARAM;lParam: LPARAM): LRESULT; stdcall;
var
obj:Tobject;
hwnd:longint;
mp:Tpoint;
begin
result:=0;
if icode<0 then
begin
result:=callnexthookex(hnexthookproc,icode,wparam,lparam);
exit;
end;
if wparam = WM_LBUTTONUP then begin
//这里写你的抓拍程序
end;
end;
end;function EnableHotKeyHook: BOOL; export;
begin
Result := False;
if hNextHookProc <> 0 then Exit;
hNextHookProc := SetWindowsHookEx(WH_mouse, mouseHookHandler,HInstance, 0);
Result := hNextHookProc <> 0;
end;function DisableHotKeyHook: BOOL; export;
begin
if hNextHookProc <> 0 then
begin
UnhookWindowshookEx(hNextHookProc); // 解除 mouse Hook
hNextHookProc := 0;
end;
Result := hNextHookProc = 0;
end;exports
EnableHotKeyHook,
DisableHotKeyHook;begin
hNextHookProc := 0;
procSaveExit := ExitProc;
end.
我不想做成DLL文件,于是就直接用了!
这句同不过:
hNextHookProc := SetWindowsHookEx(WH_mouse, mouseHookHandler,HInstance, 0);Incompatible types:'Calling conventions differ'
新建一个Dll全部考进去,编译,我这里可以编译
library Project1;
uses
Windows,
Messages,
classes,
stdctrls,
Sysutils;
var
hNextHookProc: HHook;
procSaveExit: Pointer;
hwnd,hwnd2:longint;
info:String;
function MouseHookHandler(iCode: Integer;wParam: WPARAM;lParam: LPARAM): LRESULT; stdcall;
var
obj:Tobject;
hwnd:longint;
mp:Tpoint;
begin
result:=0;
if icode<0 then
begin
result:=callnexthookex(hnexthookproc,icode,wparam,lparam);
exit;
end;
if wparam = WM_LBUTTONUP then begin
//这里写你的抓拍程序
end;
end;function EnableHotKeyHook: BOOL; export;
begin
Result := False;
if hNextHookProc <> 0 then Exit;
hNextHookProc := SetWindowsHookEx(WH_mouse, mouseHookHandler,HInstance, 0);
Result := hNextHookProc <> 0;
end;function DisableHotKeyHook: BOOL; export;
begin
if hNextHookProc <> 0 then
begin
UnhookWindowshookEx(hNextHookProc); // 解除 mouse Hook
hNextHookProc := 0;
end;
Result := hNextHookProc = 0;
end;
end.
单击右键还是有事件发生