Jump to content
chriswaldeck

WinActive Dual Monitor

Recommended Posts

chriswaldeck

I am capturing data from a web page as soon as it opens. The problem is I am running a dual screen setup and the script don't capture the data when the window is opened up in the non default monitor. On the default monitor it works fine.

Func Monitor()

Local $hTimer = TimerInit()
            Do
            $fDiff = TimerDiff($hTimer)
        Until WinActive("ActivityDetail - Internet Explorer") Or $fDiff >= 5000     ; Only sees window on default monitor.
        If WinActive("ActivityDetail - Internet Explorer") Then                                 ; Only sees window on default monitor.
            Local $hWnd = WinGetHandle("ActivityDetail - Internet Explorer", "")
            Local $oIE = _IEAttach($hWnd, "hwnd")
            If @error Then
                $oIE.Quit()
            Else
                Local $oForm = _IEGetObjByName($oIE, "lblHeaderActRefValue")
                Local $Ref = _IEPropertyGet($oForm, "innertext")
                Local $oForm = _IEGetObjByName($oIE, "lblCompileDate")
                Local $Compile = _IEPropertyGet($oForm, "innertext")
                Local $oForm = _IEGetObjByName($oIE, "Table2")
                Local $Description = _IEPropertyGet($oForm, "innertext")
                $Description = StringTrimLeft($Description, 49)
                Local $iLength = StringLen($Description)
                Local $iPosition = StringInStr($Description, "Network Tag")
                Local $sString = StringTrimRight($Description, ($iLength - ($iPosition - 1)))
                Local $sString1 = StringStripWS($sString, $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES)
                Local $sString = $sString1
                Local $oForm = _IEGetObjByName($oIE, "lblDisruption")
                Local $Disruption = _IEPropertyGet($oForm, "innertext")
                If $flag <> $Ref And $Ref <> 0 and $Compile <> 0 Then
                    $ICount = _GUICtrlListView_GetItemCount($ListView1)
                    _GUICtrlListView_AddItem($ListView1, $Compile, $ICount)
                    _GUICtrlListView_AddSubItem($ListView1, $ICount, $Ref, 1)
                    _GUICtrlListView_AddSubItem($ListView1, $ICount, $Disruption, 2)
                    _GUICtrlListView_AddSubItem($ListView1, $ICount, $sString, 3)
                    _FileWriteLog(@ScriptDir & "\" & @YEAR & @MON & ".txt", $Ref & " " & $Disruption & " " & $sString & @CRLF)
                    $flag = $Ref
                EndIf
            EndIf
        EndIf

EndFunc   ;==>Monitor

 

Edited by chriswaldeck

Share this post


Link to post
Share on other sites
FrancescoDiMuro

@chriswaldeck
Does the script return any error? :)

Best Regards.


Click here to see my signature:

Spoiler

Thoughts:

  • I will always thank you for the time you spent for me.
    I'm here to ask, and from your response, I'd like to learn.
    By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

ALWAYS GOOD TO READ:

 

Share this post


Link to post
Share on other sites
chriswaldeck
23 minutes ago, Danp2 said:

Maybe the issue is as simple as the window doesn't have focus when on the 2nd monitor. Have you considered using WinExist instead?

Thank you buddy it works. It's so simple and I should have know that. What can I say? It was a long Friday.   :yawn:

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • Miliardsto
      By Miliardsto
      Hello . How to do that
      $regexp = starts from "abcdef" and after this could be anything in name
      WinActivate($regexp)
    • NiceBoy1234
      By NiceBoy1234
      I want to check if the cmd.exe + window of it is running, if it is running I want to put the window to the foreground, but somehow this does not work:
       
      Local $sCommandlinePath = "C:\Windows\system32\cmd.exe" RunCm() Func RunCm() If FileExists($sCommandlinePath) Then If ProcessExists("cmd.exe") Then If WinExists("[CLASS:ConsoleWindowClass]") And WinActive("[CLASS:ConsoleWindowClass]") Then Local $hCmdWindow = WinGetHandle("[CLASS:ConsoleWindowClass]") WinSetOnTop($hCmdWindow, "", $WINDOWS_ONTOP) EndIf Else Local $iCmMax = Run($sCommandlinePath, "", @SW_SHOWMAXIMIZED) EndIf EndIf EndFunc I started the command line and put another window above it then I started my script and it did not put the command line window to the foreground.
    • johnmcloud
      By johnmcloud
      Hi guys, this is my script:


      $File1 = @WorkingDir & "\Test1.txt" $File2 = @WorkingDir & "\Test2.txt" $FileNameEstension = StringTrimLeft($File2, StringInStr($File2, "\", 0, -1)) $FileNameOnly = StringTrimRight($FileNameEstension, 4) ClipPut(FileRead($File1)) Start($File2) func Start($File2) If Not FileExists($File2) Then Return 0 Return Run(@ComSpec & " /c " & "start " & FileGetShortName($File2),"",@SW_HIDE) endfunc If WinActive($FileNameOnly & " - Notepad") Then Send("^v") Send("^s") WinClose($FileNameOnly & " - Notepad")
      First, would know if you can merge this part into a single string:

      $FileNameEstension = StringTrimLeft($File2, StringInStr($File2, "\", 0, -1)) $FileNameOnly = StringTrimRight($FileNameEstension, 4)
      The first line give me Test.txt, the second remove the extension. I try to connect with "&" but not work.

      The script don't work becouse don't recognize the window name:
      WinActive($FileNameOnly & " - Notepad")
      I don't know what is the problem. Thanks for support
×