Seite 1 von 1
Prozessname: Einfacheren Name des Prozesses erfassen?
Verfasst: 29.07.2010 12:52
von Tombi
Da die Pbosl ja nicht will....
Habe momentan folgenden Code:
Code: Alles auswählen
Procedure.s GetWindowName(hwnd)
Buffer.s = Space(1000)
GetWindowText_(hwnd,@Buffer,1000)
ProcedureReturn Buffer
EndProcedure
Funktioniert prima:
Code: Alles auswählen
Debug "FENSTER: "+GetWindowName(GetForegroundWindow_())
Nun ist mir aber immer aufgefallen, das der Name des Programmtitels ausgegeben wird.
Hier gerade würde es heißen bei Firefox:
"PureBoard Post a new topic - Mozilla Firefox"
Nun fände ich es aber schöner, wenn ich eine andere Ausgabe bekomme.
Hier wäre es schön, nur "Mozilla Firefox" oder "Firefox" zu erfassen.
Da kam mir die Idee, statt dem Programmtitel den Dateinamen zu erfassen.
Hier sollte es dann "firefox.exe" sein.
Nun meine Frage: Wie erfasse ich diesen Dateinamen eines Prozesses ohne Pbosl? ^^
MFG,
Tombi
Re: Prozessname: Einfacheren Name des Prozesses erfassen?
Verfasst: 29.07.2010 13:28
von RSBasic
@Tombi
Du könntest den Pfad eines Fensters mit diesem Code ermitteln:
http://www.rsbasic.de/index.php?option= ... &Itemid=59
Anschließend brauchst du nur den Namen der Datei mit GetFilePart() ermitteln.
Re: Prozessname: Einfacheren Name des Prozesses erfassen?
Verfasst: 29.07.2010 14:07
von Tombi
Funktioniert prima.
Danke dir

Re: Prozessname: Einfacheren Name des Prozesses erfassen?
Verfasst: 29.07.2010 17:59
von edel
"Im nächsten Kapitel lesen Sie dann, wie Sie Speicherlecks erfolgreich verhindern können."
@RSBasic
Mal im Ernst, du solltest deine Schnipsel besser pruefen. Anfaenger wie
Tombi, kopieren den Code und wundern sich dann, wenn ihre Programme ueber 1GB Ram brauchen.
Re: Prozessname: Einfacheren Name des Prozesses erfassen?
Verfasst: 29.07.2010 18:39
von Tombi
edel hat geschrieben:"Im nächsten Kapitel lesen Sie dann, wie Sie Speicherlecks erfolgreich verhindern können."
@RSBasic
Mal im Ernst, du solltest deine Schnipsel besser pruefen. Anfaenger wie
Tombi, kopieren den Code und wundern sich dann, wenn ihre Programme ueber 1GB Ram brauchen.
Schön das du es gerade erwähnst.
Hab mich gerade schon gewundert, warum die Auslagerungsdatei 4 GB anzeigt, statt nur ein paar MB
Jemand einen besseren Vorschlag? ^^
Re: Prozessname: Einfacheren Name des Prozesses erfassen?
Verfasst: 29.07.2010 20:31
von Jilocasin
Der Vorschlag ist gut, man müsste ihn nur auch "im Sinne des Erfinders" benutzen.
Ich hoffe mal das ist so etwas sicherer:
Code: Alles auswählen
Procedure.s GetProcessFilenameByWindowHandle(*hWnd)
Protected ModuleEntry.MODULEENTRY32
ModuleEntry\dwSize = SizeOf(MODULEENTRY32)
Protected PID.l ; LPDWORD = pointer zu 32-bit unsigned integer, deshalb ".l" (Also bitte nicht stänkern von wegen ".i")
Protected Result.s = ""
GetWindowThreadProcessId_(*hWnd, @PID)
If PID
*hSnapshot = CreateToolhelp32Snapshot_(#TH32CS_SNAPMODULE, PID)
If *hSnapshot <> #INVALID_HANDLE_VALUE
If Module32First_(*hSnapshot, @ModuleEntry) = #True
Result.s = PeekS(@ModuleEntry\szExePath)
EndIf
CloseHandle_(*hSnapshot)
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Debug GetProcessFilenameByWindowHandle(GetForegroundWindow_())
;Debug GetProcessFilenameByWindowHandle(FindWindow_(0, "Firefox ... oder irgendwas"))
Das anschließende GetFilePart() könnte man sich ersparen, wenn man statt "szExePath" "szModule" nimmt, das (soweit ich weiß) gleich nur den Dateinamen beinhaltet.

Re: Prozessname: Einfacheren Name des Prozesses erfassen?
Verfasst: 29.07.2010 23:05
von Tombi
Funktioniert prima
