Rechercher une fenêtre par son titre, ou une partie du titre

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Rechercher une fenêtre par son titre, ou une partie du titre

Message par Flype »

Ce code permet de trouver une fenêtre en spécifiant son titre ou au moins juste une partie du titre.
Dans cette version le texte du titre n'est pas sensible à la casse.
Elle renvoie 0 si aucune fenetre ne correspond ou le handle (hWindow) de la première fenêtre trouvée. (attention PB4 mais c'est convertible).

Code : Tout sélectionner

Procedure.l FindWindowEx(*hWnd,*Param)
  bufLen.l = GetWindowTextLength_(*hWnd)
  If bufLen
    bufStr.s = Space(bufLen+1)
    If GetWindowText_(*hWnd,@bufStr,bufLen+1)
      If FindString(LCase(bufStr),PeekS(PeekL(*Param)),1)
        PokeL(*Param+4,*hWnd) : ProcedureReturn #False
      EndIf
    EndIf
  EndIf
  ProcedureReturn #True
EndProcedure

Procedure.l FindWindow(text.s)
  PokeL(@param.q,@text)
  If EnumWindows_(@FindWindowEx(),@param) = 0
    ProcedureReturn PeekL(@param+4)
  EndIf
EndProcedure

hPureBasic = FindWindow("basic")
If hPureBasic
  SendMessage_(hPureBasic,#WM_SYSCOMMAND,#SC_MINIMIZE,0)
  Delay(500)
  SendMessage_(hPureBasic,#WM_SYSCOMMAND,#SC_MAXIMIZE,0)
EndIf
Image
Avatar de l’utilisateur
gildev
Messages : 380
Inscription : mar. 19/juin/2007 10:28
Localisation : Picardie (France)

Message par gildev »

Je sais que ça fait plus de 2 ans que ce post est refroidi, mais j'ai pour habitude de remercier ceux qui me permettent d'avancer, directement ou indirectement.

Donc merci Flype pour ce code car ça m'évite de chercher. :wink:
Répondre