如何捕获鼠标?(100分)

  • 主题发起人 主题发起人 steven.xu
  • 开始时间 开始时间
S

steven.xu

Unregistered / Unconfirmed
GUEST, unregistred user!
我在作一个屏幕传输的东东,能够捕获到网络上其他机器的屏幕时室传输到本机上,但不
知道如何捕获鼠标,哪位大虾能指点一下迷津。(带源码者重谢!)
 
去看一下VNC的源码吧,不过是VC的
 
我有啊
你怎么不早说呢?
 
MyStream: TMemorystream;{内存流对象}
implementation
{$R *.DFM}
procedure TForm1.Cjt_GetScreen(var Mybmp: TBitmap; DrawCur: Boolean);
var
Cursorx, Cursory: integer;
dc: hdc;
Mycan: Tcanvas;
R: TRect;
DrawPos: TPoint;
MyCursor: TIcon;
hld: hwnd;
Threadld: dword;
mp: tpoint;
pIconInfo: TIconInfo;
begin
Mybmp := Tbitmap.Create; {建立BMPMAP }
Mycan := TCanvas.Create; {屏幕截取}
dc := GetWindowDC(0);
try
Mycan.Handle := dc;
R := Rect(0, 0, screen.Width, screen.Height);
Mybmp.Width := R.Right;
Mybmp.Height := R.Bottom;
Mybmp.Canvas.CopyRect(R, Mycan, R);
finally
releaseDC(0, DC);
end;
Mycan.Handle := 0;
Mycan.Free;
if DrawCur then {画上鼠标图象}
begin
GetCursorPos(DrawPos);
MyCursor := TIcon.Create;
getcursorpos(mp);
hld := WindowFromPoint(mp);
Threadld := GetWindowThreadProcessId(hld, nil);
AttachThreadInput(GetCurrentThreadId, Threadld, True);
MyCursor.Handle := Getcursor();
AttachThreadInput(GetCurrentThreadId, threadld, False);
GetIconInfo(Mycursor.Handle, pIconInfo);
cursorx := DrawPos.x - round(pIconInfo.xHotspot);
cursory := DrawPos.y - round(pIconInfo.yHotspot);
Mybmp.Canvas.Draw(cursorx, cursory, MyCursor); {画上鼠标}
Mycursor.ReleaseHandle; {释放数组内存}
MyCursor.Free; {释放鼠标指针}
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Port := 3000; {端口}
ServerSocket1.Open; {Socket开始侦听}
 
to 经韬
感谢您的无私,我到过你的主页(www.lovejingtao.126.com),并把它收藏,从上面我得到了
知识,更得到了自信。以后多联系。
cmlnet@371.net
 
老兄,写错啦,是http://lovejingtao.126.com,偶可没有钱买国际域名哦:)
助人为快乐之本嘛,而且那个站点我都不想去更新了。:)
相信你以后也会多帮助人的:)
 
我有一个现成得要吗?我给你!
 
接受答案了.
 
[red]小弟由于转分作弊,欺骗了各位,请多多原谅。我已在大富翁做了公开道歉。
以后决不再犯,请多多指教!!![/red]
 

Similar threads

后退
顶部