在Delphi中怎样抓取鼠标形状?(200分)

  • 主题发起人 主题发起人 lodgue
  • 开始时间 开始时间
抓取还是设置?
events中。
 
简单的不能再简单了:
var ico:Ticon;
begin
ico:=ticon.Create;
ico.Handle:=getcursor;
canvas.Draw(0,0,ico);
ico.free;
end;

 
呵呵,可能不是这个意思。
 
支持cakk的意思
 
哈哈..的確很簡單
 
是cakk那样的意思,不过只能正确地抓取抓屏程序窗口的鼠标形状,当抓屏程序在后
台或鼠标移到抓屏窗口外时,抓取的总是crDefault(向左的箭头)的形状。
 
cakk,帮我一把吧!我给你下跪了。
 
快快请起,真是折煞老夫啊!

是这样的,我们只能怪borland的API帮助对getcursor没有说明清楚,
如果你要得到其他程序/线程的cursor,必须要先把它的输入处理(input process)
挂接到自己的线程里面,代码改动如下:

//在timer事件里不断显示当前cursor
procedure TForm1.Timer1Timer(Sender: TObject);
var ico:Ticon;
hld:hwnd;
threadld:dword;
mp:tpoint;
begin
getcursorpos(mp);
canvas.FillRect(rect(0,0,32,32));
hld:=Windowfrompoint(mp);
threadld:=GetWindowThreadProcessId(hld,nil);
AttachThreadInput(GetCurrentThreadId,threadld,true);
ico:=ticon.Create;
ico.Handle:=getcursor;
AttachThreadInput(GetCurrentThreadId,threadld,false);
canvas.Draw(0,0,ico);
ico.free;
end;
 
cAkk:待我试试,通过了给你180分。
 
为什么是180分? 有什么不满意吗?
 
不敢不满意,只是各位眼下馋得流口水!
 
多人接受答案了。
 
后退
顶部