Seite 1 von 2

hwnd von einem gestartetem Programm

Verfasst: 27.03.2005 15:33
von orange-blue
Wie bekomm ich das handle von eine Programm den ich gestarte habe? Wenn ich Runprogramm ausführe bekomm ich ja nur eine pid. Is es irgenwie möglich von der ein handle zu bekommen?

Verfasst: 28.03.2005 22:54
von orange-blue
Wei echt keiner wie ich das gehn könnte?

Verfasst: 28.03.2005 22:57
von 125
Oh hatte deinen thread gar nicht gesehn.
Schau die mal in der MSDN FindWindow und FindWindowEx an :D

Verfasst: 29.03.2005 12:31
von orange-blue
das kann ich leider nicht benutzten (will winamp ansteuern).

Verfasst: 29.03.2005 18:06
von DataMiner
Hilft dir vielleicht die ProzessLib von Rings?
http://purearea.net/pb/download/userlibs/ProcessLib.zip

:?

Verfasst: 29.03.2005 18:27
von 125
auch winamps Window hat einen namen.
Hier aufm Board gabs ein tool das alle Fenster auflistete. Da würdest du den Fensternamen von Winamp auch finden.

Aber warum so umständlich?
Schreib doch lieber MediaLibrary Plugin das ist einfacher damit kannste Winamp komplett controlen.

Verfasst: 29.03.2005 18:39
von orange-blue
@DataMiner: die hab ich schon und hilft mir nicht
weil der Winamp windowname sich verändert(wenn man was abspielt).
Ich hab keine ahnung was ein MediaLibrary Plugin ist, wenn du ein Winamp plugin meinst, dann hab ich keine Ahnung wie des funzt bzw. kann ich es auch nicht gebrauchen, da mein Programm nicht nur Winamp ansteuern können soll.

Verfasst: 29.03.2005 21:46
von Leo
Suchst du sowas?

Code: Alles auswählen

;
; 30.März 2005 von Leo =)
;
Global hWinamp.l
Procedure.s GetWindowClass(hwnd)
    Buffer.s = Space(1000)
    GetClassName_(hwnd,@Buffer,1000)
    ProcedureReturn Buffer
EndProcedure
Procedure.s GetWindowName(hwnd)
    Buffer.s = Space(1000)
    GetWindowText_(hwnd,@Buffer,1000)
    ProcedureReturn Buffer
EndProcedure
Procedure EnumWindowsProc(hwnd.l,lParam.l)
    Class.s = GetWindowClass(hwnd)
    Name.s  = GetWindowName(hwnd)
    If FindString(LCase(Class),"winamp",0)
        If GetWindowLong_(hwnd,#GWL_STYLE) & #WS_CHILD = #WS_CHILD Or GetWindowLong_(hwnd,#GWL_STYLE) & #WS_CAPTION <> #WS_CAPTION Or Trim(Name) = "" Or GetWindowLong_(hwnd,#GWL_STYLE) & #WS_POPUP = #WS_POPUP
            ProcedureReturn 1
        Else
            Debug Name
            Debug Class 
            Debug hwnd
            hWinamp = hwnd
            ProcedureReturn 0
        EndIf
        ProcedureReturn 1
    Else
        ProcedureReturn 1
    EndIf
EndProcedure

EnumWindows_(@EnumWindowsProc(),0)
;hWinamp sollte jetz das Handle vom Winamp-Control-Fenster haben

Verfasst: 30.03.2005 08:02
von orange-blue
thx, wie auch immer ich such jetzt Winamp bei ClassName.

Verfasst: 30.03.2005 11:59
von MLK
winamp finde ich mit:

Code: Alles auswählen

FindWindow_("Winamp v1.x",0)
müsste bei dir auch gehen.