Jump to content

[Solved] Converting from AHK to AU3 - Gui Checkbox


Crazyace
 Share

Recommended Posts

Hello everyone,

I'm working on a rather large project for my company and we have ran in to a snag with using AutoHotKey. We use a forked version of it called AHK_L. We ran into some issues with IE8+ and we are wanting to see if AutoIT v3 will help us get past that issue. Here is a scipt that we use that causes issues for us.

What the code below does, is present you with a message box that has an input and 3 options. The option that's not working for us is the driver option. When we run our code we get COM errors in IE8+ but not in IE6 and 7.

So what I would like to do is convert this to AutoIT v3 and see how much coding it takes and what it would look like. So what I plan to do is start posting some of the code that I'm converting in small snipits to make sure that I'm on the right track. I'm not looking for someone to convert the whole script for me, becuase I won't learn anything about AutoIT. I want to thank everyone in advance for any help provided.

CoordMode, ToolTip, Screen
x:= floor(A_ScreenWidth /2)
y:= floor(A_ScreenHeight /2)
ToolTip, 1) Driver/Manual/Warranty Lookup`n2) Driver Grab`n3) PPID Lookup`n4) Diagnostics Lookup`n5) AMT Lookup`n6) Useful Info, x, y
return

1::
Numpad1::
Suspend On
ToolTip,
gui, font, bold, Verdana
Text = Shadowed
Gui -MaximizeBox -MinimizeBox
Gui, Add, Checkbox, Checked vDrivers y+10, Drivers
Gui, Add, Checkbox, vManual x+20, Manual
Gui, Add, Checkbox, vWarranty x+20, Warranty
Gui, Add, Text, y+10 xm, Service Tag#:
Gui, Add, Edit, xp+105 vTag w90
Gui, Add, Button, x60 gSubmit Default, Submit
Gui, Add, Button, xp+110, Cancel
Gui, Show, h90 w280,  System Lookup
GuiControl, Focus, Tag
return

*Lbutton::
Escape::
GuiEscape:
GuiClose:
ButtonCancel:
ExitApp

Submit:
Gui, Submit, Hide
Tag = %Tag%
if ((Drivers = 0 && Manual = 0 && Warranty = 0) || not RegExMatch(Tag, "^([a-zA-Z0-9]{4}|[a-zA-Z0-9]{6})1$"))
{
  errors =
  if not RegExMatch(Tag, "^([a-zA-Z0-9]{4}|[a-zA-Z0-9]{6})1$")
    errors = Service tag must be 5 or 7 alphanumeric characters and end with 1!
  if (Drivers = 0 && Manual = 0 && Warranty = 0)
    errors = You must choose something to look up!`n%errors%
  msgbox,, Input Errors!, %errors%
  return
}

if Drivers = 1
{
  url = http://www.dell.com/support/drivers/us/en/04/DriversHome/NeedProductSelection
  pwb :=   ComObjCreate("InternetExplorer.Application")
  ;navigates to the url
  pwb.Navigate(url)
  pwb.visible := true
  While ((pwb.readyState <> 4) || pwb.busy)
    ;Sleep, 10
  frame :=   pwb.document.all["iFramePSHost"].contentWindow
  frame.document.all["TheProductSelectorResultsModel_ServiceTagCode"].value := Tag
  frame.document.all.btnSubmit[0].click()
}

if Manual = 1
  run "http://support.dell.com/support/topics/global.aspx/support/my_systems_info/manuals?c=us&l=en&s=biz&~ck=ln&lnki=0&ServiceTag=%Tag%"
if Warranty = 1
  run http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&cs=555&l=en&s=biz&~ck=anavml&ServiceTag=%Tag%

exitapp
Edited by Crazyace

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

Any takers on this?

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

Don't bump your thread less than 24 hours please. Have you looked at the Help file at all in the last 12 hours?

UDF List:

 
_AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Don't bump your thread less than 24 hours please. Have you looked at the Help file at all in the last 12 hours?

Sorry about that, I didn't recall seeing that in the rules. I'll make sure to double check them, because I was about a sleep when posting last night. I checked over the help file but it wasn't much help. One thing that I tried to figure out was how to get to the last option in the "Tooltip". I thought something like
Tooltip("1) Driver" & @CR & "2) Warranty",,,,2)
would work but it just errors. The last option allows it to be in the center of the main montior from what I understand. Edited by Crazyace

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

I mean no disrespect to the members here and your right. I'll work on this later today and post about snipets that are failing to work for me.

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

This might make it simpler for you

Quoting the help file

To skip an optional parameter, leaving its default value intact, use the Default keyword.

Also be sure to re-read the last option where you have the 2. That centers the tip in relation to x and y; not in relation to the screen.

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

Updated my OP. Right now I'm working on the check box gui with an input. Here is the code that I have so far.

GUICreate("Drivers/Manuals/Warranty", 280, 110)
GUISetState(@SW_SHOW)

$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
GUICtrlCreateButton("Submit", 40, 70, 50)
GUICtrlCreateButton("Cancel", 150, 70, 50)

Sleep(30000)

Here is what I have so far of my gui and I have a few questions below.

  • How can I have the driver box auto checked when the gui is launched?
  • If Driver is checked and the user inputs a service tag into the input box how can I have it fire this

    url = [url="http://www.dell.com/support/drivers/us/en/04/DriversHome/NeedProductSelection"]http://www.dell.com/support/drivers/us/en/04/DriversHome/NeedProductSelection[/url]
              pwb :=   ComObjCreate("InternetExplorer.Application")
              ;navigates to the url
              pwb.Navigate(url)
              pwb.visible := true
              While ((pwb.readyState <> 4) || pwb.busy)
                ;Sleep, 10
              frame :=   pwb.document.all["iFramePSHost"].contentWindow
              frame.document.all["TheProductSelectorResultsModel_ServiceTagCode"].value := $input
              frame.document.all.btnSubmit[0].click()
I'm going to guess that my COM code from AHK won't work here, but it's just to show what I'm trying to do. Edited by Crazyace

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

I'm working on the check box gui with an input. Here is the code that I have so far.

GUICreate("Drivers/Manuals/Warranty", 280, 110)
GUISetState(@SW_SHOW)

$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
GUICtrlCreateButton("Submit", 40, 70, 50)
GUICtrlCreateButton("Cancel", 150, 70, 50)

Sleep(30000)

Here is what I have so far of my gui and I have a few questions below.

  • How can I have the driver box auto checked when the gui is launched?
  • If Driver is checked and the user inputs a service tag into the input box how can I have it fire this

    url = [url="http://www.dell.com/support/drivers/us/en/04/DriversHome/NeedProductSelection"]http://www.dell.com/support/drivers/us/en/04/DriversHome/NeedProductSelection[/url]
        pwb := ComObjCreate("InternetExplorer.Application")
        ;navigates to the url
        pwb.Navigate(url)
        pwb.visible := true
        While ((pwb.readyState <> 4) || pwb.busy)
        ;Sleep, 10
        frame := pwb.document.all["iFramePSHost"].contentWindow
        frame.document.all["TheProductSelectorResultsModel_ServiceTagCode"].value := $input
        frame.document.all.btnSubmit[0].click()
I'm going to guess that my COM code from AHK won't work here, but it's just to show what I'm trying to do.

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

Hello Crazyace,

#1) Use GUICtrlSetState() to set the state of controls.

;This will set the checkbox control to checked
GUICtrlSetState( $Driver, $GUI_CHECKED )
;just as this example will set it's state as unchecked.
GUICtrlSetState( $Driver, $GUI_UNCHECKED )

Embedded with your code, you will get this:

$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
GUICtrlSetState( -1, $GUI_CHECKED )
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
GUICtrlCreateButton("Submit", 40, 70, 50)
GUICtrlCreateButton("Cancel", 150, 70, 50)

#2) You will want to use GUICtrlGetState() to retrieve the state of a control

GUICtrlGetState($Driver)

to perform a _Function() when this is checked you would:

If GUICtrlGetState($Driver) = $GUI_CHECKED Then _Function()

Sorry to verify, but you are right that your AHK com code will not work properly with AutoIt. However, and on a brighter side, if you read up on IE.au3 UDF in your help file, I am certain you will find it moderately easy to convert your AHK code to better interact with AutoIt.

Some functions that may help are:

_IECreate() ;To create com object with Internet Explorer
_IENavigate() ;Navigates
_IELoadWait() ;Sleep function while the page loads

Good Luck & Happy Coding!

Realm

Edited by Realm

My Contributions: Unix Timestamp: Calculate Unix time, or seconds since Epoch, accounting for your local timezone and daylight savings time. RegEdit Jumper: A Small & Simple interface based on Yashied's Reg Jumper Function, for searching Hives in your registry. 

Link to comment
Share on other sites

Realm,

Thanks so much for your kind reply. I'm going to check out the IE.au3 file for sure. When the submit button is clicked how can I fire the code?

I had updated to this

#include <GUIConstantsEx.au3>
GUICreate("Drivers/Manuals/Warranty", 280, 110)
GUISetState(@SW_SHOW)
$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
GUICtrlSetState(-1, $GUI_CHECKED)
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
$Submit = GUICtrlCreateButton("Submit", 40, 70, 50)
$Exit = GUICtrlCreateButton("Cancel", 150, 70, 50)
Edited by Crazyace

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

Crazyace,

I am sorry I didn't fully explore your code last time, and just went directly to answering your questions. I have modified your code a bit so that it will perform more to your needs. I noticed from your original post you had a large sleep function at the bottom to keep your GUI open. When a button is pressed during sleep mode, it will not perform your needs. You need to create a loop after your gui creation to watch for user input and activity. Hope this helps a bit.

#include <GUIConstants.au3>

GUICreate("Drivers/Manuals/Warranty", 280, 110)

$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
GUICtrlSetState(-1, $GUI_CHECKED)
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
$Submit = GUICtrlCreateButton("Submit", 40, 70, 50)
$Exit = GUICtrlCreateButton("Cancel", 150, 70, 50)

GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Submit
            $serv_tag = GUICtrlRead($Input)
            If GUICtrlGetState($Driver) = $GUI_CHECKED Then _Fire($serv_tag)
        Case $msg = $Exit
            ExitLoop
    EndSelect
WEnd

Exit 0

Func _Fire($sServiceTag)
    ;IE functin that will handle $sServiceTag that is the passed input read from control $Input
EndFunc

Realm

Edit: If you are using Scite, this only works for the AutoIt version that was included with the standard Install, to create your scripts, you may also type 'setupgui' then press space and it will create a basic template shell of a gui window code for you, including the while loop.

Edited by Realm

My Contributions: Unix Timestamp: Calculate Unix time, or seconds since Epoch, accounting for your local timezone and daylight savings time. RegEdit Jumper: A Small & Simple interface based on Yashied's Reg Jumper Function, for searching Hives in your registry. 

Link to comment
Share on other sites

Crazyace,

I am sorry I didn't fully explore your code last time, and just went directly to answering your questions. I have modified your code a bit so that it will perform more to your needs. I noticed from your original post you had a large sleep function at the bottom to keep your GUI open. When a button is pressed during sleep mode, it will not perform your needs. You need to create a loop after your gui creation to watch for user input and activity. Hope this helps a bit.

#include <GUIConstants.au3>

GUICreate("Drivers/Manuals/Warranty", 280, 110)

$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
GUICtrlSetState(-1, $GUI_CHECKED)
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
$Submit = GUICtrlCreateButton("Submit", 40, 70, 50)
$Exit = GUICtrlCreateButton("Cancel", 150, 70, 50)

GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Submit
            $serv_tag = GUICtrlRead($Input)
            If GUICtrlGetState($Driver) = $GUI_CHECKED Then _Fire($serv_tag)
        Case $msg = $Exit
            ExitLoop
    EndSelect
WEnd

Exit 0

Func _Fire($sServiceTag)
    ;IE functin that will handle $sServiceTag that is the passed input read from control $Input
EndFunc

Realm

Edit: If you are using Scite, this only works for the AutoIt version that was included with the standard Install, to create your scripts, you may also type 'setupgui' then press space and it will create a basic template shell of a gui window code for you, including the while loop.

Thanks for the info that's what I needed just a great example. I'm going to start working on the COM stuff with the IE.Au3 file and I'll keep you updated ;)

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

Realm,

I tried this but it didn't work correctly.

#include <GUIConstants.au3>
#include <IE.au3>
GUICreate("Drivers/Manuals/Warranty", 280, 110)
$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
GUICtrlSetState(-1, $GUI_CHECKED)
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
$Submit = GUICtrlCreateButton("Submit", 40, 70, 50)
$Exit = GUICtrlCreateButton("Cancel", 150, 70, 50)
GUISetState(@SW_SHOW)
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Submit
            $serv_tag = GUICtrlRead($Input)
            If GUICtrlGetState($Driver) = $GUI_CHECKED Then _Fire($serv_tag)
        Case $msg = $Exit
            ExitLoop
    EndSelect
WEnd
Exit 0
Func _Fire($serv_tag)
   _IECreate("[url="http://support.dell.com/support/topics/global.aspx/support/my_systems_info/manuals?c=us&l=en&s=biz&~ck=ln&lnki=0&ServiceTag"]http://support.dell.com/support/topics/global.aspx/support/my_systems_info/manuals?c=us&l=en&s=biz&~ck=ln&lnki=0&ServiceTag[/url]=" & $Input, 1, 1,0)
EndFunc

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

Crazyace,

When you see brackets, '[' ']', in the parameter explanations within the helpfile, these are not meant to be used inside the actual code, they are merely symbolic for the parameter is optional.

$input is the variable pointer to your GUICtrlCreateInput() control.

When 'Submit' is pressed, it will read the user input from that control into the variable $serv_tag. Afterwhich it will pass $serv_tag to the function _Fire(). If you look at function _Fire(), you will see that it accepts 1 parameter that will be assigned to variable $sServiceTag. This is the variable that now holds the user's input to which can be used within function _Fire().

I highly recommend reading The first section of the Help file, to get a better understanding of how AutoIt works, especially with Functions.

I am not sure why you have the url pasted twice in your post. You don't need tags either. _IECreate() will also return an object variable that points to InternetExplorer.Applicaton (the controls behind the browswer your attempting to open). So give it a variable to return to, so you have a way to manipulate the window further.

$oIE = _IECreate("http://support.dell.com/support/topics/global.aspx/support/my_systems_info/manuals?c=us&l=en&s=biz&~ck=ln&lnki=0&ServiceTag=" & $sServiceTag)
_IENavigate($oIE, $another_url)

I did not test this example, however and in theory providing the url is correct as you have posted, this should work for you. Remove the _IENavigate(), I added that so you could visualize how the object handling will be performed.

Realm

Edited by Realm

My Contributions: Unix Timestamp: Calculate Unix time, or seconds since Epoch, accounting for your local timezone and daylight savings time. RegEdit Jumper: A Small & Simple interface based on Yashied's Reg Jumper Function, for searching Hives in your registry. 

Link to comment
Share on other sites

Realm,

Thanks for the reply. When looking at my post, the forums messed up and put in the hyperlink and the URL. The help file now that I know how to use it has been a great help and I now understand gui's much better. At first I was really confused by the $msg = GUIGetMsg() part but now I understand that all GUI's will be a Msg loop or event loop.

#include <GUIConstants.au3>
#include <IE.au3>

GUICreate("Drivers/Manuals/Warranty", 280, 110)

$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
GUICtrlSetState(-1, $GUI_CHECKED)
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
$Submit = GUICtrlCreateButton("Submit", 40, 70, 50)
$Exit = GUICtrlCreateButton("Cancel", 150, 70, 50)

GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Submit
            $serv_tag = GUICtrlRead($Input)
            If GUICtrlGetState($Driver) = $GUI_CHECKED Then _Fire($sServiceTag)
        Case $msg = $Exit
            ExitLoop
    EndSelect
WEnd

Exit 0

Func _Fire($sServiceTag)
   $oIE = _IECreate("http://support.dell.com/support/topics/global.aspx/support/my_systems_info/manuals?c=us&l=en&s=biz&~ck=ln&lnki=0&ServiceTag=" & $sServiceTag,1 ,1 ,0)
EndFunc

With the code above the Submit button fails to fire the function and I can't understand why. I looked at the help file and everything looks fine. Do I need to put the function in the top of the file?

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
Share on other sites

#include <GUIConstants.au3>
#include <IE.au3>

GUICreate("Drivers/Manuals/Warranty", 280, 110)

$Driver = GUICtrlCreateCheckbox("Drivers", 10, 10)
GUICtrlSetState(-1, $GUI_CHECKED)
$Manual = GUICtrlCreateCheckbox("Manual", 80, 10)
$Warranty = GUICtrlCreateCheckbox("Warranty", 150, 10)
GUICtrlCreateLabel("Service Tag #:", 10, 45)
$Input = GUICtrlCreateInput("", 90, 40)
$Submit = GUICtrlCreateButton("Submit", 40, 70, 50)
$Exit = GUICtrlCreateButton("Cancel", 150, 70, 50)

GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Submit
            $serv_tag = GUICtrlRead($Input)
            If IsChecked($Driver) Then _Fire($serv_tag)
        Case $msg = $Exit
            ExitLoop
    EndSelect
WEnd

Exit 0

Func _Fire($sServiceTag)
   $oIE = _IECreate("http://support.dell.com/support/topics/global.aspx/support/my_systems_info/manuals?c=us&l=en&s=biz&~ck=ln&lnki=0&ServiceTag=" & $sServiceTag,1 ,1 ,0)
EndFunc

Func IsChecked($control)
    Return BitAnd(GUICtrlRead($control),$GUI_CHECKED) = $GUI_CHECKED
EndFunc

Link to comment
Share on other sites

Zedna,

Thanks for the help that works perfect. May I ask why we added

Func IsChecked($control)
    Return BitAnd(GUICtrlRead($control),$GUI_CHECKED) = $GUI_CHECKED
EndFunc

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.""Never, ever, argue with an idiot. They'll drag you down to their level and beat you with experience"

Link to comment
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
 Share

×
×
  • Create New...