Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249666 (11102)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Position und Größe von fremden Fester ermitteln
Daniel Hecken
| Datum:01.06.01 20:05 (privat@daniel-hecken.de) |
Ich brauche für mein aktuelles Programm eine Möglich, die Postion und Größe eines anderen Anwendungsprogramm zu ermitteln. Den genauen Namen des Anwendungsfenster hab ich über addwindows $ herausbekommen, klappt auch zuverlässig. Wenn es hilft: Das andere Programm, von dem die Postion des Hauptfenster ermittelt wird, ist ebenfalls in Profan programmiert, und jetzt knallts, es ist das selbe Programm. Am Anfang soll das Programm überprüfen, ob es schon einmal gestartet ist. Ist es schon vier Mal geöffnet, soll es sofort beendet werden. Das klappt schon GANZ gut !!! Nun brauch ich die Positionen der übrigen fenster um eine "freie" Stelle auf den Bildschirm zu finden. Beides hab ich in der ersten Version über Einträge in der Systemregistrierung realiesiert, aber 1. Sollte das Programm abstürzen, wird es ja nicht zu ende geführt, und damit das schließen nicht in der Registrierung geschrieben ( was bedeutet, das das Fenster des nächsten Programm an der falschen Stelle erscheint ) 2. Bin ich kein Freund von INI , und REG Daten. Ich denke, das es von Vorteil sein dürfte, das das Fenster immer gleich groß sein wird ( 400 x 300 Pixel ) und von Benutzer nicht vergrößerbar und nicht schiebbar ist. mfg Daniel
Thorsten
| Datum:02.06.01 09:19 (galaxy@mrk-soft.de) |
Folgende Procedute ermittelt von einem beliebigen Fenster die Positionen:
    Def GetWindowRect(2) !"USER32","GetWindowRect"
    Declare Rect#, left%, top%, right%, bottom%

    proc GetWindowPos
     parameters fenster$
     declare fremdfenster&
     Dim Rect#,16

     If equ(val(fenster$),0)
      Let FremdFenster& = @FindWindow(fenster$)
     Else
      fremdfenster& = val(fenster$)
     Endif

     GetWindowRect(FremdFenster&,Rect#)
     Let Left%   = @Word(Rect#,0)
     Let Top%    = @Word(Rect#,4)
     Let Right%  = @Word(Rect#,8)
     Let Bottom% = @Word(Rect#,12)
     Dispose Rect#
    Endproc
übergebe der Proc GetWindowPos einfach den Namen des Fensters oder das Handel selber, in den 4 Variabeln steht dann die Position. Gruss Thorsten
Daniel Hecken
| Datum: 02.06.01 19:05 (webmaster@daniel-hecken.de) |
Hallo Thomas, vielen dank für deine Antwort. Es war genau das was ich gesucht habe, nein es war mehr als ich gesucht habe. Weiter so ! bis dann Daniel

| Zurück zur Übersicht