Erstmal vielen Dank für die zwei konstruktiven schnellen Antworten.
Also ich habe das Programm mal benutzt und den Quelltext in mein Programm eingefügt. Die beiden dafür wichtigen Prozeduren mal hier aufgelistet:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure SendTextMsg(Handle: THandle; Text: String); var dwChars : DWORD; pBuffer : Pointer; begin pBuffer := PChar(text); WriteFile(Handle, pBuffer^, Length(text), dwChars, nil); pBuffer := PChar(#13#10); WriteFile(Handle, pBuffer^, 2, dwChars, nil); end;
procedure rcon_refresh; var wnd: HWND; begin wnd := FindWindow('ConsoleWindowClass', PChar(serverexe));
if wnd <> 0 then begin SendTextMsg(wnd,'sv_say test'); ShowMessage('Ok ^^ + '+inttostr(wnd)); end; end; |
Das PChar(serverexe) entsteht durch das auswählen einer EXE mit dem OpenDialog.
Als Ausgabewert der ShowMessage() bekomme ich dann ein "OK ^^ + 1945762" zum Beispiel.
Wenn ich aber das Serverfenster anschaue, wird nicht "sv_say test" hinzugefügt.
Ich vermute, dass meine SendTextMsg Prozedur nicht mit dem HWND arbeitet(es ist ja dort ein Handle, oder dass der Dedicated Server wirklich soetwas nicht unterstützt.
Habe ich einen Fehler im Ansatz gemacht?
Also ich kann mit meiner Tastatur in das Programm manuell Befehle eingeben, will das aber automatisieren. Ich habe schon überlegt Tastendrücke zu simulieren und das Fenster zuerst nach vorne zu holen, aber ich denke, dass ist nicht der geschickteste Ausweg für dieses Problem...
Gruß
Marcel