Seite 1 von 1

Gestartete Programme inklusive Pfad ermitteln

Verfasst: 10.12.2011 14:23
von Sicro
Ich suche eine Möglichkeit, gestartete Programme inklusive Pfad zu ermitteln.
Sämtliche Codes, die ich bisher fand, lieferten mir nur den Dateinamen zurück.

Re: Gestartete Programme inklusive Pfad ermitteln

Verfasst: 10.12.2011 14:28
von RSBasic
Was meinst du damit genau? Möchtest du den Pfad deiner eigenen Anwendung ermitteln?

Code: Alles auswählen

Debug ProgramFilename()
Oder den Pfad einer Anwendung, die zuvor mit RunProgram() ausgeführt wurde?
Oder den Pfad eines Programms, welches bereits läuft?
(http://www.rsbasic.de/aktualisierung/wi ... ssnamen.pb
http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
Oder siehe PBOSL-Process-Code)

Re: Gestartete Programme inklusive Pfad ermitteln

Verfasst: 11.12.2011 11:39
von Sicro
Sorry, ich ging davon aus, dass ich mich eindeutig ausgedrückt habe.
Der Punkt 3 ist korrekt, wobei die Pfade von allen gestarteten Programmen ermittelt werden sollen.

Durch deine beiden Links konnte ich mir ein Code zusammenstellen, danke :allright:

Code: Alles auswählen

Procedure ScanRunningProcesses()
  
  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)
          Debug PeekS(@Module\szExePath[0])
        EndIf
      
        CloseHandle_(Snapshot2)
      EndIf
      
      ProcessFound = Process32Next_(Snapshot, Process)
    Wend
    
    CloseHandle_(Snapshot)
  EndIf
  
EndProcedure
winlogon.exe wird damit nicht aufgelistet, aber das ist mir auch nicht wichtig.

Wichtig: 64-Bit-Programme werden nur aufgelistet, wenn mit dem 64-Bit-Compiler kompiliert wurde.