如何模拟鼠标的拖拽行为. 我想用鼠标模拟拖拽某一表格的列行为,就是把第一列拖到第五列寻样. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 计算好目标窗口的坐标,然后把该窗口置为前台,再用类似下面这样的代码试试:mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); 楼上的方法偶试过,但一直没有成功.测试情况是wm_lbuttondown, wm_mousemove,wm_lbuttonup消息都捕获了(坐标是没有问题的.)就是没有实现拖动列的效果.偶是在DELPHI下试的. function MouseToScreen(mVertical: Boolean; mMouse: Integer): Integer;begin case mVertical of False: Result := Round(mMouse * (MAXWORD / Screen.Width)); else Result := Round(mMouse * (MAXWORD / Screen.Height)); end;end;procedure TForm1.Button1Click(Sender: TObject);var vPoint: TPoint;begin vPoint := Panel1.ClientToScreen(Point(1, 1)); mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, MouseToScreen(False, vPoint.X), MouseToScreen(True, vPoint.Y), 0, 0); mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, MouseToScreen(False, vPoint.X), MouseToScreen(True, vPoint.Y), 0, 0); Dec(vPoint.X, 200); Dec(vPoint.Y, 200); mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, MouseToScreen(False, vPoint.X), MouseToScreen(True, vPoint.Y), 0, 0); mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, MouseToScreen(False, vPoint.X), MouseToScreen(True, vPoint.Y), 0, 0);end;procedure TForm1.FormCreate(Sender: TObject);begin Panel1.DragKind := dkDock; Panel1.DragMode := dmAutomatic;end; TO 楼上:非常感谢!可是对TStringGrid列的拖动还是不行. 请教1个关于delphi的类的问题。 delphi 控件包的问题? 高分求助一个有关treeview数据库的sql语句?分不够,可加!再送你100分也可。 谁有dxgrid系列控件包,请发我一份,在线等! 简单问题:应用query控件时,如何在用SQL语句实现模糊查询? 怎样判断ServerSocket有连接? 把网络打印机上的打印内容备份 BPL文件中的Form窗口在使用ADOQuery控件报错 请教数据库问题,急!急! 有关data module 这段操作内存的代码,为何出错? 请问怎么获得当前连接到网上邻居的用户名啊?怎样完全断开所有网上邻居的连接?
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
测试情况是wm_lbuttondown, wm_mousemove,wm_lbuttonup消息都捕获了
(坐标是没有问题的.)
就是没有实现拖动列的效果.
偶是在DELPHI下试的.
begin
case mVertical of
False: Result := Round(mMouse * (MAXWORD / Screen.Width));
else Result := Round(mMouse * (MAXWORD / Screen.Height));
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
vPoint: TPoint;
begin
vPoint := Panel1.ClientToScreen(Point(1, 1));
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE,
MouseToScreen(False, vPoint.X), MouseToScreen(True, vPoint.Y), 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN,
MouseToScreen(False, vPoint.X), MouseToScreen(True, vPoint.Y), 0, 0);
Dec(vPoint.X, 200);
Dec(vPoint.Y, 200);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE,
MouseToScreen(False, vPoint.X), MouseToScreen(True, vPoint.Y), 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP,
MouseToScreen(False, vPoint.X), MouseToScreen(True, vPoint.Y), 0, 0);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1.DragKind := dkDock;
Panel1.DragMode := dmAutomatic;
end;
非常感谢!
可是对TStringGrid列的拖动还是不行.