I'd like to control an external application from my Lazarus code. I wrote a test applet which controls notepad. Following instructions found online, I added package LazMouseAndKeyboardInput to my project and unit MouseAndKeyInput to my uses clause.
This code - to my surprise - does not work: the notepad window is shown, but no text is written into it: procedure TForm1.btNotepadClick(Sender: TObject); var app: HWND; begin WinExec('notepad.exe', SW_NORMAL); app := FindWindow(nil,'senza nome - blocco note di windows'); if app = 0 then exit; sleep(100); ShowWindow(app, SW_SHOW); KeyInput.Press('some text'); end; I found an alternate code online but it works too much :) I end with multiple (usually 3) windows of notepad open, where an invisible hand has written 'some text' into each of them. procedure SendKeys(Buffer:String); var I: Integer; W: Word; begin For I := 1 to Length(Buffer) do begin W := VkKeyScan(Buffer[i]); keybd_event(w,0,0,0); keybd_event(w,0,KEYEVENTF_KEYUP,0); end; end; procedure TForm1.btNotepadClick(Sender: TObject); var app: HWND; begin WinExec('notepad.exe', SW_NORMAL); app := FindWindow(nil,'senza nome - blocco note di windows'); if app = 0 then exit; sleep(100); ShowWindow(app, SW_SHOW); sleep(100); SendKeys('some text'); end; Has somebody a fix for my code? Probably it is not important, but when I compile my applet, I get the following warnings: Messages, Hints: 12 Note: Duplicate unit "winmouseinput" in "p201827", orphaned ppu "C:\lazarus_projects\automation\lib\i386-win32\winmouseinput.ppu" Note: Duplicate unit "winmouseinput" in "LazMouseAndKeyInput 0.9", ppu="C:\lazarus\components\mouseandkeyinput\lib\i386-win32\win32\winmouseinput.ppu", source="C:\lazarus\components\mouseandkeyinput\winmouseinput.pas" Note: Duplicate unit "winkeyinput" in "p201827", orphaned ppu "C:\lazarus_projects\automation\lib\i386-win32\winkeyinput.ppu" Note: Duplicate unit "winkeyinput" in "LazMouseAndKeyInput 0.9", ppu="C:\lazarus\components\mouseandkeyinput\lib\i386-win32\win32\winkeyinput.ppu", source="C:\lazarus\components\mouseandkeyinput\winkeyinput.pas" Note: Duplicate unit "mouseinputintf" in "p201827", orphaned ppu "C:\lazarus_projects\automation\lib\i386-win32\mouseinputintf.ppu" Note: Duplicate unit "mouseinputintf" in "LazMouseAndKeyInput 0.9", ppu="C:\lazarus\components\mouseandkeyinput\lib\i386-win32\win32\mouseinputintf.ppu", source="C:\lazarus\components\mouseandkeyinput\mouseinputintf.pas" Note: Duplicate unit "mouseandkeyinput" in "p201827", orphaned ppu "C:\lazarus_projects\automation\lib\i386-win32\mouseandkeyinput.ppu" Note: Duplicate unit "mouseandkeyinput" in "LazMouseAndKeyInput 0.9", ppu="C:\lazarus\components\mouseandkeyinput\lib\i386-win32\win32\mouseandkeyinput.ppu", source="C:\lazarus\components\mouseandkeyinput\mouseandkeyinput.pas" Note: Duplicate unit "lazmouseandkeyinput" in "p201827", orphaned ppu "C:\lazarus_projects\automation\lib\i386-win32\lazmouseandkeyinput.ppu" Note: Duplicate unit "lazmouseandkeyinput" in "LazMouseAndKeyInput 0.9", ppu="C:\lazarus\components\mouseandkeyinput\lib\i386-win32\win32\lazmouseandkeyinput.ppu", source="C:\lazarus\components\mouseandkeyinput\lazmouseandkeyinput.pas" Note: Duplicate unit "keyinputintf" in "p201827", orphaned ppu "C:\lazarus_projects\automation\lib\i386-win32\keyinputintf.ppu" Note: Duplicate unit "keyinputintf" in "LazMouseAndKeyInput 0.9", ppu="C:\lazarus\components\mouseandkeyinput\lib\i386-win32\win32\keyinputintf.ppu", source="C:\lazarus\components\mouseandkeyinput\keyinputintf.pas" Why? Thank you Peppe
-- _______________________________________________ lazarus mailing list lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus