retrouver les fenêtres d'un programme lancé avec runprogram
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
retrouver les fenêtres d'un programme lancé avec runprogram
Salut,
encore une colle, comment faire pour retrouver le handle de la fenêtre du programme qu'on vient de lancé avec avec runprogram, sachant que je ne connait pas le nom de la fenêtre.
j'explique mon objectif :
je souhaiterai amélioré l'explorateur windows en remplacant le raccourci par un lanceur qui ouvrirai 2 explorateurs en même temps avec des positions définis sur l'écran par exmple, un en haut, bien grand, et l'autre en bas, plus petit qui permettrai de faire du déplacer facilement, du copier coller, etc...
je trouve vraiment moche les progs censé remplacer l'explorateur windows, c pour ça que j'aimerai implémenter cette astuce.
vous en penser quoi ? et avez vous des idées pour résoudre mon problème ?
merci
encore une colle, comment faire pour retrouver le handle de la fenêtre du programme qu'on vient de lancé avec avec runprogram, sachant que je ne connait pas le nom de la fenêtre.
j'explique mon objectif :
je souhaiterai amélioré l'explorateur windows en remplacant le raccourci par un lanceur qui ouvrirai 2 explorateurs en même temps avec des positions définis sur l'écran par exmple, un en haut, bien grand, et l'autre en bas, plus petit qui permettrai de faire du déplacer facilement, du copier coller, etc...
je trouve vraiment moche les progs censé remplacer l'explorateur windows, c pour ça que j'aimerai implémenter cette astuce.
vous en penser quoi ? et avez vous des idées pour résoudre mon problème ?
merci
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
mon prob vient du fait que je vais ouvrir 2 fenêtre d'un coup, avec la handle du process, on peux pas retrouver les fenêtre associé ?
ça renvoie quoi, runprogram ?
ça renvoie quoi, runprogram ?
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
une grosse bidouille mais elle marche :
ça lance l'explorer et donne son ID
Attention, j'ai éditer le message pour faire une correction
ça lance l'explorer et donne son ID
Code : Tout sélectionner
Procedure.l GetLastWindow(WindowID.l, TimeToError.l)
; Renvoie l'ID de la dernière fenêtre créer
; WindowID : WindowID() de la fenêtre en cours, celle devant être au premier plan
; TimeToError : Temps en ms maximum avant de renvoyer une erreur
Time = GetTickCount_()
Repeat
LastWindowID = GetForegroundWindow_()
If GetTickCount_() - Time > TimeToError
ProcedureReturn 0
EndIf
Until LastWindowID <> WindowID And LastWindowID <> 0
ProcedureReturn LastWindowID
EndProcedure
OpenWindow(0, 200, 200, 200, 200, 0, "Test")
RunProgram("Explorer.exe")
ID = GetLastWindow(WindowID(), 10000)
If ID
Debug "ID du programme lancé = " + Str(ID)
Else
Debug "Impossible de trouver la une nouvelle fenêtre"
EndIf
Dernière modification par Le Soldat Inconnu le mar. 02/mars/2004 12:56, modifié 1 fois.
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Pour ceux qui veulent savoir ou j'en suis, c'est ici :
http://perso.wanadoo.fr/lesoldatinconnu ... loreur.zip
et ça marche, je suis en train de faire de l'esthétique pour que ce soit joli
http://perso.wanadoo.fr/lesoldatinconnu ... loreur.zip
et ça marche, je suis en train de faire de l'esthétique pour que ce soit joli
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
une amélioration pour éviter les problèmes :
Code : Tout sélectionner
NewList Liste_Fenetres()
Procedure.l RunProgramEx(NomFichier$, Parametre$, RepertoireCourant$, Options)
ClearList(Liste_Fenetres())
; Fenêtre au premier plan
WindowID = GetForegroundWindow_()
; On liste les fenêtres ouvertes
hWnd.l = FindWindow_( 0, 0 )
While hWnd <> 0
If GetwindowLong_(Hwnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
AddElement(Liste_Fenetres())
Liste_Fenetres() = hWnd
EndIf
hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
Wend
; On lance le programme
RunProgram(NomFichier$, Parametre$, RepertoireCourant$, Options)
; On cherche l'ID du la fenêtre créée
Time = GetTickCount_()
Repeat
LastWindowID = GetForegroundWindow_()
If GetTickCount_() - Time > 5000
ProcedureReturn 0
EndIf
If LastWindowID <> 0 And LastWindowID <> WindowID
; On compare avec la liste des fenêtres qui étaient ouvertes
ResetList(Liste_Fenetres())
While NextElement(Liste_Fenetres())
If LastWindowID = Liste_Fenetres()
WindowID = LastWindowID
EndIf
Wend
EndIf
Until LastWindowID <> 0 And LastWindowID <> WindowID And GetwindowLong_(LastWindowID, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
ProcedureReturn LastWindowID
EndProcedure
ID = RunProgramEx("Explorer.exe", "", "", 0)
If ID
Debug "ID du programme lancé = " + Str(ID)
Else
Debug "Impossible de trouver la une nouvelle fenêtre"
EndIf
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]