MichaelCrawley Posted June 13, 2023 Posted June 13, 2023 (edited) We a have computer that display 8 differernt web pages and I would like them move to a specfic screen in order then go full screen. I set this as only 3 generic web pages . Chrome is our primary browser so that is what I have to use. I have scrubbed all the company specific stuff off for the most part but I want to open 8 different web pages (google docs) and I want to display them on 8 different monitors in order. The resolution on my monitors is 2160. So am looking to move one screen to Screen 1 to 0 Screen to to 2160 and screen 3 to 4320... and so on. I tried WinMove but I don't think that right or im doing it wrong. I would like to wrap it around a fucntnion moveScreen so I can re-use in the future. Is there an AUTIT option for this? >>I am a beginner so I am not really looking for the solution just enough to get me started expandcollapse popup#include <GUIConstantsEx.au3> #include <ButtonConstants.au3> #include <WindowsConstants.au3> #include <MsgBoxConstants.au3> #include <Excel.au3> Global $exitChrome Global $moveScreen Global $terminate Global $hGui = GUICreate('Au3Gui', 180, 50, -1, -1, -1, $WS_EX_TOPMOST) GUISetState(@SW_SHOW, $hGui) ; Button to opens web pages and places them where on screen in a specific order Global $idButton_OpenQCDM = GUICtrlCreateButton("QCDM", 95, 10, 80, 30) GUICtrlSetBkColor(-1, 0x99B4D1) ; Button to close chrome Global $idButton_Close = GUICtrlCreateButton("Close", 5, 10, 80, 30) GUICtrlSetBkColor(-1, 0x99B4D1) While 1 Switch GUIGetMsg() ;Opens Webpages Chrome Case $idButton_OpenQCDM ;opens web pages opensScreens() moveScreen() ;exits application Case $idButton_Close ;Close Chrome Exit EndSwitch WEnd Func exitChrome() $runString = StringFormat("TASKKILL /F /IM chrome.exe /T") EndFunc ;terminates script Func Terminate() Exit EndFunc func opensScreens() # Screen 1 Finance Run ('"C:\Program Files\Google\Chrome\Application\chrome.exe" www.amazon.com --start-fullscreen --new-window --force-device-scale-factor=1.15') # Screen 2 VPS Run ('"C:\Program Files\Google\Chrome\Application\chrome.exe" www.google.com @sw_maximize --start-fullscreen --new-window --force-device-scale-factor=1.15') # Screen 3 Quality Run ('"C:\Program Files\Google\Chrome\Application\chrome.exe" www.yahoo.com --start-fullscreen --new-window --force-device-scale-factor=1.15') EndFunc Func moveScreen() # Delay to let all browser windows open Sleep (10000) # Position Screens Moving Sreens to proper locations # Screen 1 sleep (5000) # Screen 2 sleep (5000) WinMove( "Google - Google Chrome", " ", 0, 0, 0, 0) WinSetState("Google - Google Chrome", "", @SW_MAXIMIZE) # Screen 3# Sleep (5000) EndFunc suppoted browser. Edited June 13, 2023 by MichaelCrawley
ioa747 Posted June 14, 2023 Posted June 14, 2023 take a look at _WinAPI_EnumDisplayMonitors() _WinAPI_MonitorFromWindow() alternatively you can also use a shortcut to align windows to screens with the tool below https://dualmonitortool.sourceforge.net/dmt_swapscreen.html I know that I know nothing
MichaelCrawley Posted June 14, 2023 Author Posted June 14, 2023 Thanks very much appreciated... although it may take me a moment to fully understand how to do it.
Solution ioa747 Posted June 15, 2023 Solution Posted June 15, 2023 expandcollapse popup#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #include <WindowsConstants.au3> #include <WinAPIGdi.au3> Global $hGui = GUICreate('Au3Gui', 500, 500, -1, -1, $WS_OVERLAPPEDWINDOW) WinSetTrans($hGui, '', 100) Global $Label1 = GUICtrlCreateLabel("", 200, 200, 300, 300) GUICtrlSetFont(-1, 200, 900, 0, "MS Sans Serif") GUISetState(@SW_SHOW, $hGui) Global $aMon = _GetMonitorsArray() If IsArray($aMon) Then For $i = 1 To $aMon[0][0] WinMove($hGui, "", $aMon[$i][1], $aMon[$i][2]) GUISetState(@SW_MAXIMIZE, $hGui) GUICtrlSetData($Label1, $i) ConsoleWrite(" index: " & $i & @CRLF) ConsoleWrite("- [0]=handle=" & $aMon[$i][0] & @CRLF) ConsoleWrite("- [1]=left=" & $aMon[$i][1] & @CRLF) ConsoleWrite("- [2]=top=" & $aMon[$i][2] & @CRLF) ConsoleWrite("- [3]=width=" & $aMon[$i][3] & @CRLF) ConsoleWrite("- [4]=height=" & $aMon[$i][4] & @CRLF) ConsoleWrite("" & @CRLF) _GetMonitorInfo($hGui) Sleep(2000) Next EndIf ;---------------------------------------------------------------------------------------- Func _GetMonitorInfo($hWindow) Local $hMonitor = _WinAPI_MonitorFromWindow($hWindow, $MONITOR_DEFAULTTONULL) Local $aData = _WinAPI_GetMonitorInfo($hMonitor) ConsoleWrite('MonitorInfo **********************' & @CRLF) If Not @error Then ConsoleWrite('Handle: ' & $hMonitor & @CRLF) ConsoleWrite('Rectangle: ' & DllStructGetData($aData[0], 1) & ', ' & DllStructGetData($aData[0], 2) & ', ' & DllStructGetData($aData[0], 3) & ', ' & DllStructGetData($aData[0], 4) & @CRLF) ConsoleWrite('Work area: ' & DllStructGetData($aData[1], 1) & ', ' & DllStructGetData($aData[1], 2) & ', ' & DllStructGetData($aData[1], 3) & ', ' & DllStructGetData($aData[1], 4) & @CRLF) ConsoleWrite('Primary: ' & $aData[2] & @CRLF) ConsoleWrite('Device name: ' & $aData[3] & @CRLF) ConsoleWrite("**********************************" & @CRLF & @CRLF) EndIf EndFunc ;==>_GetMonitorInfo ;---------------------------------------------------------------------------------------- Func _GetMonitorsArray() Local $aPos, $aData = _WinAPI_EnumDisplayMonitors() If IsArray($aData) Then ReDim $aData[$aData[0][0] + 1][5] For $i = 1 To $aData[0][0] $aPos = _WinAPI_GetPosFromRect($aData[$i][1]) For $j = 0 To 3 $aData[$i][$j + 1] = $aPos[$j] Next Next EndIf Return $aData EndFunc ;==>_GetMonitorsArray ;---------------------------------------------------------------------------------------- Zedna 1 I know that I know nothing
MichaelCrawley Posted July 13, 2023 Author Posted July 13, 2023 Oh my, I did not even see this I really apreciate the work you put into this. This is awesome, If you don't mind I am going to save this reuse it in other areas because I certain I will use it. I am going to see if I can break it down into smaller componets to ame sure I understand it. ioa747 1
ioa747 Posted August 10, 2023 Posted August 10, 2023 For thread information. New version with mouse consistency. I know that I know nothing
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now