Détection d'une fenêtre

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

quel bazar juste pour entendre dire ce que je sais déjà faire :(
mais je ne vous en veux pas :wink: , j'aurai du mieux préciser la question.

pour savoir si un prgramme est lancé, j'ai déjà un code, je vous le met ici :
il marche avec le nom de la fenêtre :

Code : Tout sélectionner

Procedure.l IsRunning(Nom.s)
  ; nom = nom de la fenêtre en cours
  ; valeur de retour de la procedure :
  ; <> 0 : OK
  ; = 0 : Le logiciel n'est pas en cours d'exécution

  ProcedureReturn FindWindow_(vbNullString, nom)
EndProcedure

Debug IsRunning("Calculatrice")
pour scanner les fenêtres, j'ai également un code :

Code : Tout sélectionner

Procedure Fenetres_Ouvertes()
  hWnd.l = FindWindow_( 0, 0 )
  While hWnd <> 0
    If GetwindowLong_(Hwnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
      If GetwindowLong_(Hwnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW
        txt.s = Space(256)
        GetWindowText_(hwnd, txt, 256)
        If txt <> ""
          Debug txt
        EndIf
      EndIf
    EndIf
    hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
  Wend
EndProcedure

Fenetres_Ouvertes()
mais je ne veux pas de systèmes qui scanne en permanence car ça bouffe des ressources processeurs.
j'aurai souhaité récupéré un évènement windows qui indique la création d'une nouvelle fenêtre par exemple.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Il y a bien une solution mais c'est balaise, tu fais ton propre OS avec le message qui va bien...et le tour est joué,...n'oubliepas la portabilité. :D

Et ça, sûr que tu l'as pas fait !

Bon courage. 8)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Salut Régis,

je voulais regarder mais je n'ai pas le temps.
Je pense que la solution est d'intercepeter dans une callback le message WM_CREATE qui est envoyé chaque foit que fenêtre est créée avec les API CreateWindowEx ou CreateWindow.

Là ou c'est moins marrant c'est qu'un Tooltip, une barre de tache ou autre est une fenêtre. A toi de faire le tri en regardant la classe de la fenêtre créée.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Ok, encore merci à super Denis :wink:

Sinon, Nico, je vois que tu ne connais pas très bien mais tu verras bien vite que je rale souvent, mais surtout pour déconner :wink:
N'est ce pas vous autre :mrgreen:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Salut :)
Denis a écrit :Je pense que la solution est d'intercepeter dans une callback le message WM_CREATE qui est envoyé chaque foit que fenêtre est créée avec les API CreateWindowEx ou CreateWindow.
C'est certainement pas aussi simple, sinon, je pense que ça aurait déjà été fait depuis longtemps :?

Enfin, c'est juste un avis... Mon niveau n'est pas assez élévé pour te contredire. :lol: :wink:

Chris :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

j'ai bien compris Regis. :D

Une chose que j'ai appris en programmation, c'est que les messages sont propres à chaque procédure de fenêtre.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

bah, on va voir, faut que j'essaie
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Salut Chris,

peut-être que tu as raison, je voulais faire des essais avant de poster (mais j'ai pas trop de temps), car je ne sais pas si on peut intercepter ce message depuis un autre Thread

Régis nous le dira
Répondre