Fenster Handle per enthaltenem String im Titel erhalten

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Buddah

Betreff: Fenster Handle per enthaltenem String im Titel erhalten

BeitragSo, Jan 18, 2004 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mal was zurecht gebastelt womit ihr den Handle eines beliebigen Fensters bekommen könnt.
Der Clou daran ist aber das ihr den Titel des gesuchten Fensters nicht genau wissen müsst sondern das ihr auch nur ein
enthaltenes Wort etc. suchen könnt.
Es wird dann der Handle des ersten Fensters zurück gegeben, welches euer Suchwort im Titel enthält.

Dazu braucht ihr nur diese Decl anlegen...

Zitat:
.lib "user32.dll"

FindWindow%(ClassName$,Caption$):"FindWindowA"
GetWindow%(hwnd,flag):"GetWindow"
GetWindowText%(hwnd,bank*,len):"GetWindowTextA"


und diese beiden Funktionen kommen in euer Programm

Code: [AUSKLAPPEN]
hwnd = api_getWindowHandle("mIRC")           ;kleiner beispiel Aufruf
Print hwnd                                   ;gibt den gefundenen Handle aus
Print api_GetWindowText$(hwnd)               ;gibt den Titel des gefundenen Fensters aus


Function api_GetWindowHandle(title$)
  hwnd=FindWindow("Blitz Runtime Class"," ") ;falls ihr einen AppTitle habt muss der statt " "
                                             ;eingetragen werden
  hwnd=GetWindow(hwnd,0)
  check$=api_GetWindowText$(hwnd)
  If Instr(check$,title$)<>0 Then Return hwnd
  Repeat
    hwnd=GetWindow(hwnd,2)
    check$=api_GetWindowText$(hwnd)
  Until Instr(check$,title$)<>0 Or hwnd = 0
  Return hwnd
End Function

Function api_GetWindowText$(hwnd)
  bank=CreateBank(255)
  lenght=GetWindowText(hwnd,bank,255)
  For i=0 To lenght-1
    fname$=fname$+Chr$(PeekByte(bank,i))
  Next
  FreeBank bank
  Return fname$
End Function


Das Ding ist recht flott obwohl es absolut unoptimiert ist.
Viel Spass damit !




greetz BuDDaH
Alles ist gut so wie es ist und bald wird alles anders.

x-pressive

BeitragSa, Jan 31, 2004 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, funktioniert bei mir nicht -liefert immer Handle 0 zurück (Win XP).

Nachtrag: funktioniert doch -man muß nur aufpassen, das man die richtigen API decs hat. Meine lautete

GetWindowText% (hwnd%, lpStr$, cch%) : "GetWindowTextA"

statt

GetWindowText% (hwnd%, bank*, cch%) : "GetWindowTextA" Smile
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Buddah

BeitragSa, Jan 31, 2004 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
oha.. das is ja ärgerlich.. hab hier nur meine Win2K kiste

danke für den hinweis !

greetz Buddah
Alles ist gut so wie es ist und bald wird alles anders.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group