Prohledával jsem internet (včetně tohohle fóra) a stejně jsem nedokázal vyřešit jednu otázku. Potřebuju udělat program, který po stisknutí nějaké klávesy (nezáleží) zaznamená hodnotu aktuální pozice kurzoru. Zjištění a zaznamenání je v pohodě, nevím ale, jak program udělat tak, aby detekoval stisk klávesy neustále (zřejmě pomocí timeru) a to i (vlastně hlavně) mimo formulář a to i když je okno z formulářem neaktivní. Pro vysvětlení, chci udělat makro na klikání myší, kde nejdříve kliknu na tlačítko "Nahrávat", pojedu kurzorem po obrazovce a pokaždé, když kliknu na klávesu uloží se aktuální pozice. Pak nahrávání ukončím a spustím, program postupně (opět, dokud nebude stisknuto některé tlačítko) bude jezdit po zadaných pozicích a klikat na ně. Mimochodem, prosil bych problém vyřešit bez přídavných modulů (či kýho šlaka se ty přídavny VLC prvky jmenujou), neb používám Turbo Delphi Explorer.
Fórum › Delphi
Zjištění stisknutí klávesy
To Garret Raziel :
Ahoj.
je to jednoduché - nejdřív musíš zaregistrovat klávesu a pak zapsat akci po zmáčknutí :
registrace klávesy :
If not RegisterHotkey (Handle, 1, 2, 67) Then ShowMessage('nejde registrovat hot key !!') ;
- místo čísel doplň 1,2,67 doplň čísla klávesy (to 67 by měla být klávesa "c" a ta dvojka znamená v režimu "ctrl" - to znamená, při stisknutí ctrl+c se aktivuje funkce a ta jednička znamená číslo zaregistrované klávesy (číslo každé registrované klávesy musí být jiné) a to číslo použiješ i při odregistrování a to "Handle" znamená pro jakou aplikaci ta klávesa bude registrovaná (v tomto případě bude registrovaná pro tuto aplikaci))
odregistrování klávesy :
UnRegisterHotkey( Handle, 1 ) ;
Takže kompletní kod bude vypadat zhruba takhle:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
Procedure WMHotkey( Var msg: TWMHotkey );message WM_HOTKEY;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
If not RegisterHotkey (Handle, 1, 2, 67) Then ShowMessage('nejde registrovat hot key !!') ;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotkey( Handle, 1 ) ;
end;
procedure TForm1.WMHotkey(var msg: TWMHotkey);
begin
If msg.hotkey = 1 Then Begin
If IsIconic( Application.Handle ) Then
Application.Restore;
FormStyle := fsStayOnTop;
FormStyle := fsNormal;
BringToFront;
ShowMessage('zmackl si ctrl+c');
End;
end;
end.
Snad ti to půjde :-).
S pozdravem Paulí.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Event - počítat pouze celé stisknutí klávesy — založil General
Zjištění zmáčknutí klávesy — založil Mike
Zjisteni stisknute klavesy — založil hal8
Zjištění číselného kódu stisknuté klávesy — založil MareX