我是设置定时器为100ms,而一般双击时间大于100ms,所以系统将双击认为是两个单击事件了,怎么解决呢?
我主要是抓图时需要抓鼠标,如果能达到这个效果就行了,不一定非要下述方法。有一种直接读显存的方法,不知怎么用?读显存应该可以连鼠标一起读出来。
...
Windowhld:=Windowfrompoint(CurPoint);
Threadld:=GetWindowThreadProcessId(Windowhld,nil);
AttachThreadInput(GetCurrentThreadId,threadld,true);
GlobalCur := getcursor;
AttachThreadInput(GetCurrentThreadId,threadld,false);
GetIconInfo(GlobalCur, IconInfo);
DrawIcon(ScreenShoot1.Canvas.handle,CursorX-IconInfo.xHotspot,CursorY-IconInfo.yHotspot,GlobalCur);
...
我主要是抓图时需要抓鼠标,如果能达到这个效果就行了,不一定非要下述方法。有一种直接读显存的方法,不知怎么用?读显存应该可以连鼠标一起读出来。
...
Windowhld:=Windowfrompoint(CurPoint);
Threadld:=GetWindowThreadProcessId(Windowhld,nil);
AttachThreadInput(GetCurrentThreadId,threadld,true);
GlobalCur := getcursor;
AttachThreadInput(GetCurrentThreadId,threadld,false);
GetIconInfo(GlobalCur, IconInfo);
DrawIcon(ScreenShoot1.Canvas.handle,CursorX-IconInfo.xHotspot,CursorY-IconInfo.yHotspot,GlobalCur);
...
...
AttachThreadInput(GetCurrentThreadId,threadld,false);
以上两句话导致双击无效(我使用的timer为100ms调用一次上面的语句)
需要这样解决:
首先判断鼠标所在的窗体是否变化,若没有变化,则不要调用以上语句。这样就解决了