Hab ein kleines Tool geschrieben für ein gewünschtes Fenster auf die oberste Ebene zu setzen, damit es nicht von anderen Fenstern überdeckt wird.
Im Kontext gibt es auch eine Option für die Fenster-Größe und Fenster-Position an 3 verschiedenen Positionen in einer ini-Datei zu sichern. (ini-Datei wird beim Start erstellt, sollte sie nicht existieren)
Position muss zuerst gesichert werden, sonst wird bei der Wiederherstellung das Fenster einfach auf 0,0 gesetzt.
C: PushUp
#include <GUIConstantsEx.au3>
#include <FontConstants.au3>
#include <AutoItConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPIDlg.au3>
Local Const $iniPushUp = @ScriptDir &"\ini\PushUp.ini"
If FileExists($iniPushUp) = 0 Then ; Falls Ini-Datei nicht existiert erstellen
DirCreate(@ScriptDir &"\ini")
IniWrite($iniPushUp, "Erstellt", "Erstellt", "Ja")
EndIf
Opt("WinTextMatchMode", 2) ; Methode zur Fenstertitelerkennung
Opt("MouseCoordMode", 0)
Global $FensterTitel="FensterTitel" ; Hier kann ein Standard Fenster eingegeben werden
Global $Handschalter=0 ; 1 = Lade MEINE Excel-Tabelle
; 0 = Standard Wert, sollte 0 bleiben
Global $TOP = 335920
Global $Test = "Anwärter"
Global $btn_menu, $btn_Hoch, $FFilter, $Beenden, $FGrMen, $line, $FBreite_1Sichern, $FBreite_2Sichern, _
$FBreite_3Sichern, $FBreite_1herstellen, $FBreite_2herstellen, $FBreite_3herstellen, _
$Tool_Position, $Tool_Sichern, $Fenster_Sichern, $Fenster_Herstellen, $OptExit, $OptAnwarter
Global $SchalterHoch=1
Local $hWnd = WinGetHandle($FensterTitel)
WinSetOnTop($hWnd, "", 0)
PushUpMain()
Func PushUpMain()
Global $hGui = GUICreate("", 80, 20, 0, 0, $WS_POPUP)
WinSetOnTop($hGui, "", $WINDOWS_ONTOP)
$btn_Hoch = GUICtrlCreateButton("Vordergrund", 0, 0, 80, 20)
GUICtrlSetFont($btn_Hoch, 8, $FW_NORMAL, $GUI_FONTNORMAL, "Comic Sans Ms")
GUICtrlSetColor($btn_Hoch, 0xFF0000)
GUICtrlSetBkColor($btn_Hoch, 0x400000)
; _ Context_Menü ___________________________________
$btn_menu = GUICtrlCreateContextMenu($btn_Hoch)
$FFilter = GUICtrlCreateMenuItem("Fenster Filter", $btn_menu)
$line = GUICtrlCreateMenuItem("", $btn_menu)
$FBreite_1herstellen = GUICtrlCreateMenuItem("Pos.1 Herstellen", $btn_menu) ; pos Herstellen
$FBreite_2herstellen = GUICtrlCreateMenuItem("Pos.2 Herstellen", $btn_menu)
$FBreite_3herstellen = GUICtrlCreateMenuItem("Pos.3 Herstellen", $btn_menu)
$line = GUICtrlCreateMenuItem("", $btn_menu)
$FGrMen = GUICtrlCreateMenu("Posi Sichern", $btn_menu) ; Pos sichern
$FBreite_1Sichern = GUICtrlCreateMenuItem("Pos.1 Sichern", $FGrMen)
$FBreite_2Sichern = GUICtrlCreateMenuItem("Pos.2 Sichern", $FGrMen)
$FBreite_3Sichern = GUICtrlCreateMenuItem("Pos.3 Sichern", $FGrMen)
$line = GUICtrlCreateMenuItem("", $btn_menu)
$Beenden = GUICtrlCreateMenuItem("Beenden", $btn_menu)
Local $iniReadExcelExit = IniRead($iniPushUp, "Einstellungen", "ExcelExit", "")
Local $iniReadAnwarter = IniRead($iniPushUp, "Einstellungen", "Anwarter", "")
If $iniReadExcelExit = 1 Then GUICtrlSetState($OptExit, $GUI_CHECKED)
If $iniReadAnwarter = 1 Then GUICtrlSetState($OptAnwarter, $GUI_CHECKED)
; __________________________________________________________________________________________________
GUISetState(@SW_SHOW, $hGui)
While 1
Switch GUIGetMsg()
Case $OptAnwarter
Local $irAnw = IniRead($iniPushUp, "Einstellungen", "Anwarter", "")
If $irAnw = 0 Then
GUICtrlSetState($OptAnwarter, $GUI_CHECKED)
IniWrite($iniPushUp, "Einstellungen", "Anwarter", 1)
ElseIf $irAnw = 1 Then
GUICtrlSetState($OptAnwarter, $GUI_UNCHECKED)
IniWrite($iniPushUp, "Einstellungen", "Anwarter", 0)
EndIf
; ________________________________________________________________________________________________
Case $OptExit
Local $irOE = IniRead($iniPushUp, "Einstellungen", "ExcelExit", "")
If $irOE = 0 Then
GUICtrlSetState($OptExit, $GUI_CHECKED)
IniWrite($iniPushUp, "Einstellungen", "ExcelExit", 1)
ElseIf $irOE = 1 Then
GUICtrlSetState($OptExit, $GUI_UNCHECKED)
IniWrite($iniPushUp, "Einstellungen", "ExcelExit", 0)
EndIf
; ___________________________________________________________________________________
Case $FBreite_1Sichern
$Fenster_Sichern = "Fenster_Position_1"
Fenster_Sichern()
Case $FBreite_2Sichern
$Fenster_Sichern = "Fenster_Position_2"
Fenster_Sichern()
Case $FBreite_3Sichern
$Fenster_Sichern = "Fenster_Position_3"
Fenster_Sichern()
; ___________________________________________________________________________________
Case $FBreite_1herstellen
$Fenster_Herstellen = "Fenster_Position_1"
Fenster_Herstellen()
Case $FBreite_2herstellen
$Fenster_Herstellen = "Fenster_Position_2"
Fenster_Herstellen()
Case $FBreite_3herstellen
$Fenster_Herstellen = "Fenster_Position_3"
Fenster_Herstellen()
; ___________________________________________________________________________________
Case $FFilter
HotKeySet("{ENTER}", "Ubernehmen")
Global $Fenstername = GUICtrlCreateInput("", 3, 5, 75, 20)
GUICtrlSetState($Fenstername, $GUI_FOCUS)
; ___________________________________________________________________________________
Case $btn_Hoch
Btn_Hoch()
; ___________________________________________________________________________________
Case $Beenden, $GUI_EVENT_CLOSE
Local $irOE = IniRead($iniPushUp, "Einstellungen", "ExcelExit", "")
$hWnd = WinGetHandle($FensterTitel)
If $irOE = 1 Then ; If ExcelExit = 1
If WinExists($Test) Then ; Nur für meine Tabelle (richtiger Name)
WinSetState($hWnd, "", @SW_HIDE) ; Alle anderen Fenster überspringen diese Option
WinSetState($hWnd, "", @SW_SHOW)
WinWaitActive($hWnd, 20)
; .
SendKeepActive($hWnd)
Send("!D")
Send("S")
SendKeepActive("")
WinClose($hWnd) ; Excel beenden wenn Option an ist
EndIf
Else
If WinExists($Test) Then
WinSetState($hWnd, "", @SW_HIDE)
WinSetState($hWnd, "", @SW_SHOW)
SendKeepActive($hWnd)
Send("!D")
Send("S")
SendKeepActive("")
WinSetState($hWnd, "", @SW_MINIMIZE) ; Minimieren wenn Option aus ist
WinSetOnTop($hWnd, "", 0)
EndIf
EndIf
ExitLoop
EndSwitch
WEnd
GUIDelete($hGui)
EndFunc
Func Ubernehmen()
Global $FensterTitel = GUICtrlRead($Fenstername, $GUI_READ_EXTENDED )
GUICtrlSetState($Fenstername, $GUI_HIDE)
Sleep(500)
HotKeySet("{ENTER}")
EndFunc
Func Btn_Hoch()
If $SchalterHoch = 0 Then
$SchalterHoch= 1
$hWnd = WinGetHandle($FensterTitel)
; ==============================================
If WinExists($Test) Then
WinSetState($hWnd, "", @SW_HIDE)
WinSetState($hWnd, "", @SW_SHOW)
WinWaitActive($hWnd, 20)
; .
SendKeepActive($hWnd)
Send("!D")
Send("S")
SendKeepActive("")
EndIf
; ==============================================
GUICtrlSetColor($btn_Hoch, 0xFF0000)
GUICtrlSetBkColor($btn_Hoch, 0x400000)
GUICtrlSetData($btn_Hoch, "Hintergrund")
WinSetState($hWnd, "", @SW_MINIMIZE)
WinSetOnTop($hWnd, "", 0)
GUICtrlSetFont($btn_Hoch, 8, $FW_THIN, $GUI_FONTNORMAL, "Comic Sans Ms")
ElseIf $SchalterHoch = 1 Then
$SchalterHoch = 0
GUICtrlSetData($btn_Hoch, "Vordergrund")
GUICtrlSetColor($btn_Hoch, 0x000000)
GUICtrlSetBkColor($btn_Hoch, 0x00FF00)
GUICtrlSetFont($btn_Hoch, 9, $FW_HEAVY, $GUI_FONTNORMAL, "Comic Sans Ms")
$hWnd = WinGetHandle($FensterTitel)
If WinExists($hWnd) Then
WinSetState($hWnd, "", @SW_RESTORE)
WinSetOnTop($hWnd, "", 1)
Else
MsgBox($Top, "", "Kein Fenster aktiviert, (Rechtsklick auf Tool und dann bei Fenster Filter den Namen eingeben.")
EndIf
EndIf
EndFunc
Func Fenster_Sichern()
Global $aPos = WinGetPos($FensterTitel)
IniWrite($iniPushUp, $Fenster_Sichern, "0", $aPos[0])
IniWrite($iniPushUp, $Fenster_Sichern, "1", $aPos[1])
IniWrite($iniPushUp, $Fenster_Sichern, "2", $aPos[2])
IniWrite($iniPushUp, $Fenster_Sichern, "3", $aPos[3])
EndFunc
Func Fenster_Herstellen()
Local $Posi1_X = IniRead($iniPushUp, $Fenster_Herstellen, "0", "")
Local $Posi1_Y = IniRead($iniPushUp, $Fenster_Herstellen, "1", "")
Local $Posi1_B = IniRead($iniPushUp, $Fenster_Herstellen, "2", "")
Local $Posi1_H = IniRead($iniPushUp, $Fenster_Herstellen, "3", "")
WinActivate($hWnd)
WinMove($hWnd, "", $Posi1_X, $Posi1_Y, $Posi1_B, $Posi1_H)
EndFunc
Alles anzeigen