Autor |
Beitrag |
bawa
      
Beiträge: 49
|
Verfasst: Mi 24.09.08 18:54
Heyho,
ich habe eine kurze frage. Wie kann ich andere Programme pausieren?
Schonmal danke
Bawa
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Mi 24.09.08 18:57
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 24.09.08 19:03
man kann threads anhelten...
|
|
bawa 
      
Beiträge: 49
|
Verfasst: Mi 24.09.08 19:03
Okay dachte es wäre ersichtlich was ich meine.
Also ich möchte, dass ein anderes Programm (z.B. firefox) kurz pausiert wird (so wie wenn mal sleep(x) macht). Es soll sozusagen von meinem Programm eingefroren werden (So wie es Antivir mit programmen macht die eine virusmeldung auslösen, bis diese beantwortet ist)
|
|
Sinspin
      
Beiträge: 1335
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: Mi 24.09.08 19:17
Genau wie du das jetzt ansprichst, das Antivir das tut, würde ich sagen, das ist nichts für "Kinderhände"! Denn auf eben diese Weise könnte man dann auch Programme wie Antivir anhalten um einen Virus oder was anderes unfreudliches daran vorbei zu schmucklen.
Also schreib bitte nochmal genau um was für Programme es sich handelt die du anhalten willst.
Sind das Programme von dir oder Fremde?
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
bawa 
      
Beiträge: 49
|
Verfasst: Mi 24.09.08 19:41
Ich will lediglich einen Trainer für ein Spiel programmieren. Dieses setzt jedoch beim erhöhen der Rostoffe den wert gleich wieder zurück. Ich habe mir überlegt, dass man das mit pausieren des spiels möglicherweise umgehen könnte.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 24.09.08 19:51
Hi,
Ob dein Vorhaben legal ist, bin ich mir nicht so ganz sicher  Der Programmierer wollte dies anscheinend verhindern, daher das Zurücksetzen.
Das wird aber sowieso so nicht gehen, da das Zurücksetzen damit nur Pausiert würde.
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Mi 24.09.08 19:55
bawa hat folgendes geschrieben: | Ich habe mir überlegt, dass man das mit pausieren des spiels möglicherweise umgehen könnte. |
Sehr sehr unwarscheinlich.
AntiVir hält übrigens das andere Programm nicht explizit an, sondern "beantwortet" die Anfrage, auf eine Datei zuzugreifen erst dann, wenn die Warnmeldung bestätigt worden ist. Im Endeffekt wird dadurch natürlich das Programm, das auf die Datei zugreifen will, angehalten.
Sinspin hat folgendes geschrieben: | Denn auf eben diese Weise könnte man dann auch Programme wie Antivir anhalten um einen Virus oder was anderes unfreudliches daran vorbei zu schmucklen. |
Eigentlich nicht, da dann AntiVir das Programm, das AntiVir anhalten will, schon erkennen sollte bevor es gestartet wird, vorrausgesetzt Signaturen sind dafür vorhanden.
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 24.09.08 20:55
Nun ja, der Process Explorer bietet die Möglichkeit ein Programm zu pausieren. Irgendwie muss das also gehen, auch ohne, dass schlicht ein Dateizugriff blockiert wird o.ä., aber wie der das macht habe ich keine Ahnung. Wenn ich mal Zeit finde könnte ich mal schauen ob ich das herausfinde, aber im Moment siehts da nicht gut aus.
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Mi 24.09.08 21:07
Ich tippe mal auf SuspendThread und ResumeThread. Luckie meinte aber mal, dass es mit dem allein nicht getan ist, glaub ich.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 24.09.08 23:19
Wenn du den richtigen Thread erwischt schon. Nu sollte man einen Thread nie von aussen anhalten oder gar beenden. Befindet r sich nämlich gerade in einer CriticalSection und man hält ihn an oder beendet ihn gar, dann warten sich die andren Threads zu Tode, die auf die Freigbae der CriticalSection warten.
Und wie schon gsagt wurde, hat entweder der Programmierer vorgesorgt und hat sein Programm dagegen abgesichert und dann ist es egal, ob du das Programm eine Sekunde oder drei Stunden anhälts. Der Code, der den Wert wieder zurücksetzt wird trotzdem ausgeführt. Oder du guckst an der falschen Stelle. Oder du machst grundsätzlich was falsch. Ich wüde auf letzteres tippen, denn wenn jemand so viel Ahnung hat, wie man einen Trainer schreibt, der sollte sich mit den grundlegenden API-Funktionen und Windows Interna auskennen oder zumindest wissen, wo er dieses Wissen herbekommt ohne fragen zu müssen.
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Do 25.09.08 00:04
Luckie hat folgendes geschrieben: |
Befindet r sich nämlich gerade in einer CriticalSection und man hält ihn an oder beendet ihn gar, dann warten sich die andren Threads zu Tode, die auf die Freigbae der CriticalSection warten.
|
Dann müsste man ja nur irgendwie feststellen, ob ein Thread in einer Critical Section ist... aber geht dass denn??
|
|