Jump to content

How do I detect a new IE instance with the same title and class? I'm new on Autoit. Please help me.


Recommended Posts

Posted

I am currently working on a program for work that when you open a specific page, a timer starts and records your progress. Its just that I was prompted to make the program able to track/detect multiple instances of same processes.

For example the window class is "MozillaWindowClass"(i use IE of course. This is just for example.) and the Title is "Create New Topic". I need to detect a new instance with the same title and class!

I can see on the autoit window info a different handle. how do I track them? I need help. Anyone please. I'm going crazy. when I try to tweek the code the 2nd timer starts at the same time as the first timer. im gonna go crazy!

Posted

You already mention a different handle, so use that.

you can grab a list of all windows with the same class, then get the handle and go from there.

What have you done so far?

  Reveal hidden contents

IUIAutomation - Topic with framework and examples

Au3Record.exe

Posted
  On 9/11/2017 at 10:58 AM, careca said:

You already mention a different handle, so use that.

you can grab a list of all windows with the same class, then get the handle and go from there.

What have you done so far?

Expand  

Thank you for the reply! Unfortunately I could not post the code since It's saved in my office PC. Do you have any ideas how I could call the handle? I use WinGetHandle but it only prompts me to give the "title" and "text". can you give me general ideas? Im sorry Im still new to this language.

 

Posted (edited)

Yes, it prompts for title, but you can put the class.

WinGetHandle("[CLASS:Notepad]")

text is optional

Edited by careca
  Reveal hidden contents

IUIAutomation - Topic with framework and examples

Au3Record.exe

Posted
  On 9/11/2017 at 11:06 AM, careca said:

Yes, it prompts for title, but you can put the class.

WinGetHandle("[CLASS:Notepad]")

text is optional

Expand  

I'm getting the idea now! the problem is that the Window info generates a unique handle for each open browser. Do you have any idea how i can call those new instances? its making my head spin. calling only one instance is easy since I only have to call it by title and class. but another one just hurts my head.

Posted

Let me try to understand what you're trying to do.

So the program detects a window with a certain title, and starts a timer

you open another window, same title, different handle, it starts another timer, and keeps the first one running

when one window closes, outputs the time the window was open.

Is it close?

 

  Reveal hidden contents

IUIAutomation - Topic with framework and examples

Au3Record.exe

Posted
  On 9/11/2017 at 11:35 AM, careca said:

Let me try to understand what you're trying to do.

So the program detects a window with a certain title, and starts a timer

you open another window, same title, different handle, it starts another timer, and keeps the first one running

when one window closes, outputs the time the window was open.

Is it close?

 

Expand  

yess! that's what i'm trying to do! basically for example I am making a presentation on one IE instance.

I plan to make another one on a separate IE instance to make my work faster. And my program needs to track the progress of that "new" IE window I open. The current program only tracks one work at a time so it's a hassle. I want to be able to do 2 or 3 at a time. but i need to know how to detect the newly opened windows. :(

Posted
;#RequireAdmin ;No console
#Region ;Wrapper
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Run_Tidy=y
#AutoIt3Wrapper_Res_SaveSource=y
#AutoIt3Wrapper_Run_Debug_Mode=n
;#AutoIt3Wrapper_Icon=
;#pragma compile(CompanyName, '')
;#pragma compile(ProductVersion, )
;#pragma compile(FileVersion, )
#pragma compile(x64, false)
;#AutoIt3Wrapper_Res_Comment=
;#AutoIt3Wrapper_Res_Icon_Add=
;#AutoIt3Wrapper_Res_Description=
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7
#EndRegion ;Wrapper
;======================================================================================
#include <Misc.au3>
#include <Timers.au3>
#include <Constants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
;=============================================================================
Opt("MustDeclareVars", 1)
Opt("TrayIconDebug", 1)
Opt("TrayMenuMode", 1)
Opt("TrayIconHide", 0)
Opt("GUIOnEventMode", 1)
Opt("TrayAutoPause", 0)
Opt("TrayOnEventMode", 1)
Opt("MouseCoordMode", 2)
;=============================================================================
Local $Winlist, $IniRead, $ExitItem
;=============================================================================
$ExitItem = TrayCreateItem("Close")
TrayItemSetOnEvent(-1, "Quit")
AdlibRegister('time', 1000)
;=============================================================================
While 1
    If WinExists("[CLASS:MozillaWindowClass]") Then
        $Winlist = WinList("[CLASS:MozillaWindowClass]")
        For $t = 1 To $Winlist[0][0]
            If StringInStr($Winlist[$t][0], 'Mozilla Firefox') <> 0 Then
                If FileExists(@ScriptDir & '\temp.ini') Then
                    $IniRead = IniReadSection(@ScriptDir & '\temp.ini', 'Windows')
                    If Not @error Then
                        If $IniRead[0][0] <> 0 Then
                            For $w = 1 To $IniRead[0][0]
                                If $IniRead[$w][1] = $Winlist[$t][1] Then
                                    ConsoleWrite(' - ' & @MSEC & @CRLF)
                                Else
                                    IniWrite(@ScriptDir & '\temp.ini', 'Windows', $Winlist[$t][1], $Winlist[$t][0])
                                EndIf
                            Next
                        EndIf
                    Else
                        IniWrite(@ScriptDir & '\temp.ini', 'Windows', $Winlist[$t][1], $Winlist[$t][0])
                    EndIf
                Else
                    IniWrite(@ScriptDir & '\temp.ini', 'Windows', $Winlist[$t][1], $Winlist[$t][0])
                EndIf
            EndIf
        Next
    EndIf
    Sleep(400)
