AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Externes Programm sofort beenden (ein Spiel!)
Thema durchsuchen
Ansicht
Themen-Optionen

Externes Programm sofort beenden (ein Spiel!)

Ein Thema von Lefko · begonnen am 20. Nov 2003 · letzter Beitrag vom 24. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#1

Externes Programm sofort beenden (ein Spiel!)

  Alt 20. Nov 2003, 17:12
Hallo Freunde ,

ich will ein Spiel gleich wieder schließen, wenn es gestartet wurde. Welchen Befehl sollte ich da am Besten verwenden? also das is sowas wie Gothic oder so ein Grafik-Spiel eben. Hat das auch einfach nur ein Handle?
ich würd da jetzt über findWindowByExename (gibts hier doch irgendwo) und dann SendMessage(...,wm_quit,...) oder so rangehen, right?

Würde mich über ein paar Tipps freuen


MfG Lefko.
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#2

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 20. Nov 2003, 17:37
Das soll sich also selbst beenden, ja?
Dann würde ein einfaches Application.terminate reichen.
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 20. Nov 2003, 17:42
Zitat von Thunderchild:
Das soll sich also selbst beenden, ja?
Dann würde ein einfaches Application.terminate reichen.
Haste den Titel des Threads nich gelesen? ich will ein externes Spiel beenden!

ein timer soll prüfen, ob das spiel (z.b. Gothic oder CS oder so) gestartet wurde und das dann wieder beenden!

MfG Lefko.
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 21. Nov 2003, 13:59
Mensch Leude, kann das sein, dass keiner weiss, wie man ein Spiel beenden kann?
Wenigstens Tipps wären was feines!
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#5

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 21. Nov 2003, 14:12
Schreibst du das Spiel selber oder ist es ein fremdes Programm, das du schließen willst?
  Mit Zitat antworten Zitat
Benutzerbild von CrashMan
CrashMan

Registriert seit: 1. Aug 2003
Ort: //127.0.0.1/
65 Beiträge
 
Delphi 6 Personal
 
#6

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 21. Nov 2003, 14:14
Ich kann dir höchstens ne Routine geben, womit du die laufenden Prozesse siehst und somit siehst, ob das spiel gestartet ist.


Wennman das Spiel nicht starten soll dann schreib doch ein Programm, welches das erste Byte einer Datei in ein X ändert. ... das 1. Byte ist immer ein M (bei *.exe) ... sobald es was anderes ist, tut die nicht mehr.

Soll die wieder tun, machst dus Rückgängig...wenn du willst such ich die Mini-Routine dafür ... ^^

CrashMan
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#7

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 21. Nov 2003, 14:27
Bidäschön:

Delphi-Quellcode:
var
  run:boolean;
  Speed:integer;
  Programm:string;

procedure SetRun(Value:boolean;Rate:integer;ProgrammName:string);
var
  ThreadHandle: THandle;
  ThreadID: DWORD;

  procedure killProgramm;
  begin
  while Run do
    begin
    sleep(Speed);
    if FindWindow(NIL,PChar(Programm))<>0 then PostMessage(FindWindow(NIL,PChar(Programm)), wm_close, 1, 1);
    end;
  end;

begin
Speed:=Rate;
Programm:=ProgrammName;
if Run=Value then exit;
Run:=Value;
if Value then
  begin
  sleep(1);
  ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@killProgramm),@ProgrammName, 0, ThreadID);
  if ThreadHandle<>0 then CloseHandle(ThreadHandle);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetRun(true,1,'Outlook Express');
end;
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 21. Nov 2003, 14:29
Zitat von CrashMan:
Ich kann dir höchstens ne Routine geben, womit du die laufenden Prozesse siehst und somit siehst, ob das spiel gestartet ist.


Wennman das Spiel nicht starten soll dann schreib doch ein Programm, welches das erste Byte einer Datei in ein X ändert. ... das 1. Byte ist immer ein M (bei *.exe) ... sobald es was anderes ist, tut die nicht mehr.

Soll die wieder tun, machst dus Rückgängig...wenn du willst such ich die Mini-Routine dafür ... ^^

CrashMan
Wenn das nicht etwas zu brutal ist um das Starten der Datei zu verhindern, würd ich das so machen.
Ist das auch ansonsten ungefährlich, die Exe so zu verändern? Ich weiss auch nicht wie das geht, also könntest du mir die Routine mal posten, bitte.


@Minz: Lies doch mal richtig oben; ich hab doch geschrieben, Gothic oder CS oder so. Das sind doch fremde Programme, oder meinste, dass ich die geschrieben hab?


Für weitere Alternativen bin ich offen!

Wenn man sich nämlich das Spiel neu installiert ist die Exe ja wieder funktionsfähig, also muss das was sein, was ENTWEDER immer, wenn die Exe gestartet wird, diese beendet, ODER Jedes Mal, wenn es diese Exe auf dem PC findet, diese verändern.

MfG Lefko.
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.049 Beiträge
 
Delphi 12 Athens
 
#9

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 21. Nov 2003, 14:32
In der Datei rumschreiben ist schon etwas krass.

Wenn eine Datei nicht gestartet werden soll, hilft es normalerweise schon die zu löschen oder was besser ist, sie zu verschieben oder unzubenennen (z.B. *.exe => *.ex_ oder so)

Es giebt aber auch Programme, die verhindern, das bestimmte Programme gestartet werden und eventuell sogar vorher fragen ob es gestartet werden soll.

Bei mir mach das die FireWall gleich mit - diese Funktion ist bei einigen "Sicherheitsprogrammen" gleich mit drin.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Externes Programm sofort beenden (ein Spiel!)

  Alt 21. Nov 2003, 14:32
@SleepyMaster: Hm, das werd ich gleich mal ausprobieren! Danke auf jeden Fall mal!
EDIT : Der Text funktioniert überhaupt gar nicht, es passiert nix (wenn ich als 'programm' 'CAPIControl' eingebe z.b., obwohl ein fenster diesen titels offen ist).

MfG Lefko.

PS: Hat denn nun so ein Spiel wie Gothic oder CS oder so ein einfaches Handle? das is ja kein normales fenster, also wie soll man da denn FindWindow benutzen? welchen fenster-titel hat denn zum beispiel Counterstrike oder DiabloII?! geht das einfach so?
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 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