Seite 1 von 1
Test ob Windows schon gestartet wurde...
Verfasst: 25.02.2014 23:37
von 3dhubiflieger
Hallo, wollte mal fragen welche Möglichkeiten es gibt um zu testen, ob Windows, sprich der Explorer(Explorer.exe von Windows) schon gestartet wurde. Ich hatte die Processid vom Explorer abgefragt. Aber irgendwie scheints da unter Win7 Probleme zu geben wie mir ein User meines Programmes berichtete. Gibt es vielleicht ne API Funktion oder sonst irgendetwas ?
Re: Test ob Windows schon gestartet wurde...
Verfasst: 25.02.2014 23:42
von RSBasic
http://www.rsbasic.de/aktualisierung/wi ... 3%A4uft.pb
Damit habe ich keine Probleme beim Überprüfen, ob ein Prozess, beispielsweise explorer.exe, bereits läuft.
Re: Test ob Windows schon gestartet wurde...
Verfasst: 26.02.2014 07:39
von 3dhubiflieger
Genau mit diser Prozedur hab ich ja den Explorer abgefragt

! Ich wollte aber wissen was es sonst noch so gibt. Ne Direktabfrage per API konnte ich nicht finden. Oder gibts da was ?
Re: Test ob Windows schon gestartet wurde...
Verfasst: 26.02.2014 08:07
von helpy
Der Explorer läuft doch IMMER!
Der Desktop ist Teil des Explorers!
Re: Test ob Windows schon gestartet wurde...
Verfasst: 26.02.2014 10:04
von RSBasic
Eine andere Möglichkeit:
Code: Alles auswählen
EnableExplicit
Define Handle
Handle = FindWindow_(0, "Program Manager")
If Handle
Debug "explorer.exe läuft"
Else
Debug "explorer.exe läuft nicht"
EndIf
Re: Test ob Windows schon gestartet wurde...
Verfasst: 26.02.2014 10:53
von Danilo
helpy hat geschrieben:Der Explorer läuft doch IMMER!
Der Desktop ist Teil des Explorers!
Vielleicht hat er einen Service programmiert, der vor dem Login gestartet wird?
Re: Test ob Windows schon gestartet wurde...
Verfasst: 26.02.2014 10:56
von helpy
Hi Danilo,
... da hast Du natürlich recht!
Re: Test ob Windows schon gestartet wurde...
Verfasst: 26.02.2014 17:35
von 3dhubiflieger
Es geht darum den Explorer zu erkennen, nachdem mein Programm sich als Shell gestartet hat und eben diesen anschliessend ausführt. Das Problem ist, das es bei mir unter Win 8 und XP funktioniert. Aber ein User meint das bei ihm unter Win7 der Explorer immer wieder und wieder gestartet wird. Das heisst es wird immer wieder der Text "..starte Explorer ausgegeben" (Textroutine meinerseits) Nach genauerer Analyse bin ich zu dem Schluss gekommen das das ganze nur an folgender Prozedur mit dem damit verbundenen Pfad zusammenhängen kann...
Kann jemand diesen Code für mich unter Win 7 testen ? Das wäre net !
Code: Alles auswählen
Procedure ProcessID(PName$)
Protected Snapshot, Snapshot2, ProcessFound
Protected Process.PROCESSENTRY32, Module.MODULEENTRY32
Process\dwSize = SizeOf(PROCESSENTRY32)
Module\dwSize = SizeOf(MODULEENTRY32)
Snapshot = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
If Snapshot
ProcessFound = Process32First_(Snapshot, Process)
While ProcessFound
Snapshot2 = CreateToolhelp32Snapshot_(#TH32CS_SNAPMODULE,Process\th32ProcessID)
If Snapshot2
If Module32First_(Snapshot2, @Module)
If UCase(PName$) = UCase(PeekS(@Module\szExePath[0]))
CloseHandle_(Snapshot)
CloseHandle_(Snapshot2)
ProcedureReturn Process\th32ProcessID
EndIf
CloseHandle_(Snapshot2)
EndIf
EndIf
ProcessFound = Process32Next_(Snapshot, Process)
Wend
CloseHandle_(Snapshot)
EndIf
ProcedureReturn 0
EndProcedure
Explorerpfad$ = GetEnvironmentVariable("SYSTEMROOT") + "\" + "EXPLORER.EXE"
If processid(explorerpfad$)
Debug "Windows läuft !"
EndIf
Edit by NicTheQuick: Code-Tags gesetzt
Re: Test ob Windows schon gestartet wurde...
Verfasst: 26.02.2014 18:25
von edel
Du wirst unter 32 Bit nur 32bit Prozesse auflisten koennen unter 64bit das gleiche.