Position fenetre d'un programme tiers

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Position fenetre d'un programme tiers

Message par Atomo »

Salut à tous, je suis à la recherche d'un code me permettant de connaitre les coordonnées X et Y d'une nouvelle fenetre que j'ouvrirai avec runprogram (une feuille excel ou un logiciel de gravure par exemple).

Merci de bien vouloir m'aider :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Tiens. Voilà un petit code que j'avais fait pour lancer le bloc-notes.

En fait, ça se résume à lancer ton prog avec RunProgram(), à utiliser FindWindow_(Nom, classe) pour trouver le handle de la fenêtre, et à récupérer les coordonnées x et y de la fenêtre dans une structure "Rect" avec GetWindowRect_(Handle, @Variable).

Code : Tout sélectionner

Global rect.RECT

If FindWindow_("Notepad",#Null) = 0
  RunProgram("Notepad") : Delay(100)
  hNotepad = FindWindow_("Notepad",#Null)
  
  If OpenPreferences("RunNotePad.cfg") = 0 ; Première utilisation
    CreatePreferences("RunNotePad.cfg")
    PreferenceGroup("Last_Use")
    WritePreferenceLong("Pos_X", 468)
    WritePreferenceLong("Pos_Y", 32)
    WritePreferenceLong("Width",300)
    WritePreferenceLong("Height",200)
    ClosePreferences()
    SetWindowPos_(hNotepad,#HWND_TOPMOST,468,32,300,200,#SWP_SHOWWINDOW)
  Else
    PreferenceGroup("Last_Use")
    Pos_X = ReadPreferenceLong("Pos_X",468)
    Pos_Y = ReadPreferenceLong("Pos_Y",32)
    Width = ReadPreferenceLong("Width",300)
    Height = ReadPreferenceLong("Height",200)
    SetWindowPos_(hNotepad,#HWND_TOPMOST,Pos_X,Pos_Y,Width,Height,#SWP_SHOWWINDOW)
    ClosePreferences()
  EndIf
  Delay(200)
EndIf

Repeat
  GetWindowRect_(hNotepad,@rect)
  If FindWindow_("Notepad",#Null) = 0
    CreatePreferences("RunNotePad.cfg")
    PreferenceGroup("Last_Use")
    WritePreferenceLong("Pos_X", rect\left)
    WritePreferenceLong("Pos_Y", rect\top)
    WritePreferenceLong("Width",rect\right-rect\left)
    WritePreferenceLong("Height",rect\bottom-rect\top)
    ClosePreferences()
    End
  EndIf
Until hNotepad = 0
PS : C'est une vieille version. Pb 3.94
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message par Atomo »

Je te remercie pour ton aide Chris :P
Répondre