лучше ловушки, так как все что делается касаемо какой то определенной формы, ограничивается только лишь этой формой. возьми любую кейлоггерную функцию по отлову нажатия определенных клавишь, пропиши туда F5 и если она отлавливается то выполняй cmd.
я конечно понимаю что тебе сейчас из вышесказанного ничего наверника не понятно, в общем вот, держи готовый код:
type TForm1 = class(TForm) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); function VentanaActiva:string; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; strVentanaActiva: String;
implementation
{$R *.dfm}
function TForm1.VentanaActiva: string; var Handle:THandle; Len:LongInt; Title:string; begin Handle:=GetForegroundWindow; Len:=GetWindowTextLength(Handle) + 1; SetLength(Title,Len); GetWindowText(Handle,PChar(Title),Len); Result:=TrimRight(Title); end;
procedure TForm1.Timer1Timer(Sender: TObject); begin if getasynckeystate($74)<>0 then begin if VentanaActiva()<>strVentanaActiva then begin strVentanaActiva:=VentanaActiva(); WinExec(PAnsiChar('cmd.exe'), SW_SHOWNORMAL); end; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin strVentanaActiva:=''; end;
подстроишь под себя, как тебе будет удобней.
!!!ОБЯЗАТЕЛЬНО измени время таймера, я думаю 100 или 50 вполне подойдет для работы.
естественно у этого примера есть много недостатков, например, командная строка запускается из того пути где ты будешь запускать саму программу, но все это легко исправляется.
Сообщение отредактировал xXxSh@dowxXx - Пятница, 03.01.2014, 19:29