Hallole Zusammen,
jetzt bin ich geplättet: seit neuestem muss mein Script mit Adminrechten ausgeführt werden, damit es Winmove() ausführt.
Starte ich das Script im SciTE mit F5 ohne Admin werden die Fenster nicht verschoben. Das gleiche gilt, wenn ich das Script kompiliere
und als *.exe starte. Es wird die *.exe zwar ausgeführt aber die Winmove-Funktionen nicht, d.h. die Fenster werden nicht verschoben.
Hat jemand eine Idee wieso WinMove() erhöhte Rechte benötigt?
Spoiler anzeigen
; Das Programm soll nur bestimmte Fenster an eine definierte Position verschieben.
Es kann mit Parameter(die Handles der zu verschiebenden Fenster) aus einer anderen Anwendung heraus gestartet werden oder als Standalone-Version.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile_x64=WindowReposit.exe
#AutoIt3Wrapper_Res_Fileversion=1.0.0.16
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=2018 by HaSc
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <AutoItConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <Misc.au3>
If $CmdLine[0] > 0 then
Global $hWnd = $CmdLine[0] ; ist die Anzahl der Parameter der übergebenen Handles der Keepass-Fenster
Global $hWnd1 = HWnd($CmdLine[1]) ; ist Parameter 1
Global $hWnd2 = HWnd($CmdLine[2]) ; ist Parameter 2
Global $hWnd3 = HWnd($CmdLine[3]) ; ...
;Local $aPos = WinGetPos("AdminTool by HS 2017")
;_ArrayDisplay($apos, "1D display")
WinMove("AdminTool by HS 2017", "", 2963, 1, 450, 480)
Sleep(200)
WinMove("Standard", "", 1914, 0, 1042, 1073)
Sleep(300)
WinSetState("Standard", "", @SW_MINIMIZE)
Sleep(100)
WinMove($hWnd1, "Bla.kdbx - KeePass", 2728, 493, 450, 580)
Sleep(200)
WinMove($hWnd2, "Bla.kdbx - KeePass", 2963, 493, 450, 580)
Sleep(200)
WinMove($hWnd3, "Bla.kdbx - KeePass", 3270, 493, 450, 580)
Sleep(200)
WinMove("Skype for Business", "", 3432, 1, 402, 1065)
sleep(200)
exit
Else
Local $aWinList = WinList("[REGEXPTITLE:(?i)(Bosch.*Keepass*)]") ; Winlist erstellt eine Liste aller geöffneten Fenster und dann wird Array nach Indizes mit Namen Keepass gefiltert
Global $hWnd1 = $aWinList[1][1] ; ist Parameter 1
Global $hWnd2 = $aWinList[2][1] ; ist Parameter 2
Global $hWnd3 = $aWinList[3][1] ;
WinMove("AdminTool by HS 2017", "", 2963, 1, 450, 480)
Sleep(200)
WinMove("Standard", "", 1914, 0, 1042, 1073)
Sleep(300)
WinSetState("Standard", "", @SW_MINIMIZE)
Sleep(300)
WinMove($hWnd1, "Bla.kdbx - KeePass", 2728, 493, 450, 580)
Sleep(300)
WinMove($hWnd2, "bla.kdbx - KeePass", 2963, 493, 450, 580)
Sleep(300)
WinMove($hWnd3, "bla.kdbx - KeePass", 3270, 493, 450, 580)
Sleep(300)
WinMove("Skype for Business", "", 3432, 1, 402, 1065)
sleep(200)
exit
EndIf