Послать нажатие клавишDelphi , ОС и Железо , КлавишиПослать нажатие клавишАвтор: Xavier Pacheco unit Main; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; MainMenu1: TMainMenu; File1: TMenuItem; Open1: TMenuItem; Exit1: TMenuItem; Button4: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Open1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} uses SendKey, KeyDefs; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.SetFocus; // focus Edit1 SendKeys('^{DELETE}I love...'); // send keys to Edit1 WaitForHook; // let keys playback Perform(WM_NEXTDLGCTL, 0, 0); // move to Edit2 SendKeys('~delphi ~developer''s ~guide!'); // send keys to Edit2 end; procedure TForm1.Button2Click(Sender: TObject); var H: hWnd; PI: TProcessInformation; SI: TStartupInfo; begin FillChar(SI, SizeOf(SI), 0); SI.cb := SizeOf(SI); { Invoke notepad } if CreateProcess(nil, 'notepad', nil, nil, False, 0, nil, nil, SI, PI) then begin { wait until notepad is ready to receive keystrokes } WaitForInputIdle(PI.hProcess, INFINITE); { find new notepad window } H := FindWindow('Notepad', 'Untitled - Notepad'); if SetForegroundWindow(H) then // bring it to front SendKeys('Hello from the Delphi Developer''s Guide SendKeys ' + 'example!{ENTER}'); // send keys! end else MessageDlg(Format('Failed to invoke Notepad. Error code %d', [GetLastError]), mtError, [mbOk], 0); end; procedure TForm1.Open1Click(Sender: TObject); begin ShowMessage('Open'); end; procedure TForm1.Exit1Click(Sender: TObject); begin Close; end; procedure TForm1.Button4Click(Sender: TObject); begin WaitForInputIdle(GetCurrentProcess, INFINITE); SendKeys('@fx'); end; procedure TForm1.FormDestroy(Sender: TObject); begin WaitForHook; end; procedure TForm1.Button3Click(Sender: TObject); begin WaitForInputIdle(GetCurrentProcess, INFINITE); SendKeys('@fo'); end; end.Скачать пример Программа на Delphi, которая демонстрирует использование компонента Вот что каждый процедура делает:
Программа также использует различные функции Windows API:
Программа использует модуль В целом, эта программа демонстрирует, как использовать компонент Delphi Описание статьи - это описание использования компонента SendKey в Delphi для отправки нажатий клавиш в различные приложения, включая неepad. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |