首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

sendmessage能够模拟出按shift点击某控件(如TButton)吗?解决方法

2012-02-22 
sendmessage能够模拟出按shift点击某控件(如TButton)吗?需要通过sendmessage来模拟点另一窗体(另一进程)需

sendmessage能够模拟出按shift点击某控件(如TButton)吗?
需要通过sendmessage来模拟点另一窗体(另一进程)需要鼠标键盘同时操作,例如按shift多选,已取得操作控件的hwnd

[解决办法]
//参考如下代码
procedure TForm1.Button1Click(Sender: TObject);
var
vKeyState: TKeyboardState;
vShiftState: Byte;
begin
SendMessage(ListBox1.Handle, WM_LBUTTONDOWN, 0, MakeLong(0, 2));
SendMessage(ListBox1.Handle, WM_LBUTTONUP, 0, MakeLong(0, 2));
GetKeyboardState(vKeyState);
vShiftState := vKeyState[VK_SHIFT]; // 记忆
vKeyState[VK_SHIFT] := $80;
SetKeyboardState(vKeyState);
SendMessage(ListBox1.Handle, WM_LBUTTONDOWN, 0, MakeLong(0, 32));
SendMessage(ListBox1.Handle, WM_LBUTTONUP, 0, MakeLong(0, 32));
vKeyState[VK_SHIFT] := vShiftState; // 恢复
SetKeyboardState(vKeyState);
end;

热点排行