Sign in to follow this  
Followers 0
ofLight

Windows Automatic Updater

5 posts in this topic

I am trying to creat a Windows autoupdater that will open windows Update and begin installation, However i am Having a bit of a ruff start due to Windows not acting the same every time.

After "Microsoft Windows Update" is started I get one of 3 windows depending on the system that was used for the install.

What I need is the best Function for Looping in Autoit, using the While Command has been suggested but Aperantly I am not understanding how the Basic Syntax should look :whistle:

any Suggestions whould be apreciated

_WindowsUpdate('Windows update')

Func _WindowsUpdate($wup)

Run('"c:\program files\Internet explorer\IEXPLORE.EXE" http://update.microsoft.com', "", @SW_MAXIMIZE)

;see if 'Microsoft Windows Update' exsists

;if yes then try to make it the active window, if Unseccesfull

; scan for any of 3 windows and excecute command to close for

; particular window.

;Then try to make 'Microsoft Windows Update' active window again


There is always a butthead in the crowd, no matter how hard one tries to keep them out.......Volly

Share this post


Link to post
Share on other sites



I suggest you search google for general programming techniques like program control

Share this post


Link to post
Share on other sites

ok thisis what i have so far. Can anyone tell me why the function _Find01() is not executing??? im Stumped.

Opt("WinTitleMatchMode", 3) ;1=start, 2=subStr, 3=exact, 4=advanced

Global $pixel01 = Int(IniRead(".\PixelSearch01.ini","record01","PixelColor","-1"))
Global $chksum01 = Int(IniRead(".\PixelSearch01.ini","record01","PixelCheckSum","-1"))
Global $pixel02 = Int(IniRead(".\PixelSearch01.ini","record02","PixelColor","-1"))
Global $chksum02 = Int(IniRead(".\PixelSearch01.ini","record02","PixelCheckSum","-1"))

Global Const $SM_VIRTUALWIDTH = 78
Global Const $SM_VIRTUALHEIGHT = 79
;Global $pos[0] = 0, $pos[1] = 0
$VIRTUALDESKTOPWIDTH = DLLCall("user32.dll","int","GetSystemMetrics","int",$SM_VIRTUALWIDTH)
$VIRTUALDESKTOPWIDTH = $VIRTUALDESKTOPWIDTH[0]
$VIRTUALDESKTOPHEIGHT = DLLCall("user32.dll","int","GetSystemMetrics","int",$SM_VIRTUALHEIGHT)
$VIRTUALDESKTOPHEIGHT = $VIRTUALDESKTOPHEIGHT[0]

$var01 = EnvGet('PATH')
$var02 = Winactive('Microsoft Windows Update')
$var03 = WinActive('Security Warning')
;---------------------------------------------------------------------

Run('"c:\program files\Internet explorer\IEXPLORE.EXE" http://update.microsoft.com', "", @SW_MAXIMIZE)
                WinWait('Microsoft Windows Update')
                Sleep(5000)
_WindowsUpdate()

Func _WindowsUpdate()
    WinActivate('Microsoft Windows Update')
        If $var02 = 1 then 
                _Find01()
            ElseIf $var02 = 0 then 
                _Bend()
            Else    
        EndIF
EndFunc

Func _Bend()
        Sleep(1000)                 
        If  WinActive('Security Warning') Then
                Send('!y')
            ElseIf WinActive('Internet Explorer - Security Warning') Then
                Send('!i')
            ElseIf WinActive('Internet Explorer') Then  
                Send('{ENTER}')
            Else _WindowsUpdate()
        EndIf       
EndFunc

Func _find01();install now Button
    If $pixel01 = -1 Or $chksum01 = -1 Then
        MsgBox(4096,"Error","Could not read INI")
        Exit
    EndIf
    $x = 0
    $y = 0
    $ypixel = $VIRTUALDESKTOPHEIGHT - 1
    While 1
        $xy = PixelSearch($x,$y,$VIRTUALDESKTOPWIDTH - 1,$ypixel,$pixel01)
        If @error And $ypixel = ($VIRTUALDESKTOPHEIGHT - 1)Then
            _Bend  ;Error Could not find area.
        ; Exit
        ElseIf @error Then
            $y = $ypixel + 1
            $ypixel = ($VIRTUALDESKTOPHEIGHT - 1)
            $x = 0
        ElseIf $chksum01 = PixelCheckSum($xy[0]-8,$xy[1]-8,$xy[0]+8,$xy[1]+8) Then
            MouseMove($xy[0],$xy[1])
        ;ToolTip("There it is.")
            Sleep(3000)
                $pos = MouseGetPos()
            ;MsgBox(4096, "Mouse x,y:", $pos[0] & "," & $pos[1])
            ;MouseMove( $pos[0]+30, $pos[1]+30, 0)
            ;Sleep(500)
                    MouseDown("left")
                    Sleep(100)
                    MouseUp("left")
                        _Find02
        ;Exit
        Else
            $y = $xy[1]
            $ypixel = $y
            $x = $xy[0] + 1
        EndIf
    WEnd        
EndFunc 

Func find02();Custom Button
    If $pixel01 = -1 Or $chksum01 = -1 Then
        MsgBox(4096,"Error","Could not read INI")
        Exit
    EndIf
    $x = 0
    $y = 0
    $ypixel = $VIRTUALDESKTOPHEIGHT - 1
    While 1
        $xy = PixelSearch($x,$y,$VIRTUALDESKTOPWIDTH - 1,$ypixel,$pixel02)
        If @error And $ypixel = ($VIRTUALDESKTOPHEIGHT - 1)Then
        ; if cant find Custom button, then may haveto scroll down and try again
            Exit
        ElseIf @error Then
            $y = $ypixel + 1
            $ypixel = ($VIRTUALDESKTOPHEIGHT - 1)
            $x = 0
        ElseIf $chksum02 = PixelCheckSum($xy[0]-8,$xy[1]-8,$xy[0]+8,$xy[1]+8) Then
            MouseMove($xy[0],$xy[1])
        ;ToolTip("There it is.")
            Sleep(3000)
                $pos = MouseGetPos()
            ;MsgBox(4096, "Mouse x,y:", $pos[0] & "," & $pos[1])
                MouseMove( $pos[0]+30, $pos[1]+30, 0)
                Sleep(500)
                    MouseDown("left")
                    Sleep(100)
                    MouseUp("left")
        ;Exit
        Else
            $y = $xy[1]
            $ypixel = $y
            $x = $xy[0] + 1
        EndIf
    WEnd        
EndFunc

There is always a butthead in the crowd, no matter how hard one tries to keep them out.......Volly

Share this post


Link to post
Share on other sites

Have you tried AutoPatcher?

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
Sign in to follow this  
Followers 0