Page 2 sur 2

Publié : ven. 13/févr./2004 19:49
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.

Publié : ven. 13/févr./2004 20:35
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)

Publié : ven. 13/févr./2004 20:54
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.

Publié : ven. 13/févr./2004 20:59
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:

Publié : ven. 13/févr./2004 21:04
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 :)

Publié : ven. 13/févr./2004 21:13
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.

Publié : ven. 13/févr./2004 21:57
par Le Soldat Inconnu
bah, on va voir, faut que j'essaie

Publié : sam. 14/févr./2004 8:11
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