WEnd
;=============================================================================
Func Time() ;WIP
    If FileExists(@ScriptDir & '\temp.ini') Then
        $IniRead = IniReadSection(@ScriptDir & '\temp.ini', 'Windows')
        If Not @error Then
            If $IniRead[0][0] <> 0 Then
                For $w = 1 To $IniRead[0][0]
                    ;$IniRead[$w][0]
                Next
            EndIf
        EndIf
    EndIf
EndFunc   ;==>Time
;======================================================================================
Func Quit()
    FileDelete(@ScriptDir & '\temp.ini')
    Exit
EndFunc   ;==>Quit
;======================================================================================

A work in progress, detects new windows, but doesn't have any timer yet.

  Reveal hidden contents

IUIAutomation - Topic with framework and examples

Au3Record.exe

Posted
  On 9/11/2017 at 1:07 PM, careca said:
;#RequireAdmin ;No console
#Region ;Wrapper
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Run_Tidy=y
#AutoIt3Wrapper_Res_SaveSource=y
#AutoIt3Wrapper_Run_Debug_Mode=n
;#AutoIt3Wrapper_Icon=
;#pragma compile(CompanyName, '')
;#pragma compile(ProductVersion, )
;#pragma compile(FileVersion, )
#pragma compile(x64, false)
;#AutoIt3Wrapper_Res_Comment=
;#AutoIt3Wrapper_Res_Icon_Add=
;#AutoIt3Wrapper_Res_Description=
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7
#EndRegion ;Wrapper
;======================================================================================
#include <Misc.au3>
#include <Timers.au3>
#include <Constants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
;=============================================================================
Opt("MustDeclareVars", 1)
Opt("TrayIconDebug", 1)
Opt("TrayMenuMode", 1)
Opt("TrayIconHide", 0)
Opt("GUIOnEventMode", 1)
Opt("TrayAutoPause", 0)
Opt("TrayOnEventMode", 1)
Opt("MouseCoordMode", 2)
;=============================================================================
Local $Winlist, $IniRead, $ExitItem
;=============================================================================
$ExitItem = TrayCreateItem("Close")
TrayItemSetOnEvent(-1, "Quit")
AdlibRegister('time', 1000)
;=============================================================================
While 1
    If WinExists("[CLASS:MozillaWindowClass]") Then
        $Winlist = WinList("[CLASS:MozillaWindowClass]")
        For $t = 1 To $Winlist[0][0]
            If StringInStr($Winlist[$t][0], 'Mozilla Firefox') <> 0 Then
                If FileExists(@ScriptDir & '\temp.ini') Then
                    $IniRead = IniReadSection(@ScriptDir & '\temp.ini', 'Windows')
                    If Not @error Then
                        If $IniRead[0][0] <> 0 Then
                            For $w = 1 To $IniRead[0][0]
                                If $IniRead[$w][1] = $Winlist[$t][1] Then
                                    ConsoleWrite(' - ' & @MSEC & @CRLF)
                                Else
                                    IniWrite(@ScriptDir & '\temp.ini', 'Windows', $Winlist[$t][1], $Winlist[$t][0])
                                EndIf
                            Next
                        EndIf
                    Else
                        IniWrite(@ScriptDir & '\temp.ini', 'Windows', $Winlist[$t][1], $Winlist[$t][0])
                    EndIf
                Else
                    IniWrite(@ScriptDir & '\temp.ini', 'Windows', $Winlist[$t][1], $Winlist[$t][0])
                EndIf
            EndIf
        Next
    EndIf
    Sleep(400)
WEnd
;=============================================================================
Func Time() ;WIP
    If FileExists(@ScriptDir & '\temp.ini') Then
        $IniRead = IniReadSection(@ScriptDir & '\temp.ini', 'Windows')
        If Not @error Then
            If $IniRead[0][0] <> 0 Then
                For $w = 1 To $IniRead[0][0]
                    ;$IniRead[$w][0]
                Next
            EndIf
        EndIf
    EndIf
EndFunc   ;==>Time
;======================================================================================
Func Quit()
    FileDelete(@ScriptDir & '\temp.ini')
    Exit
EndFunc   ;==>Quit
;======================================================================================

A work in progress, detects new windows, but doesn't have any timer yet.

Expand  

Thanks so much! you've been a big help!

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...