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.