Jump to content

Recommended Posts

Posted

I'm building a bootable flash drive. I want to include the Wireshark packet watcher. It requres the  Npcap service to be running. I'm trying to automate the installation of Npcap after boot.
I'm testing in VirtualBox but the same thing happens on physical hardware.

In both the "Installing" window and the "Options" window appear AutoIT clicks the appropriate button. When the "Installing" windiow appears, a second or two later the WinWaitActive($Handle,"Completed") fires the ControlClick($WindowTitle"&Next",1) for a button that doesn't exist yet. I sprinkled WinActivate throughout because another program window is on screen while this is happening, but it made no difference. If I close the other program window first it makes no difference.

#include <FileConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>

If $CmdLine[0] >= 1 Then
  $Pause=$CmdLine[1]
Else
  MsgBox(4096,"NPcap installer","Please include the pause flag (False or True) on the command line.")
  Exit
EndIf

If $CmdLine[0] >= 2 Then
  $StartDriver=$CmdLine[2]
Else
  MsgBox(4096,"NPcap installer","Please include the start driver flag (False or True) on the command line.")
  Exit
EndIf

$FileList = _FileListToArray(@ScriptDir,"npcap-*.exe",$FLTA_FILES ,True)

Select
  Case @error = 4
    MsgBox($MB_OK,"File error","Npcap installer " & @ScriptDir & "\npcap-*.exe not found!")
    Exit
  Case @error = 1
    MsgBox($MB_OK,"File error","Npcap installer path " & @ScriptDir & " not found!")
    Exit
  Case @error=0
EndSelect

; Wait until PE Network Manager settles down.
If WinExists("PE Network Manager") Then WinWait("PE Network Manager","Properties",3)

$Version = StringRight(StringTrimRight($FileList[1],4),4)
$WindowTitle = "Npcap " & $Version & " Setup"

ShellExecute($FileList[1])

$WindowTitle = WinWait($WindowTitle,"License Agreement",10)
If $WindowTitle <> 0 Then
  WinActivate($WindowTitle)
  ControlClick($WindowTitle,"License Agreement",1)
  WinWaitActive($WindowTitle,"Installation Options")
  WinActivate($WindowTitle)
  If $Pause = "False" Then
    ControlClick($WindowTitle,"&Install",1)
  EndIf
  WinActivate($WindowTitle)
  WinWaitActive($WindowTitle,"Setup was completed")
  WinActivate($WindowTitle)
  ; Wait for the "Next" button to be active
  Sleep(3000)
  ControlClick($WindowTitle,"&Next",1)
  WinWaitActive($WindowTitle,"Finished")
  ControlClick($WindowTitle,"&Finish",1)
Else
  MsgBox($MB_OK,"Npcap install","Did not see the installation window " & $WindowTitle & "!")
EndIf

If $StartDriver = "True" Then
  If @OSArch="X86" Then
    $Command = @WindowsDir & "\SysWOW64\cmd.exe"
  Else
    $Command = @SystemDir & "\cmd.exe"
  EndIf
  ShellExecute($Command," /c net start npcap")
EndIf

If you want to wattch it, https://fleming-group.com/Hidden/Video/Video.html. The cmd window flashing is the end of the AutoIT script.

Posted
On 8/6/2025 at 2:33 PM, Nine said:

Seems a bit strange that all your buttons have a control id equals to 1.  All your ControlClick are using the control id 1.  Are you sure about that ?

Yes.

Posted (edited)
14 hours ago, JonF said:

Yes.

No. Show me au3info, I think you are mistaken with the number of clicks...Anyway you do not need to provide the text of a button (or any other controls) if you know the control id.  It is just an overkill...

Edited by Nine
Posted
On 8/7/2025 at 5:11 PM, argumentum said:

@JonF I don't like you :) To the ignore list ! :lol:

I''ve seen people like you before. 

Posted
On 8/7/2025 at 5:44 PM, Nine said:

No. Show me au3info, I think you are mistaken with the number of clicks...Anyway you do not need to provide the text of a button (or any other controls) if you know the control id.  It is just an overkill...

I'm trying, but the program has decided to run minimized and can't be restored. Arghh......

It seeems nobody is addressing the issue, which is that...

WinWaitActive($WindowTitle,"Setup was completed")

... is reporting the windows is active before the window containing that text is on-screen.

Posted
On 8/7/2025 at 5:44 PM, Nine said:

No. Show me au3info, I think you are mistaken with the number of clicks...Anyway you do not need to provide the text of a button (or any other controls) if you know the control id.  It is just an overkill...

The Help file does NOT list the second argument as optional.

Posted (edited)
36 minutes ago, JonF said:

The Help file does NOT list the second argument as optional.

True.  For all Control* functions it doesn't say it is optional.  It is not optional in terms of skipping it. It is optional (check examples of Control* functions) in the sense that you must provide a string, but most of the time, it is going to be empty...

However, it is clearly stated that the second parameter of many Win* functions is optional (meaning that you can skip it).

Edited by Nine

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...