Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fremdes Programm/Anwendung pausieren? (https://www.delphipraxis.net/134711-fremdes-programm-anwendung-pausieren.html)

Yakumo500 27. Mai 2009 14:06


Fremdes Programm/Anwendung pausieren?
 
Hiho,

Ist es möglich irgendwie eine fremde Anwendung zu pausieren?

brechi 27. Mai 2009 14:17

Re: Fremdes Programm/Anwendung pausieren?
 
SuspendThread
ResumeThread

könnte helfen, dann ist das Programm aber blockiert (reagiert auf keine Eingaben mehr)

Yakumo500 27. Mai 2009 17:57

Re: Fremdes Programm/Anwendung pausieren?
 
Danke kannst du mir auch sagen wie ich den Main Thread eines Prozesses bekomme?

quendolineDD 27. Mai 2009 18:01

Re: Fremdes Programm/Anwendung pausieren?
 
Mit MSDN-Library durchsuchenOpenThread bekommst du das Handle zu dem Thread zurück, was du für MSDN-Library durchsuchenSuspendThread und MSDN-Library durchsuchenResumeThread benötigst.

brechi 27. Mai 2009 18:58

Re: Fremdes Programm/Anwendung pausieren?
 
An den Mainthread komsmt du z.B. mittels

http://msdn.microsoft.com/en-us/library/ms682489(VS.85).aspx (tlhelp32)

Fridolin Walther 27. Mai 2009 19:26

Re: Fremdes Programm/Anwendung pausieren?
 
Nur damit das klar ist: So etwas wie einen "Main Thread" gibt es nicht. Du musst um einen Prozess zu pausieren alle in ihm befindlichen Threads pausieren (suspenden).

Luckie 27. Mai 2009 20:39

Re: Fremdes Programm/Anwendung pausieren?
 
Zitat:

Zitat von 0xF30FC7
Nur damit das klar ist: So etwas wie einen "Main Thread" gibt es nicht. Du musst um einen Prozess zu pausieren alle in ihm befindlichen Threads pausieren (suspenden).

... und dann beten, dass der Prozess keine Ressourcen gesperrt hat, auf die ein anderer Prozess wartet. ;)

Fridolin Walther 27. Mai 2009 22:27

Re: Fremdes Programm/Anwendung pausieren?
 
Das muss nicht mal ein anderer Prozess sein. Du glaubst gar nicht wieviele Prozesse das Resume von sich aus schon nicht überleben. Insbesondere dann wenn die Anwendungen Multi Threading verwenden. Dadurch das Du die Thread Reihenfolge beim Suspenden und Resumen nicht so wirklich festlegen kannst, kommts da durchaus häufiger mal zu Crashes.

brechi 28. Mai 2009 12:04

Re: Fremdes Programm/Anwendung pausieren?
 
Also das Suspenden/Resumen sollte eigentlich im theoretischem kein Problem darstellen. Man darf halt auch nru die Threads Resumen die wirklich suspended waren (siehe Counter). Ansonsten sollte das Programm keinen Unterschied merken ob es im Usermode (druch Suspend) bzw. vom Scheduler suspended/resumed wurde. Wenn die Reihenfolge vom Resume wirklich Auswirkungen haben sollte, dann ist das Programm ebene nicht Threadsafe programmiert.

Und meiner Meinung nach sollte auch ein Hauptthread existieren, ohne den kein anderer Thread laufen würde. Wenn der Abschossen wird, dann beendet sich das komplette Programm. Von daher sollte dieser zu letzt Suspended und zuerst Resumed werden.

Luckie 28. Mai 2009 12:11

Re: Fremdes Programm/Anwendung pausieren?
 
Und wie findet man den Hauptthread?

Also bei einer GUI-Anwendung ist der Hauptthread, der Thread der zum Hauptfenster gehört.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr.
Seite 1 von 3  1 23      

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