Послать нажатие клавиш
Автор: Xavier Pacheco
Code: |
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 ~developers ~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 Developers 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. |
Новые статьи
- Как сделать клавишу-акселератор (keyboard shortcut) компонету, у которого нет заголовка
- Как определить нажаты ли клавиши Shift, Alt или Ctrl
- Как выполнять другую команду по нажатию на кнопку, если зажата клавиша Shift
- Какая клавиша нажата при загрузке приложения
- Работа с цифровой клавиатурой при выключенном NumLock
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!