因特殊需要,不想用getpos和setpos使鼠标移到某处进行点击后再将其返回,想用其它方法,哪们能帮助?谢谢
解决方案 »
- DLL 窗体融合问题,闹心啊
- 为什么设置了StringGrid的背景色后,内容就看不见了
- 两个程序间的互动
- 数据库并发访问的问题
- 怎么用数组做函数的参数??
- 初学Delphi,请问怎么做一个简单的报表呢?
- 自己做过私活的朋友进来看一下!!!!!!!!!!!!!!!!!!1111
- 请高手帮忙,非常急
- 我是初学者,请问一个关于多窗体得问题,希望答复,很着急,也一定不麻烦,,求求大家了帮帮我!
- 请问个位大虾怎样在delphi里使用vb的activex控件,比如datagrid
- 5000人民币招程序员,送:传奇木马原代码
- *********************火急求救*********************
sendmessage(hbutton,BM_CLICK,0,0);
你想单击哪个控件,只要知道它的句柄,向它发送单击消息就行了.
不过参数是相对值,要用EnumDisplaySettings的结果计算的例如点击RX,RY
EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
P.X := Trunc(RX/DeviceMode.dmPelsWidth*65535);
P.Y := Trunc(RY/DeviceMode.dmPelsHeight*65535);
Sleep(100);
GetCursorPos(R);
R.X := Trunc(R.X/DeviceMode.dmPelsWidth*65535);
R.Y := Trunc(R.Y/DeviceMode.dmPelsHeight*65535);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE or MOUSEEVENTF_LEFTDOWN, P.X, P.Y, 0, 0);
Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
// restore
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, R.X, R.Y, 0, 0);
BOOL GetCursorPos( LPPOINT lpPoint // address of structure for cursor position
);
2、我们把鼠标的位置移到要到人物走到的地方,我们就要用到SetCursorPos函数来移动鼠标位置,它的使用方法如下:
BOOL SetCursorPos( int X, // horizontal position
int Y // vertical position
);
3、模拟鼠标发出按下和放开的动作,我们要用到mouse_event函数来实现,具休使用方法用下:
VOID mouse_event( DWORD dwFlags, // flags specifying various motion/click variants
DWORD dx, // horizontal mouse position or position change
DWORD dy, // vertical mouse position or position change
DWORD dwData, // amount of wheel movement
DWORD dwExtraInfo // 32 bits of application-defined information
);
在它的dwFlags处,可用的事件很多如移动MOUSEEVENTF_MOVE,左键按下MOUSEEVENTF_LEFTDOWN,左键放开MOUSEEVENTF_LEFTUP,具体的东东还是查一下MSDN吧~~~~~
好了,有了以前的知识,我们就可以来看看人物移走是怎么实现的了: getcursorpos(point);
setcursorpos(ranpoint(80,windowX),ranpoint(80,windowY));//ranpoint是个自制的随机坐标函数
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
setcursorpos(point.x,point.y);
若hwindow为窗口化的游戏窗口的句柄,当你把鼠标移出游戏窗口后,你会看到游戏窗口中的鼠标在移动,在点击,但对前台的鼠标是没有影响的!
让鼠标到游戏窗口中的(618,300)点处进行左键单击操作
Postmessage(hwindow,WM_MOUSEMOVE,0,MakeLong(618,300));
sleep(200);
PostMessage(hwindow,WM_LBUTTONDOWN,0,0);
sleep(200);
PostMessage(hwindow,WM_LBUTTONUP,0,0);