Seite 1 von 2
Pfade der gestarteten Programme
Verfasst: 15.08.2007 16:17
von a14xerus
Hi Leute, wie komme ich an die Datei Pfade der Programme, die im Moment laufen?
Die einzige Funktion die ich gefunden habe ist GetModuleFileName_(), aber wie komm ich an das Modulhandle ( GetModuleHandle_() ...) eines Fensters (die HWND des Fensters hol ich mir mit EnumWIndows_() )?
Verfasst: 15.08.2007 16:43
von Fluid Byte
ProgramFilename() ?

Verfasst: 15.08.2007 16:47
von a14xerus
ich denke das aus meinem post wenigstens herausgehen sollte, das ich externe programe meine
Verfasst: 15.08.2007 16:52
von bobobo
siehe in den sourcen zur der processgeschichte aus PBOSL getprocessfilename()
Verfasst: 15.08.2007 17:34
von a14xerus
danke
habe diesen Code hier geschrieben, hängt sich aber mit nem IMA beim getprocessfilename() auf
Code: Alles auswählen
Procedure Processes()
Protected pid.l, name$, pfad$
ExamineProcesses()
While NextProcess()
pid = GetProcessPID()
If pid
name$ = GetProcessName(pid)
If name$
pfad$ = GetProcessFileName(pid)
Debug "#####"
Debug pid
Debug name$
Debug pfad$
EndIf
EndIf
Wend
EndProcedure
Verfasst: 15.08.2007 19:16
von a14xerus
//edit: da is irgendein post weg...
also: getestet mit @pid
jetzt kommt zwar kein IMA mehr, aber "pfad$" ist immer leer
Verfasst: 15.08.2007 19:28
von bobobo
unter 3.94 geht das alles noch .. hab keine ahnung .. dafür feierabend
Verfasst: 15.08.2007 20:50
von Kiffi
in der PBOSL_Process.pb steckt ein kleiner Fehler, der den IMA auslöst.
hier erst mal der Fix:
Suchen nach:
Ersetzen durch:
Suchen nach:
Code: Alles auswählen
Result=GetModuleFileName(hProcess, Name.s, Len(Name.s))
Ersetzen durch:
Code: Alles auswählen
Result=GetModuleFileName(hProcess, DLLMemModule, Name.s, Len(Name.s))
Suchen nach:
Ersetzen durch:
Code: Alles auswählen
Result=GetModuleFileName(hProcess, BaseModule, name$, Len(name$))
Suchen nach:
Ersetzen durch:
Code: Alles auswählen
Result=GetModuleFileName(hProcess, BaseModule, name$, Len(name$))
that's it. Den gefixten Source kannst Du dann direkt in Deinen Code includen.
Code: Alles auswählen
XIncludeFile "C:\Programme\PureBasic\sources\PBOSL4\LIBS4\PB\PBOSL_Process\Source\PBOSL_Process.pb"
Procedure Processes()
Protected pid.l, name$, pfad$
PBOSL_Process_Init()
ExamineProcesses()
While NextProcess()
pid = GetProcessPID()
If pid
name$ = GetProcessName2(pid)
If name$
pfad$ = GetProcessFileName2(pid)
Debug "#####"
Debug pid
Debug name$
Debug pfad$
EndIf
EndIf
Wend
PBOSL_Process_End()
EndProcedure
Processes()
Grüße ... Kiffi
Verfasst: 15.08.2007 21:28
von a14xerus
danke für den tipp....
Aber ich hab die PBOSL nur in Lib-version, von
hier geladen.
Wie komm ich denn an diese Version?
//edit: schon gefunden
//edit: muss ich dann die libs löschen ,wenn cih die source-codes nehme???
Und ProcedureDLL in Procedure umbenennen?
Verfasst: 15.08.2007 21:50
von Kiffi
a14xerus hat geschrieben://edit: muss ich dann die libs löschen ,wenn cih die source-codes nehme???
ja
a14xerus hat geschrieben:Und ProcedureDLL in Procedure umbenennen?
nein
Grüße ... Kiffi