PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Main Thread anderer Programme anhalten



cocacola
01.09.2009, 22:30
Hi!
ich hab ne frage:
indem man mit der maus das fenster eines programmes festhält kann man den hauptthread dieses programms anhalten (so weit ich weiss geht das zum beispiel bei winrar)
wie kann ich das mit C# realisieren ohne den mouse cursor bewegen zu müssen?
mfg cocacola

wacked
02.09.2009, 15:45
bitte was? okay bein winrar scheints zu funktionieren aber schonmal bei firefox probiert? einfach ne seite laden lassen und dann mal probieren...
Geht nicht!!
und man kann den "Hauptthread" auch nicht anders anhalten. außer du setzt einen breakpoint. aber das geht in c# auf keinen fall und selbst in C oder ASM wird es da probleme geben. wenn du sowas machen willst=OllyDBG oder SoftICE oder sonst irgentein Debugger

EBFE
02.09.2009, 16:15
Naja, Processe selbst kannst du ja noch mit NET Mitteln suchen:
GetProcessByName
http://msdn.microsoft.com/en-us/library/aa326945(VS.71).aspx (http://msdn.microsoft.com/en-us/library/aa326945%28VS.71%29.aspx)
da findest du unter anderem die ThreadIDs
http://msdn.microsoft.com/en-us/library/system.diagnostics.process_members(VS.71).aspx (http://msdn.microsoft.com/en-us/library/system.diagnostics.process_members%28VS.71%29.aspx )
nun bleibt noch diese zu öffnen und zu suspenden - und da bleibt wahrschenilch nur die WinAPI übrig ;)
öffnen:
http://www.pinvoke.net/default.aspx/kernel32/OpenThread.html
suspenden:
http://msdn.microsoft.com/en-us/library/ms686345(VS.85).aspx (http://msdn.microsoft.com/en-us/library/ms686345%28VS.85%29.aspx)
(signatur für c#) http://www.webtropy.com/articles/art9-1.asp?f=SuspendThread

wacked
02.09.2009, 19:31
echt? der "normale" ablauf ist auch "nur" ein thread?
mhmm man lernt nie aus...

dzdz
02.09.2009, 19:40
bei firefox kannst du auch mehrere seiten parralel aufmachen (also wird das gethreadet sein)

http://keksa.de/?q=proslo
ich glaube der code macht genau das was du willst nur mit sämtlichen threads des programm


edit sehe gerade ist für c++ na ja vll hilft das ja trotzdem

EBFE
02.09.2009, 19:46
der "normale" ablauf ist auch "nur" ein thread?
die komische C# Funktion sollte ein Array mit allen ThreadIDs liefern ;). Ansonsten kann man auch das gute alte CreateToolhel32Snapshot(... TH32CS_SNAPTHREAD) bemühen und OwnerProcessID abfragen.