Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tasten senden problem (https://www.delphipraxis.net/48257-tasten-senden-problem.html)

Assun 23. Jun 2005 14:37

Re: Tasten senden problem
 
ich hab doch weiter oben nen screenshot mit der exception angehängt.

alzaimar 23. Jun 2005 18:55

Re: Tasten senden problem
 
super, da steht, das dein Programm ne Macke hat. Und? WO?
In welcher Zeile?
Bei welchem Statement?

:spin: Los! Verrate es uns! Sofort! :roteyes:

Assun 23. Jun 2005 19:25

Re: Tasten senden problem
 
hab euch doch nen Bild mit dem error + Zeile im Anhang !!

Assun 24. Jun 2005 08:39

Re: Tasten senden problem
 
Da einige den Screenshot zu übersehen scheinen schreib ich es euch nochmals auf:

Zitat:

Im Projekt Projekt1.exe ist eine Exception der Klasse EExternal Exception mit der Meldung 'Externe Exception C0000008' aufgetreten.
und die Zeile in der ich SendKey anwende, also in der ich schluss endlich Keys sende is markiert.

ich brauch eure hilfe wirklich ;-)

turboPASCAL 24. Jun 2005 09:13

Re: Tasten senden problem
 
:gruebel:
Delphi-Quellcode:
FindWindow(nil,'GTA: San Andreas');
Muss das nicht so heissen ?
Delphi-Quellcode:
FindWindow('GTA: San Andreas', nil);

alzaimar 24. Jun 2005 09:15

Re: Tasten senden problem
 
Ich habe einen schwarzen Block genau da, wo die Zeilen sind...
Versuche es mit Fehlereingrenzung:
1. Schicke die Zeichen an ein anderes Programm, z.B. ein eigenes (1x Form, 1xEditfeld, fokusiert)
2. Schicke nur ein Zeichen.
3. Stimmt das Handle?
...
Danach sehen wir weiter.

@turboPascal: Du scheinst (3) schon beantwortet zu haben :zwinker:

Assun 24. Jun 2005 09:28

Re: Tasten senden problem
 
so. habe meinen Code mal etwas umgeschrieben.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hOE: hWnd;
  s : string;
  i : integer;
begin
   hOE:=FindWindow(nil,'Unbenannt - Editor');//Finde das Fenster mit Notepad
   if hOE = 0 then ShowMessage('Nix gefunden');
   s := 'test';
   for i := 1 to Length(s) do
SendMessage(hOE, WM_CHAR, Word(s[i]), 0); //send Keys
end;
keine Fehler, keine abgesstürtzen progs mehr. aber funtkionieren tuts au net :-(

turboPASCAL 24. Jun 2005 10:47

Re: Tasten senden problem
 
Ein Beispiel um Text ins Notepat einzufügen über SendMessage, FindWindow, FindWindowEx

Delphi-Quellcode:
procedure TForm1.ButtonXClick...
const
  mystring: string =
    'DerSuperduperBlaBlaTextStringdenmaneinfuegenwill oder so :-)';
var
  wh: HWND;
  i: Integer;
begin
  wh := FindWindow('Notepad', nil); //Notepad window finden
  if wh <> 0 then
  begin
    wh := FindWindowEx(wh, 0, 'Edit', nil); // das edit feld im Notepad
    for i := 1 to length(mystring) do
    begin
      // Word() oder Ord() - Hauptsache aus z.B. 'A' wird 65 :-)
      SendMessage(wh, WM_CHAR, Word(mystring[i]), 0);
    end;
  end else
    ShowMessage('Sorry, Window not found, start the Notepad pleace ?');
end;
also sollte es auch so eine Reihe von Chars an dein Prg. senden
(wenn das Windowhandle bzw. Fenster/Programmname stimmt):

Delphi-Quellcode:
procedure ...
const
  mystring: string = 'DerSuperduperBlaBlaCheat';
var
  wh: HWND;
  i: Integer;
begin
  wh := FindWindow('GTA: ...', nil); // Window finden
  Windows.SetFocus(wh); // Focus auf das empfangende Prg. damit es auch Keys verarbeitet ?
  if wh <> 0 then
  begin
    for i := 1 to length(mystring) do
    begin
      // Word() oder Ord() - Hauptsache aus z.B. 'A' wird 65 :-)
      SendMessage(wh, WM_CHAR, Word(mystring[i]), 0);
    end;
    Windows.SetFocus(Handle); // Focus auf dein Prg.
  end else
    ShowMessage('Sorry, Window not found, start the Notepad pleace ?');
end;

Assun 24. Jun 2005 10:55

Re: Tasten senden problem
 
Ersterer Code funktioniert. letzerer aber nicht !

genau das ist mein Problem, denn ich habe bei GTA ja kein Editfeld ^^

turboPASCAL 24. Jun 2005 11:09

Re: Tasten senden problem
 
:gruebel: Wenn das Windowshandle/Fenstername stimmt?

Du solltest es einmal so Versuchen:

Delphi-Quellcode:
// an Stelle von
SendMessage(wh, WM_CHAR, Word(mystring[i]), 0);

//das:
SendMessage(wh, WM_KEYDOWN, Word(mystring[i]), 0);
SendMessage(wh, WM_KEYUP, Word(mystring[i]), 0);
also einen "echten" Testendruck simulieren (k.A. wie GTA die Tasten Events ausliest).


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr.
Seite 2 von 3     12 3      

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