procedure TForm1.Button2Click(Sender: TObject);
var
handle1:HWND;
winrect:Trect;
NPoint:TPoint;
begin
edit1.SelectAll;
Clipboard.SetTextBuf(pchar(edit1.Text));// 剪切话语内容至剪切板
handle1:= FindWindow(nil,'MU'); //查找MU窗口句柄
if handle1=0 then
begin
showmessage('MU未启动,请重试。');
exit;
end;
GetWindowRect(Handle1, WinRect); //获得窗口范围
GetcursorPos(NPoint); //获得当前窗口坐标
SetForegroundWindow(handle1); //MU窗口前置,以防被遮挡
SetCursorPos(winrect.Left+50,winrect.Top+50); //鼠标指针置于MU画面上
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0) ;
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0) ; //模拟在MU画面点击,以获得焦点
keybd_event(13,0,0,0);
keybd_event(13,0,KEYEVENTF_KEYUP,0); //回车
keybd_event(VK_CONTROL,0,0,0);
keybd_event(86,0,0,0);
keybd_event(86,0,KEYEVENTF_KEYUP,0); //粘贴
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
keybd_event(13,0,0,0);
keybd_event(13,0,KEYEVENTF_KEYUP,0); //回车
SetCursorPos(Npoint.X,Npoint.y-23);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0) ;
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0) ;
SetCursorPos(Npoint.X,Npoint.y); //鼠标归位
end;
postmessage就可以了阿,这个是模拟向foobar2000按键(foobar2000在后台运行)
procedure TForm1.ONHotkey(var message:Tmessage);
begin
wnd:=findwindow('{DA7CD0DE-1602-45e6-89A1-C2CA151E008E}',nil);
if (message.WParam=WM_SNAPHOTKEY) then
postmessage(wnd,WM_keydown,ord('X'),0);
if (message.WParam=WM_SNAPHOTKEY1) then
postmessage(wnd,WM_keydown,109,0);
if (message.WParam=WM_SNAPHOTKEY2) then
postmessage(wnd,WM_keydown,107,0);
if (message.WParam=WM_SNAPHOTKEY3) then
postmessage(wnd,WM_keydown,ord('V'),0); //home
if (message.WParam=WM_SNAPHOTKEY4) then
postmessage(wnd,WM_keydown,ord('B'),0);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
RegisterHotKey(Handle,WM_SNAPHOTKEY1,0,36 );
RegisterHotKey(Handle,WM_SNAPHOTKEY2,0,35 );
RegisterHotKey(Handle,WM_SNAPHOTKEY,0,VK_f10 );
RegisterHotKey(Handle,WM_SNAPHOTKEY3,0,VK_f7 );
RegisterHotKey(Handle,WM_SNAPHOTKEY4,0,VK_f8 );
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(Handle,WM_SNAPHOTKEY);
UnregisterHotKey(Handle,WM_SNAPHOTKEY1);
UnregisterHotKey(Handle,WM_SNAPHOTKEY2);
UnregisterHotKey(Handle,WM_SNAPHOTKEY3);
UnregisterHotKey(Handle,WM_SNAPHOTKEY4);
end;