Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Tastendruck an ein Programm schicken (https://www.delphipraxis.net/99488-tastendruck-ein-programm-schicken.html)

Auron3 13. Sep 2007 19:14

Re: Tastendruck an ein Programm schicken
 
sry ich verstehe nur bahnhof x_X

also als erstes hohle ich mir das Handel mit

Delphi-Quellcode:
window := FindWindow(NIL,'Notepad');
das klappt auch, aber dann will ich eine nachricht dahin schicken das gerade 'STRG' und 'A' im notepad gedrückt wurde.

das weiß ich nicht wie es geht, und mit den ganzen suchergebnissen kann ich nichts anfangen...

nur das es irgendie mit

Delphi-Quellcode:
SendMessage(window,"ne nachricht, ka welche",NIL,NIL);
geht >_<

Sunlight7 13. Sep 2007 19:32

Re: Tastendruck an ein Programm schicken
 
Delphi-Quellcode:
SendMessage(Handle, WM_SETTEXT, 0, LongInt(PChar('Bla bla bla')));
Das bringt Dir aber noch nix, wenn Du das verwendest mußt Du erst nach dem Handle des Memos im Notepad suchen.

Und window := FindWindow(NIL,'Notepad'); gibt bei mir 0 zurück, Window:=FindWindow(nil, 'Unbenannt - Editor'); findet eher was.

Beispielsweise würde das gehen:
Delphi-Quellcode:
   var Window:THandle;
begin
   Window:=FindWindow(nil, 'Unbenannt - Editor');
   Window:=FindWindowEx(Window, 0, nil, nil);

   SendMessage(Window, WM_SETTEXT, 0, LongInt(PChar('Bla bla bla')));

s-off 13. Sep 2007 19:39

Re: Tastendruck an ein Programm schicken
 
Na siehst DU,

mit ein bissel Eigeninitiative wird einem auch weitergeholfen.

Hier ein kommentiertes Beispiel:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   Handle: HWND; //Unser Fensterhandle
   i: Integer; //Unsere Laufvariable für die For-Schleife

const
   sTEXT: String = 'Eine Nachricht. Keine Ahnung, welche'; //Unser Beispieltext

begin
   Handle := FindWindow('Notepad', nil); //Wir suchen das Handle des Notepads

   if Handle <> 0 then //wenn wir es gefunden haben
      Handle := FindWindowEx(Handle, 0, 'Edit', nil); //dann suchen wir das Handle des Editcontrols innerhalb des Notepads - denn dahin soll der Text gehen

   if Handle <> 0 then //wenn wir es gefunden haben
   for i := 1 to Length(sTEXT) do begin //gehen wir in einer Schleife den zu sendenden Text Zeichen für Zeichen durch und schicken ihn ans Edit-Feld
      SendMessage(Handle, WM_CHAR, Word(sTEXT[i]), 0);
   end;
end;

Auron3 13. Sep 2007 19:50

Re: Tastendruck an ein Programm schicken
 
ihr seit ja alle richtig nett und so und lieb euch ja auch aber was ihr da schreibt bringt mir 0 >_<

das mit dem Notpad war nur nen Beispiel ...

will an ein Prgramm schicken das die tasten STRG und A gedrückt wurden (zuerst STRG dann A, dann wird A losgelassen , dann STRG) so will ich das machen ^^ und keinen text in nen Notepad schreiben

s-off 13. Sep 2007 20:21

Re: Tastendruck an ein Programm schicken
 
Die Beiträge von Sunlight7 und mir waren auch nur Beispiele.
Es gibt noch x andere Wege, die alle zum gleichen Ergebnis führen, und die auch alle mit anderen Fenstern funktionieren.

Ausgangspunkt ist halt immer der, dass Du das Handle des Fensters findest, an welches Du Deine Tasten senden möchtest.

Und das machst Du mit FindWindow bzw. FindWindowEx.

Luckie 13. Sep 2007 20:25

Re: Tastendruck an ein Programm schicken
 
Gibt es dafür einen Menüeintrag? Wenn ja, würde ich an den Menüeintrag eine Button-Click / WM_COMMAND Nachricht schicken: http://www.delphipraxis.net/internal...=147649#147649


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 Uhr.
Seite 2 von 2     12   

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