Aktuelle Zeit: 09.09.2010 09:58

Alle Zeiten sind UTC + 2 Stunden




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Prozessname: Einfacheren Name des Prozesses erfassen?
BeitragVerfasst: 29.07.2010 12:52 
Offline

Registriert: 05.03.2008 22:05
Da die Pbosl ja nicht will....

Habe momentan folgenden Code:
Code:
Procedure.s GetWindowName(hwnd)
    Buffer.s = Space(1000)
    GetWindowText_(hwnd,@Buffer,1000)
    ProcedureReturn Buffer
EndProcedure


Funktioniert prima:

Code:
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

_________________
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Prozessname: Einfacheren Name des Prozesses erfassen?
BeitragVerfasst: 29.07.2010 13:28 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Berlin
@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.

_________________
Bild Bild
Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Prozessname: Einfacheren Name des Prozesses erfassen?
BeitragVerfasst: 29.07.2010 14:07 
Offline

Registriert: 05.03.2008 22:05
Funktioniert prima.
Danke dir =)

_________________
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Prozessname: Einfacheren Name des Prozesses erfassen?
BeitragVerfasst: 29.07.2010 17:59 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
"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.

_________________
Suche


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Prozessname: Einfacheren Name des Prozesses erfassen?
BeitragVerfasst: 29.07.2010 18:39 
Offline

Registriert: 05.03.2008 22:05
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 :mrgreen:

Jemand einen besseren Vorschlag? ^^

_________________
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Prozessname: Einfacheren Name des Prozesses erfassen?
BeitragVerfasst: 29.07.2010 20:31 
Offline

Registriert: 13.05.2006 16:04
Der Vorschlag ist gut, man müsste ihn nur auch "im Sinne des Erfinders" benutzen.

Ich hoffe mal das ist so etwas sicherer:

Code:
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. :D

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Prozessname: Einfacheren Name des Prozesses erfassen?
BeitragVerfasst: 29.07.2010 23:05 
Offline

Registriert: 05.03.2008 22:05
Funktioniert prima ;)

:bounce:

_________________
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 2 Stunden


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye