Sign in to follow this  
Followers 0
Bester

How to use alternative to CType in Autoit?/Important Windows updates

2 posts in this topic

Hello, 

i would like to ask for some help on how to write something like this in Autoit

If CType(update, WUApiLib.IUpdate3).BrowseOnly = True Then
    opt_updates = opt_updates + 1
 Else
    imp_updates = imp_updates + 1
 End If

I`m trying to find Important Windows updates only, but for some reason this code:

$ColNeeded = $objSearcher.Search("BrowseOnly=0 and IsInstalled=0 and IsHidden=0")

$update = $ColNeeded.Updates.Item($i - 1)

returns all update (important and optional) as important (even though BrowseOnly=0). I think i`m missing a reference to WUApi.DLL in my code but i couldn`t find anything else to help me :/

If someone could help me either by providing a Autoit alternative to 

CType(update, WUApiLib.IUpdate3).BrowseOnly = True

or another way to find only important Windows updates i would be very grateful.
Thank you

Share this post


Link to post
Share on other sites



If anybody else got this problem of "BrowsOnly=0" not working and would like to do find only important updates for Windows i came up with this solution.
Hope it`s going to help someone:

 

$obj_search = ObjCreate("Microsoft.Update.Searcher")
    $obj_search.ServerSelection = 2
    $obj_search.Online = True

    ;looking for updates
    $obj_result = $obj_search.Search("IsInstalled=0 and IsHidden=0") ;you can change this to something else (BrowsOnly=0 will not work)
    $obj_updates = $obj_result.Updates

    For $i = 0 To $obj_updates.Count - 1
        $obj_categories = $obj_updates.Item($i).Categories
        $s_Cat = ""
        $s_Cat = $obj_categories.Item(0).Name
        If $s_Cat <> "Updates" Or $s_Cat <> "Drivers" Or $s_Cat <> "Feature Packs" Then
            ;!!-- Important updates only --!!
            $array[0][0] += 1
            $array[$array[0][0]][0] = $obj_updates.Item($i).Title
            $array[$array[0][0]][1] = $s_Cat
            $array[$array[0][0]][2] = Round($obj_updates.Item($i).MaxDownloadSize / 1024)
            $array[$array[0][0]][3] = 1 ;to indicate important updates in array
        Else
            ;!!-- All Optional updates --!!
            $array[0][0] += 1
            $array[$array[0][0]][0] = $obj_updates.Item($i).Title
            $array[$array[0][0]][1] = $s_Cat
            $array[$array[0][0]][2] = Round($obj_updates.Item($i).MaxDownloadSize / 1024)
        EndIf

    Next
    ReDim $array[$array[0][0] + 1][5]

 

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

  • Similar Content

    • fosil
      By fosil
      Hi everyone.

      I'm currently working a program that constantly prints out log files through "consolewrite" and the "#AutoIt3Wrapper_Change2CUI=y" wrapper.

      Part of this program requires me to run a batch script.

      My issue is the batch script launches from the same window as consolewrite. I need the batch file to be launched through a different window as currently this causes an issue with the logs (which need to be very precise) but also causes the batch file to produce some funny behavior...

      Does anyone know how I can force the file to run on a second DOS window?

      Thanks in advance!!!
       
      Edit: Im using the "run" command if that helps. I tried "shellexecute" but that seemed to not launch the batch scripts at all.
    • nacerbaaziz
      By nacerbaaziz
      Hello guys
      I have an inquiry regarding bass.dll
      I wanted to record an audio file and did not know the way
      As well as I want to save the file after applying the effects
      can you help me?
      am sorry for my english
      With my greetings and best wishes
    • kenny4896
      By kenny4896
      Hi All,
      I tried my best to looking a solution from this forum or others, but I have no luck. The imagesearch dll working fine in my 64 bits machine, whenever I move the scripts to Win 7 (32 bits), it crashes. ImageSearchDLL.dll, ImageSearch.au3 and my simple scripts are in the same working directory. For win 7 (32 bits) machine, I'm using 32 bits ImageSearchdll.dll, the simple scripts as below:
      #include <ImageSearch.au3>
      Global $y = 0, $x = 0
      Local $search = _ImageSearch("C:\Program Files\AutoIt3\Examples\Images\mypc.PNG", 0, $x, $y, 0)
      if $search = 1 then
         MsgBox(0,"Found","Found my target here..." & $x & "," & $y)
         MouseMove($x, $y, 10)
      Else
         msgbox(0, "Not found","")
      Endif
      However, I received error message below when running the script. Anyone here got clue? 
      Problem Event Name:    APPCRASH
        Application Name:    AutoIt3.exe
        Application Version:    3.3.14.2
        Application Timestamp:    55fc1979
        Fault Module Name:    AutoIt3.exe
        Fault Module Version:    3.3.14.2
        Fault Module Timestamp:    55fc1979
        Exception Code:    c0000005
        Exception Offset:    00020e42
        OS Version:    6.1.7601.2.1.0.256.4
        Locale ID:    17417
        Additional Information 1:    0a9e
        Additional Information 2:    0a9e372d3b4ad19135b953a78882e789
        Additional Information 3:    0a9e
        Additional Information 4:    0a9e372d3b4ad19135b953a78882e789
    • lattey
      By lattey
      i have a vbscript that called an autoit exe file and autoit exe file will return value to vbscript.
      vbscriptto call the exe and create array:
      Set objShell = CreateObject("WScript.Shell") objShell.Run ( "C:\Datalog\test.exe") Dim intCtr: intCtr=-1 Dim tempArr() Set UID = CreateObject("System.Collections.ArrayList") CurLot = "" For Each filelog in FileList LogFile = Split(filelog, "~")(1) Set otf = fso.OpenTextFile("C:\Datalog\" & LogFile, 1) intCtr=intCtr+1 sFile = Split(LogFile, "_") CurStep = sFile(4) Redim preserve tempArr(intCtr) tempArr(intCtr)=CurStep next autoit:
      #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <ButtonConstants.au3> #include <Array.au3> Global $Count = 10 Global $CheckBox[$Count] global $array1[1] $hGUI = GUICreate("Test", 500, 500) Global $array_Pstep[10] = ["P1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10"] $Spacing = 24 For $i = 0 To UBound($array_Pstep) - 1 $CheckBox[$i] = GUICtrlCreateCheckbox($array_Pstep[$i], 80, $Spacing + (20 * $i), 65, 17) Next $submit = GUICtrlCreateButton("submit",10, 300, 80, 30) GUISetState() While 1 $Msg = GUIGetMsg() Switch $Msg case $submit _ArrayDisplay($array1) Case Else For $i = 0 To $Count - 1 If $CheckBox[$i] = $Msg Then MsgBox("", "Pressed", $i) _ArrayAdd($array1, $array_Pstep[$i]) ExitLoop EndIf Next EndSwitch WEnd i need to compare the array in vbscript and array return by autoit. but i dont know how to pass the value of array in autoit to vbscript. Please help.
    • Hanukka
      By Hanukka
      Hello there,
      https://stackoverflow.com/questions/901712/how-to-check-whether-a-checkbox-is-checked-in-jquery
      I want to check the checkbox in the frame which pops up after choosing "run code snippet" option. ( Internet Explorer one would be prefered )
      Can you please please send the right code or some snippet here..