Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Tastendruck an bestimmtes Programm senden... (https://www.delphipraxis.net/123010-tastendruck-bestimmtes-programm-senden.html)

bob_aus_der_flasche 25. Okt 2008 21:40


Tastendruck an bestimmtes Programm senden...
 
Hey Leutz.

Habe folgendes Problem, und zwar:
will ich mit einem Timer immer nach einer gewissen zeit ein programm starten,
an welches dann nach 1 sekunde ein tastendruck (in diesem fall 'enter') gesendet wird


habe bis jetzt folgendes:
Delphi-Quellcode:
keybd_event(VK_RETURN, 0, 0, 0); //drücken
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //loslassen
das funktioniert auch soweit, weil sich das programm in den vordergrund setzt, das funzt alles allerdings auch nur, wenn ich kein anderes Fenster in den vordergrund setze nachdem das programm gestartet wurde


allerdings will ich, dass das erwähnte programm auch beendet wird, wenn ich z.B. im Fullscreen etwas zocke
das soll also alles im hintergrund ablaufen


ich wette, dass einer von euch ne möglichkeit kennt sowas hinzubekommen ;)

oldmax 25. Okt 2008 23:38

Re: Tastendruck an bestimmtes Programm senden...
 
Hi
Klar, darauf wette ich auch....
Gruß oldmax

toms 25. Okt 2008 23:41

Re: Tastendruck an bestimmtes Programm senden...
 
Was bewirkt denn das Drücken der Enter-Taste im fremden Programm?

Evtl könntest du mit PostMessage eine Enter Nachricht ans Fenster senden.

bob_aus_der_flasche 26. Okt 2008 03:05

Re: Tastendruck an bestimmtes Programm senden...
 
hab es geschafft

hab diesmal doppelt so lange gegoogelt und n bisl rumprobiert:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var hMainWnd: HWND;
begin
    winexec('C:\DefragMem.exe', SW_MINIMIZE);
    sleep(3000);

    hMainWnd := FindWindow(nil, Pchar('C:\DefragMem.exe'));
    SendMessage(hMainWnd, WM_CHAR, Ord(VK_RETURN), 0);
end;

Zitat:

Zitat von toms
Was bewirkt denn das Drücken der Enter-Taste im fremden Programm?

mit dem "Enter"-Druck wird das programm geschloßen

trotzdem danke für eure mühe :hello: :dance:

SirThornberry 26. Okt 2008 07:59

Re: Tastendruck an bestimmtes Programm senden...
 
Schau dir am besten mal ShellExecute bzw. CreateProcess an. Wenn du einen Blick ins MSDN wirfst zu winexec wirst du einen Hinweis finden das die Funktion veraltet ist. Es kann also passieren das bei einer der nächsten Windowsfunktionen dein Programm nicht mehr funktioniert weil die Funktion weg rationalisiert wurde.

n1ghtSurfer 2. Nov 2008 12:40

Re: Tastendruck an bestimmtes Programm senden...
 
Hättest du auch einfach mit der Unit SndKey32.pas machen können :-D

toms 3. Nov 2008 09:26

Re: Tastendruck an bestimmtes Programm senden...
 
Zitat:

Zitat von n1ghtSurfer
Hättest du auch einfach mit der Unit SndKey32.pas machen können :-D

SendMessage ist in diesem Fall den Vorzug zu geben.

Luckie 3. Nov 2008 09:29

Re: Tastendruck an bestimmtes Programm senden...
 
Und warum schickst du dann nicht einfach die Nachricht WM_CLOSE an das betrffende Fenster?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz