Hallo,
ich habe da ein Problem mit dem Positionieren von Internet Explorer Fenstern
Das Script =>
-) öffnet 3 LINKS im browser (wenn diese nicht bereits offen sind)
-) such nach HWND der drei offenen LINKS
-) Positioniert die drei LINKS auf dem Bildschirm.
Das Problem ist, dass das Positionieren der der Browser-Fenster IRGENDWIE nicht klappt.
Mal funktioniert es, dass alle DREI Fenster in die richtige Position (untereinander) gebracht werden,
und ein anderes mal wird vielleicht nur ein Fenster positioniert, und manchmal gar keines.
Ich habe gedacht, dass ich eigentlich einen recht robusten CODE geschrieben habe - tja.
Umso mehr würde ich gerne erfahren, wieso es nicht klappt.
Bitte um Eure Hilfe!
Danke im Voraus!
BG, lio
AutoIt
; options
Opt("WinTitleMatchMode", -2)
Opt("MustDeclareVars", 1)
#include <Array.au3>
#include <MsgBoxConstants.au3>
; MsgBox Icons
Global $iMBtopStop = 262160
Global $iMBtopExclam= 262192
Global $iMBtopInfo = 262208
; vars
Global $vTemp
Global $vPosWidth
Global $vPosHeight
Global $vPosX
Global $vPosY
; timeout [seconds]
Global $iTimeOutMini = 1
Global $iTimeOutMidi = 3
Global $iTimeOutMiddle = 5
; delay time [milliseconds]
Global $iDelayMini = 1000
Global $iDelayMidi = 3000
Global $iDelayMiddle = 5000
; progs at work
Local $sBrowser = "C:\Program Files\Internet Explorer\iexplore.exe"
Local $sVLC = "C:\Program Files\VideoLAN\VLC\vlc.exe"
; window size (width and height)
Global $iWindowWidth = @DesktopWidth
Global $iWindowHeight = @DesktopHeight / 3
Global $aLinks[3][8]
$aLinks[0][0] = "www.wetter.at" ; link
$aLinks[0][1] = "Österreich Wetter :: wetter.at" ; windowtitle
$aLinks[0][2] = 0 ; for hwnd later
$aLinks[0][3] = 0 ; windowposition x
$aLinks[0][4] = 0 ; windowposition y
$aLinks[0][5] = $iWindowWidth ; windowsize (width)
$aLinks[0][6] = $iWindowHeight ; windowsize (height)
$aLinks[0][7] = $sBrowser ; program to open the link
$aLinks[1][0] = "http://search.yahoo.com/" ; link
$aLinks[1][1] = "Yahoo Search - Web Search" ; windowtitle
$aLinks[1][2] = 0 ; for hwnd later
$aLinks[1][3] = 0 ; windowposition x
$aLinks[1][4] = $iWindowHeight * 2 + 1 ; windowposition y
$aLinks[1][5] = $iWindowWidth ; windowsize (width)
$aLinks[1][6] = $iWindowHeight ; windowsize (height)
$aLinks[1][7] = $sBrowser ; program to open the link
$aLinks[2][0] = "http://orf.at/" ; link
$aLinks[2][1] = "news.ORF.at" ; windowtitle
$aLinks[2][2] = 0 ; for hwnd later
$aLinks[2][3] = 0 ; windowposition x
$aLinks[2][4] = $iWindowHeight + 1 ; windowposition y
$aLinks[2][5] = $iWindowWidth ; windowsize (width)
$aLinks[2][6] = $iWindowHeight ; windowsize (height)
$aLinks[2][7] = $sBrowser ; progr
Func searchWinTitles_GetHWND($sSubString)
; | Search for window-title in task-manager
; | return title and hwnd if found
; exit is search-string is empty
If $sSubString = "" Then
MsgBox($iMBtopStop, "SEARCH FOR TITLES", "no search pattern found: exiting!", $iTimeOutMidi)
Exit
EndIf
local $aWinList = WinList()
local $aWindowArray[0][2]
local $aTempArray[1][2]
local $iIndex = -1
local $aResult[1][2]
; create array of non empty window-titles
For $i = 1 To $aWinList[0][0]
If $aWinList[$i][0] <> "" Then
$aTempArray[0][0]= $aWinList[$i][0]
$aTempArray[0][1]= $aWinList[$i][1]
_ArrayAdd($aWindowArray, $aTempArray)
EndIf
Next
; search for substring in array: CASE SENSITIVE
$iIndex = _ArraySearch($aWindowArray, $sSubString, 0, 0, 0, 4)
If $iIndex <> - 1 Then
MsgBox($iMBtopInfo, "TITLE FOUND", $sSubString & @CRLF & _
"Name: " & $aWindowArray[$iIndex][0] & @CRLF & _
"Hwnd: " & $aWindowArray[$iIndex][1], $iTimeOutMini)
$aResult[0][0] = $aWindowArray[$iIndex][0] ; add title-name
$aResult[0][1] = $aWindowArray[$iIndex][1] ; add hwnd
; _ArrayDisplay($aResult)
; Return 2D array with title-name and hwnd
Return $aResult
Else
MsgBox($iMBtopStop, "TITLE NOT FOUND!", $sSubString, $iTimeOutMiddle)
Return -1
EndIf
EndFunc
; check if links are available, else open links in browser - search is case sensitive
for $i = 0 To ubound($aLinks) - 1
If not (WinExists($aLinks[$i][1])) Then
ShellExecute($aLinks[$i][7], $aLinks[$i][0])
sleep($iDelayMidi)
MsgBox($iMBtopInfo, "OPEN LINK", $aLinks[$i][0], $iTimeOutMini)
sleep($iDelayMidi)
Else
MsgBox($iMBtopInfo, "LINK FOUND", $aLinks[$i][0],
$iTimeOutMini)
sleep($iDelayMiddle)
EndIf
Next
; search for window-titles and get HWND
for $i = 0 to UBound($aLinks) -1
$vTemp = searchWinTitles_GetHWND($aLinks[$i][1])
if IsArray($vTemp) Then
$aLinks[$i][2] = $vTemp[0][1]
Else
MsgBox($iMBtopStop, "get hwnd", $aLinks[$i][1] & " HWND NOT
FOUND!", $iTimeOutMiddle)
EndIf
Next
; set windows in position
WinMinimizeAll()
sleep(3000)
; set Links-windows in position
for $i = 0 to UBound($aLinks) - 1
$vTemp = $aLinks[$i][2] ; get hwnd
$vPosX = $aLinks[$i][3]
$vPosY = $aLinks[$i][4]
$vPosWidth = $aLinks[$i][5]
$vPosHeight = $aLinks[$i][6]
WinWait($vTemp, 60)
WinActivate($vTemp)
sleep(3000)
WinMove($vTemp, "", $vPosX, $vPosY, $vPosWidth, $vPosHeight)
Sleep(3000)
Next
MsgBox($iMBtopExclam, "", "FIN 1", $iTimeOutMidi)
Alles anzeigen