grimmlock Posted April 9, 2013 Posted April 9, 2013 Good Morning, I have a gui that works great on all servers /computers except our exchange server. The error I get, which I have not been able to track down, on our exchange server when I run the compiled executable is as follows: "Autoit Error: Line 6601 (File"C:\Windows\Server_Login.exe): Error: Subscript used in non-Array variable." So far I have been able to determine that it has something to do with this: OKButton($sServer, $sUsername, $sUsername & '@' & $sDomain, $sSupportEmail, "Login Detected on " & $sComputername, $msg) Because if I remove this line everything works, except the emailing but that is the one piece we need to work. I have also removed every line except the OKButton line of code and it still fails. Any help would be greatly appreciated. Here is the entire code. expandcollapse popup#NoTrayIcon #include <File.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <Constants.au3> #include <GUIConstantsEx.au3> #include <GUIConstants.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <Array.au3> #include <Date.au3> Global $goMyRet[2] Global $goMyError = ObjEvent("AutoIt.Error", "MyErrFunc") HotKeySet("#{F4}", "_exit") ; Win + F4 to exit Local $aLines, $iCount = 0 local $hDate = @YEAR & '-' & @MON & '-' & @MDAY local $hfile=FileOpen("\\192.168.26.17\Logs\coreserverlog.txt", 1) _main() Func _Main() while 1 _Startup() _GUI() WEnd EndFunc ;==>_Main Func _Startup() RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "NoLogoff", "REG_DWORD", "1") RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "1") ;======================= ; For Windows 7 and Server 2008+ ;======================= ;~ ProcessClose('explorer.exe') ;~ Sleep(1000) ;~ Run('explorer.exe') ;~ WinWaitActive('Libraries', '') ;~ WinClose('Libraries') ;======================= ; For non-windows 7 / server 2008 + computers ;======================= ProcessClose('explorer.exe') Sleep(1000) Run('explorer.exe') WinWaitActive('My Documents', '') WinClose('My Documents') EndFunc ;==>_Startup Func _gui() local $sUsername = @UserName ; User Name Local $sComputername = @ComputerName ; Computer Name Local $sText1 = ""; Output text for message box. Local $sText2 = ""; Output text for message box. Local $sTest3 = ""; Output text for message box. Local $combo1 = ""; Output text for combo box. Local Const $sDomain = 'domain.com' Local Const $sServer = "mail" & '.' & $sDomain Local Const $sSupportEmail = "email" & '@' & $sDomain ClipPut($sServer) $sText1 = "Username = " & $sUsername & @CRLF ; The & character concentrates (joins) two values together. $sText2 = "Computer Name = " & $sComputername & @CRLF ; The &= adds to the variable. The same as doing $var = $var & "extra stuff" Opt("TrayOnEventMode",1) Opt("TrayMenuMode",1) TraySetOnEvent($TRAY_EVENT_PRIMARYUP,"SpecialEvent") ;TraySetState(2) ; hide --> not needed Local $hMainwindow = GUICreate("Server Logon Form", 300, 300, Default, Default, BitAND($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_CONTEXTHELP) Local $hOkButton = GUICtrlCreateButton("&OK", 75, 225, 150) GUISetState() ; _AddHorzSep(10, 40, 290) ; _AddHorzSep(10, 60, 280) ;~ $Label2 = GUICtrlCreateLabel("", 120, 38, 150, 25) $Label3 = GUICtrlCreateLabel("&Ticket #: ", 25, 38, 55) $hInputText1 = GUICtrlCreateInput("", 75, 35, 50, 20, $ES_NUMBER) GUICtrlSetLimit(-1, 4) $Label4 = GUICtrlCreateLabel("&Reason for Logging In:", 25, 70, 200) $hInputText2 = GUICtrlCreateEdit("", 25, 90, 235, 125, 0) $Label5 = GuiCtrlCreateLabel("", 145, 70, 200, 20) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $hOkButton $name = GUICtrlRead($hInputText2) $msg = "Login Detected on " & @ComputerName & @CRLF & @CRLF & "Ticket #: " & GUICtrlRead($hInputText1) & @CRLF & @CRLF & "Details: " & GUICtrlRead($hInputText2) & @CRLF & @CRLF & "" & $sText1 & $sText2 & _wmigetcompinfo() If $name = "" Then GUICtrlSetData($Label5, "Please enter a reason") GUICtrlSetColor($Label5, 0xFF0000) Else If GuiCtrlRead($hInputText1) = "" Then GUICtrlSetData($hInputText1, 'n/a') Else EndIf If $hfile = -1 Then msgbox(0, "Error", "Unable to open file.") Exit EndIf ; Read the file _FileReadToArray("\\192.168.26.17\Logs\coreserverlog.txt", $aLines) If Not @error Then ; if the file exists look for the ID starting on the last line For $i = $aLines[0] To 1 Step -1 If StringLeft($aLines[$i], 2) == "id" Then ; get the ID number $iCount = Int(StringRegExpReplace($aLines[$i], "id(\d*):.*", "$1")) ExitLoop EndIf Next ; Check we found an ID If $i = 0 Then MsgBox(0, "Error", "No line id found") Exit EndIf EndIf FileWrite($hfile, _LineID() & '|' & $hDate & '|' & $sComputername & '|' & $sUsername & '|' & GUICtrlRead($hInputText1) & '|' & GUICtrlRead($hInputText2) & @CRLF) FileClose($hfile) Sleep(1000) OKButton($sServer, $sUsername, $sUsername & '@' & $sDomain, $sSupportEmail, "Login Detected on " & $sComputername, $msg) If ProcessExists('Core_Logoff.exe') Then Else Run('C:\Windows\Core_Logoff.exe') EndIf ;~ RunWait('C:\Windows\Idle_Logoff.exe') Exit EndIf EndSwitch WEnd EndFunc ;==> gui Func _LineID() $iCount += 1 Return "id" & StringFormat("%04i", $iCount) & ": " EndFunc ;==> LineID Func RegRemove() RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "NoLogoff", "REG_DWORD", "0") RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "0") ;======================= ; For Windows 7 and Server 2008+ ;======================= ;~ ProcessClose('explorer.exe') ;~ Sleep(1000) ;~ Run('explorer.exe') ;~ WinWaitActive('Libraries', '') ;~ WinClose('Libraries') ;======================= ; For non-windows 7 / server 2008 + computers ;======================= ProcessClose('explorer.exe') Sleep(1000) Run('explorer.exe') WinWaitActive('My Documents', '') WinClose('My Documents') EndFunc ;==> RegRemove Func SpecialEvent() GUISetState(@SW_SHOW) TraySetState(2) ; hide EndFunc ;==> SpecialEvent Func _exit() Do $Pass = InputBox ("Password", "Please enter your password", "", "*M") $Split = StringSplit ($Pass, "") If $Split[0] Then $ConfirmPass = "admin" If $Pass <> $ConfirmPass Then MsgBox (48, "Error", "Passwords do not match!!") EndIf Until $Pass = $ConfirmPass If $ConfirmPass Then SplashTextOn( "Closing", "Closing without sending email", 300, 50) Sleep(3000) RegRemove() Exit EndIf EndFunc ;==> _exit Func _AddHorzSep($iX, $iY, $iW) GUICtrlCreateLabel("", $iX, $iY, $iW, 1) GUICtrlSetBkColor(-1, 0x000000) EndFunc ;==>_AddHorzSep Func _wmigetcompinfo($strComputer = "localhost") ; Generated by AutoIt Scriptomatic November 30, 2012 $wbemFlagReturnImmediately = 0x10 $wbemFlagForwardOnly = 0x20 $colItems = "" $sOutput = "" ;- $sOutput &= "Computer: " & $strComputer & @CRLF $sOutput &= "" $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _ $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems $sOutput &= "Computer Status: " & $objItem.Status & @CRLF Next Else Return ("WMI not functional") EndIf $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _ $wbemFlagReturnImmediately + $wbemFlagForwardOnly) Return ($sOutput) EndFunc ;==>_wmigetcompinfo Func WMIDateStringToDate($dtmDate) Return (StringMid($dtmDate, 5, 2) & "/" & _ StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _ & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2)) EndFunc ;==>WMIDateStringToDate Func OKButton($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $s_Body) $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $s_Body) ProgressOn("Progress", "Submitting your ticket...", "0 percent") For $i = 0 To 100 Step 20 Sleep(500) ProgressSet($i, $i & " percent") Next ProgressSet(100, "Done", "Complete") Sleep(500) ProgressOff() If @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc) Else Sleep(2000) RegRemove() EndIf EndFunc ;==>OKButton Func OnEmail($sSupportEmail) Run(@ComSpec & " /c " & 'start mailto:' & $sSupportEmail, "", @SW_HIDE) EndFunc ;==>OnEmail Func CLOSEClicked() ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE, ;and @GUI_WINHANDLE would equal $hMainwindow Exit EndFunc ;==>CLOSEClicked Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $sBody = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($sBody, "<") And StringInStr($sBody, ">") Then $objEmail.HTMLBody = $sBody Else $objEmail.Textbody = $sBody & @CRLF EndIf If $s_AttachFiles <> "" Then Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") For $x = 1 To $S_Files2Attach[0] $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) ;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF) $objEmail.AddAttachment($S_Files2Attach[$x]) Else ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) SetError(1) Return 0 EndIf Next EndIf $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 Then $IPPort = 25 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort ;Authenticated SMTP If $s_Username <> "" Then $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password EndIf If $ssl Then $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True EndIf ;Update settings $objEmail.Configuration.Fields.Update ; Set Email Importance Switch $s_Importance Case "High" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High" Case "Normal" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal" Case "Low" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low" EndSwitch $objEmail.Fields.Update ; Sent the Message $objEmail.Send If @error Then SetError(2) Return $goMyRet EndIf $objEmail = "" EndFunc ;==>_INetSmtpMailCom ; ; ; Com Error Handler Func MyErrFunc() $HexNumber = Hex($goMyError.number, 8) $goMyRet[0] = $HexNumber $goMyRet = StringStripWS($goMyError.description, 3) ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $goMyError.scriptline & " Description:" & $goMyRet & @LF) SetError(1); something to check for when this function returns Return EndFunc ;==>MyErrFunc Thanks, Grimm Thanks Grimm
water Posted April 9, 2013 Posted April 9, 2013 The problem can't be related to this line because yout do not try to access a variable as array there. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Â
BrewManNH Posted April 9, 2013 Posted April 9, 2013 (edited) Another thing, your test of @error is in the wrong place, you need to put it directly after the line that you're looking for the error from, which I assume is the call to the OKButton _INetSmtpMailCom function, and not after all the progress bar stuff. Edited April 9, 2013 by BrewManNH If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator
Developers Jos Posted April 9, 2013 Developers Posted April 9, 2013 Guess you goofed up with this code: $goMyRet[0] = $HexNumber $goMyRet = StringStripWS($goMyError.description, 3) Jos SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past.Â
grimmlock Posted April 9, 2013 Author Posted April 9, 2013 (edited) I installed autoitscript on our exchange server and ran the code. It errored out on the section that Jos just posted so I commented out that whole function Func MyErrFunc() $HexNumber = Hex($goMyError.number, 8) $goMyRet[0] = $HexNumber $goMyRet = StringStripWS($goMyError.description, 3) ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $goMyError.scriptline & " Description:" & $goMyRet & @LF) SetError(1); something to check for when this function returns Return EndFunc ;==>MyErrFunc and then re-ran the script. Now it is erroring out on this line: Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $sBody = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' ;~ <--- this line. $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" .......... Error is "The requested action with this object has failed." Thanks, Grimm Edited April 9, 2013 by grimmlock Thanks Grimm
water Posted April 9, 2013 Posted April 9, 2013 Which version of the Windows server do you run? 2003, 2008, 2012? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Â
water Posted April 9, 2013 Posted April 9, 2013 Sorry, forgot to ask for the Exchange version too. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Â
Developers Jos Posted April 9, 2013 Developers Posted April 9, 2013 I installed autoitscript on our exchange server and ran the code. It errored out on the section that Jos just posted so I commented out that whole functionDon't comment that section out but fix it so you get proper error information back.Jos SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past.Â
water Posted April 9, 2013 Posted April 9, 2013 Then this describes your problem: CDO is missing. You need to install CDO. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Â
grimmlock Posted April 9, 2013 Author Posted April 9, 2013 Thank you water, I downloaded and installed that however I am getting an error on 398 $goMyRet[0] = $HexNumber $goMyRet = StringStripWS($goMyError.description, 3) I have looked on the web and cannot quite figure out what I am doing wrong Thanks Grimm Thanks Grimm
Developers Jos Posted April 9, 2013 Developers Posted April 9, 2013 (edited) The second line changes the variable from an array to a regular variable. Should be something like: $goMyRet[1] = StringStripWS($goMyError.description, 3) Also change the line below it that uses this information. Edited April 9, 2013 by Jos SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past.Â
grimmlock Posted April 9, 2013 Author Posted April 9, 2013 Great now error code is 2 with no description0 Thanks Jos for the help and the explanation Grimm Thanks Grimm
Developers Jos Posted April 9, 2013 Developers Posted April 9, 2013 Great now error code is 2 with no description0Thanks Jos for the help and the explanation Grimmhow does your code look now? SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past.Â
grimmlock Posted April 9, 2013 Author Posted April 9, 2013 Jos, this is the updated code expandcollapse popup#NoTrayIcon #include <File.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <Constants.au3> #include <GUIConstantsEx.au3> #include <GUIConstants.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <Array.au3> #include <Date.au3> Global $goMyRet[2] Global $goMyError = ObjEvent("AutoIt.Error", "MyErrFunc") HotKeySet("#{F4}", "_exit") ; Win + F4 to exit Local $aLines, $iCount = 0 local $hDate = @YEAR & '-' & @MON & '-' & @MDAY local $hfile=FileOpen("\\192.168.26.17\Logs\coreserverlog.txt", 1) _main() Func _Main() while 1 ;~ _Startup() _GUI() WEnd EndFunc ;==>_Main Func _Startup() RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "NoLogoff", "REG_DWORD", "1") RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "1") ;======================= ; For Windows 7 and Server 2008+ ;======================= ;~ ProcessClose('explorer.exe') ;~ Sleep(1000) ;~ Run('explorer.exe') ;~ WinWaitActive('Libraries', '') ;~ WinClose('Libraries') ;======================= ; For non-windows 7 / server 2008 + computers ;======================= ProcessClose('explorer.exe') Sleep(1000) Run('explorer.exe') WinWaitActive('My Documents', '') WinClose('My Documents') EndFunc ;==>_Startup Func _gui() local $sUsername = @UserName ; User Name Local $sComputername = @ComputerName ; Computer Name Local $sText1 = ""; Output text for message box. Local $sText2 = ""; Output text for message box. Local $sTest3 = ""; Output text for message box. Local $combo1 = ""; Output text for combo box. Local Const $sDomain = 'domain.com' Local Const $sServer = "mail" & '.' & $sDomain Local Const $sSupportEmail = "user" & '@' & $sDomain ClipPut($sServer) $sText1 = "Username = " & $sUsername & @CRLF ; The & character concentrates (joins) two values together. $sText2 = "Computer Name = " & $sComputername & @CRLF ; The &= adds to the variable. The same as doing $var = $var & "extra stuff" Opt("TrayOnEventMode",1) Opt("TrayMenuMode",1) TraySetOnEvent($TRAY_EVENT_PRIMARYUP,"SpecialEvent") ;TraySetState(2) ; hide --> not needed Local $hMainwindow = GUICreate("Server Logon Form", 300, 300, Default, Default, BitAND($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_CONTEXTHELP) Local $hOkButton = GUICtrlCreateButton("&OK", 75, 225, 150) GUISetState() ; _AddHorzSep(10, 40, 290) ; _AddHorzSep(10, 60, 280) ;~ $Label2 = GUICtrlCreateLabel("", 120, 38, 150, 25) $Label3 = GUICtrlCreateLabel("&Ticket #: ", 25, 38, 55) $hInputText1 = GUICtrlCreateInput("", 75, 35, 50, 20, $ES_NUMBER) GUICtrlSetLimit(-1, 4) $Label4 = GUICtrlCreateLabel("&Reason for Logging In:", 25, 70, 200) $hInputText2 = GUICtrlCreateEdit("", 25, 90, 235, 125, 0) $Label5 = GuiCtrlCreateLabel("", 145, 70, 200, 20) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $hOkButton $name = GUICtrlRead($hInputText2) $msg = "Login Detected on " & @ComputerName & @CRLF & @CRLF & "Ticket #: " & GUICtrlRead($hInputText1) & @CRLF & @CRLF & "Details: " & GUICtrlRead($hInputText2) & @CRLF & @CRLF & "" & $sText1 & $sText2 & _wmigetcompinfo() If $name = "" Then GUICtrlSetData($Label5, "Please enter a reason") GUICtrlSetColor($Label5, 0xFF0000) Else If GuiCtrlRead($hInputText1) = "" Then GUICtrlSetData($hInputText1, 'n/a') Else EndIf If $hfile = -1 Then msgbox(0, "Error", "Unable to open file.") Exit EndIf ; Read the file _FileReadToArray("\\192.168.26.17\Logs\coreserverlog.txt", $aLines) If Not @error Then ; if the file exists look for the ID starting on the last line For $i = $aLines[0] To 1 Step -1 If StringLeft($aLines[$i], 2) == "id" Then ; get the ID number $iCount = Int(StringRegExpReplace($aLines[$i], "id(\d*):.*", "$1")) ExitLoop EndIf Next ; Check we found an ID If $i = 0 Then MsgBox(0, "Error", "No line id found") Exit EndIf EndIf FileWrite($hfile, _LineID() & '|' & $hDate & '|' & $sComputername & '|' & $sUsername & '|' & GUICtrlRead($hInputText1) & '|' & GUICtrlRead($hInputText2) & @CRLF) FileClose($hfile) Sleep(1000) OKButton($sServer, $sUsername, $sUsername & '@' & $sDomain, $sSupportEmail, "Login Detected on " & $sComputername, $msg) If ProcessExists('Core_Logoff.exe') Then Else Run('C:\Windows\Core_Logoff.exe') EndIf ;~ RunWait('C:\Windows\Idle_Logoff.exe') Exit EndIf EndSwitch WEnd EndFunc ;==> gui Func _LineID() $iCount += 1 Return "id" & StringFormat("%04i", $iCount) & ": " EndFunc ;==> LineID Func RegRemove() RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "NoLogoff", "REG_DWORD", "0") RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "0") ;======================= ; For Windows 7 and Server 2008+ ;======================= ;~ ProcessClose('explorer.exe') ;~ Sleep(1000) ;~ Run('explorer.exe') ;~ WinWaitActive('Libraries', '') ;~ WinClose('Libraries') ;======================= ; For non-windows 7 / server 2008 + computers ;======================= ProcessClose('explorer.exe') Sleep(1000) Run('explorer.exe') WinWaitActive('My Documents', '') WinClose('My Documents') EndFunc ;==> RegRemove Func SpecialEvent() GUISetState(@SW_SHOW) TraySetState(2) ; hide EndFunc ;==> SpecialEvent Func _exit() Do $Pass = InputBox ("Password", "Please enter your password", "", "*M") $Split = StringSplit ($Pass, "") If $Split[0] Then $ConfirmPass = "admin" If $Pass <> $ConfirmPass Then MsgBox (48, "Error", "Passwords do not match!!") EndIf Until $Pass = $ConfirmPass If $ConfirmPass Then SplashTextOn( "Closing", "Closing without sending email", 300, 50) Sleep(3000) RegRemove() Exit EndIf EndFunc ;==> _exit Func _AddHorzSep($iX, $iY, $iW) GUICtrlCreateLabel("", $iX, $iY, $iW, 1) GUICtrlSetBkColor(-1, 0x000000) EndFunc ;==>_AddHorzSep Func _wmigetcompinfo($strComputer = "localhost") ; Generated by AutoIt Scriptomatic November 30, 2012 $wbemFlagReturnImmediately = 0x10 $wbemFlagForwardOnly = 0x20 $colItems = "" $sOutput = "" ;- $sOutput &= "Computer: " & $strComputer & @CRLF $sOutput &= "" $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _ $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems $sOutput &= "Computer Status: " & $objItem.Status & @CRLF Next Else Return ("WMI not functional") EndIf $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _ $wbemFlagReturnImmediately + $wbemFlagForwardOnly) Return ($sOutput) EndFunc ;==>_wmigetcompinfo Func WMIDateStringToDate($dtmDate) Return (StringMid($dtmDate, 5, 2) & "/" & _ StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _ & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2)) EndFunc ;==>WMIDateStringToDate Func OKButton($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $s_Body) $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $s_Body) ProgressOn("Progress", "Submitting your ticket...", "0 percent") For $i = 0 To 100 Step 20 Sleep(500) ProgressSet($i, $i & " percent") Next ProgressSet(100, "Done", "Complete") Sleep(500) ProgressOff() If @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc) Else Sleep(2000) RegRemove() EndIf EndFunc ;==>OKButton Func OnEmail($sSupportEmail) Run(@ComSpec & " /c " & 'start mailto:' & $sSupportEmail, "", @SW_HIDE) EndFunc ;==>OnEmail Func CLOSEClicked() ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE, ;and @GUI_WINHANDLE would equal $hMainwindow Exit EndFunc ;==>CLOSEClicked Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $sBody = "", $s_AttachFiles = "",$s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($sBody, "<") And StringInStr($sBody, ">") Then $objEmail.HTMLBody = $sBody Else $objEmail.Textbody = $sBody & @CRLF EndIf If $s_AttachFiles <> "" Then Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") For $x = 1 To $S_Files2Attach[0] $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) ;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ; ### Debug Console If FileExists($S_Files2Attach[$x]) Then ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF) $objEmail.AddAttachment($S_Files2Attach[$x]) Else ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) SetError(1) Return 0 EndIf Next EndIf $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 Then $IPPort = 25 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort ;Authenticated SMTP If $s_Username <> "" Then $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password EndIf If $ssl Then $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True EndIf ;Update settings $objEmail.Configuration.Fields.Update ; Set Email Importance Switch $s_Importance Case "High" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High" Case "Normal" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal" Case "Low" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low" EndSwitch $objEmail.Fields.Update ; Sent the Message $objEmail.Send If @error Then SetError(2) Return $goMyRet EndIf $objEmail = "" EndFunc ;==>_INetSmtpMailCom ; ; ; Com Error Handler Func MyErrFunc() $HexNumber = Hex($goMyError.number, 8) $goMyRet[0] = $HexNumber $goMyRet[1] = StringStripWS($goMyError.description, 3) ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $goMyError.scriptline & " Description:" & $goMyRet & @LF) SetError(1); something to check for when this function returns Return EndFunc ;==>MyErrFunc Thanks again! Grimm Thanks Grimm
Developers Jos Posted April 9, 2013 Developers Posted April 9, 2013 (edited) You forgot to update the other reference to the variable in the consolewrite statement. ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $goMyError.scriptline & " Description:" & $goMyRet[1] & @LF) Edited April 9, 2013 by Jos SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past.Â
grimmlock Posted April 9, 2013 Author Posted April 9, 2013 Silly me, fixed and reposting code....still getting error. expandcollapse popup#NoTrayIcon #include <File.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <Constants.au3> #include <GUIConstantsEx.au3> #include <GUIConstants.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <Array.au3> #include <Date.au3> Global $goMyRet[2] Global $goMyError = ObjEvent("AutoIt.Error", "MyErrFunc") HotKeySet("#{F4}", "_exit") ; Win + F4 to exit Local $aLines, $iCount = 0 local $hDate = @YEAR & '-' & @MON & '-' & @MDAY local $hfile=FileOpen("\\192.168.26.17\Logs\coreserverlog.txt", 1) _main() Func _Main() while 1 ;~ _Startup() _GUI() WEnd EndFunc ;==>_Main Func _Startup() RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "NoLogoff", "REG_DWORD", "1") RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "1") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "1") ;======================= ; For Windows 7 and Server 2008+ ;======================= ;~ ProcessClose('explorer.exe') ;~ Sleep(1000) ;~ Run('explorer.exe') ;~ WinWaitActive('Libraries', '') ;~ WinClose('Libraries') ;======================= ; For non-windows 7 / server 2008 + computers ;======================= ProcessClose('explorer.exe') Sleep(1000) Run('explorer.exe') WinWaitActive('My Documents', '') WinClose('My Documents') EndFunc ;==>_Startup Func _gui() local $sUsername = @UserName ; User Name Local $sComputername = @ComputerName ; Computer Name Local $sText1 = ""; Output text for message box. Local $sText2 = ""; Output text for message box. Local $sTest3 = ""; Output text for message box. Local $combo1 = ""; Output text for combo box. Local Const $sDomain = 'yvl.org' Local Const $sServer = "mail" & '.' & $sDomain Local Const $sSupportEmail = "ptukey" & '@' & $sDomain ClipPut($sServer) $sText1 = "Username = " & $sUsername & @CRLF ; The & character concentrates (joins) two values together. $sText2 = "Computer Name = " & $sComputername & @CRLF ; The &= adds to the variable. The same as doing $var = $var & "extra stuff" Opt("TrayOnEventMode",1) Opt("TrayMenuMode",1) TraySetOnEvent($TRAY_EVENT_PRIMARYUP,"SpecialEvent") ;TraySetState(2) ; hide --> not needed Local $hMainwindow = GUICreate("Server Logon Form", 300, 300, Default, Default, BitAND($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_CONTEXTHELP) Local $hOkButton = GUICtrlCreateButton("&OK", 75, 225, 150) GUISetState() ; _AddHorzSep(10, 40, 290) ; _AddHorzSep(10, 60, 280) ;~ $Label2 = GUICtrlCreateLabel("", 120, 38, 150, 25) $Label3 = GUICtrlCreateLabel("&Ticket #: ", 25, 38, 55) $hInputText1 = GUICtrlCreateInput("", 75, 35, 50, 20, $ES_NUMBER) GUICtrlSetLimit(-1, 4) $Label4 = GUICtrlCreateLabel("&Reason for Logging In:", 25, 70, 200) $hInputText2 = GUICtrlCreateEdit("", 25, 90, 235, 125, 0) $Label5 = GuiCtrlCreateLabel("", 145, 70, 200, 20) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $hOkButton $name = GUICtrlRead($hInputText2) $msg = "Login Detected on " & @ComputerName & @CRLF & @CRLF & "Ticket #: " & GUICtrlRead($hInputText1) & @CRLF & @CRLF & "Details: " & GUICtrlRead($hInputText2) & @CRLF & @CRLF & "" & $sText1 & $sText2 & _wmigetcompinfo() If $name = "" Then GUICtrlSetData($Label5, "Please enter a reason") GUICtrlSetColor($Label5, 0xFF0000) Else If GuiCtrlRead($hInputText1) = "" Then GUICtrlSetData($hInputText1, 'n/a') Else EndIf If $hfile = -1 Then msgbox(0, "Error", "Unable to open file.") Exit EndIf ; Read the file _FileReadToArray("\\192.168.26.17\Logs\coreserverlog.txt", $aLines) If Not @error Then ; if the file exists look for the ID starting on the last line For $i = $aLines[0] To 1 Step -1 If StringLeft($aLines[$i], 2) == "id" Then ; get the ID number $iCount = Int(StringRegExpReplace($aLines[$i], "id(\d*):.*", "$1")) ExitLoop EndIf Next ; Check we found an ID If $i = 0 Then MsgBox(0, "Error", "No line id found") Exit EndIf EndIf FileWrite($hfile, _LineID() & '|' & $hDate & '|' & $sComputername & '|' & $sUsername & '|' & GUICtrlRead($hInputText1) & '|' & GUICtrlRead($hInputText2) & @CRLF) FileClose($hfile) Sleep(1000) OKButton($sServer, $sUsername, $sUsername & '@' & $sDomain, $sSupportEmail, "Login Detected on " & $sComputername, $msg) If ProcessExists('Core_Logoff.exe') Then Else Run('C:\Windows\Core_Logoff.exe') EndIf ;~ RunWait('C:\Windows\Idle_Logoff.exe') Exit EndIf EndSwitch WEnd EndFunc ;==> gui Func _LineID() $iCount += 1 Return "id" & StringFormat("%04i", $iCount) & ": " EndFunc ;==> LineID Func RegRemove() RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "StartMenuLogOff", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer", "NoLogoff", "REG_DWORD", "0") RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "0") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\System", "DisableLockWorkstation", "REG_DWORD", "0") ;======================= ; For Windows 7 and Server 2008+ ;======================= ;~ ProcessClose('explorer.exe') ;~ Sleep(1000) ;~ Run('explorer.exe') ;~ WinWaitActive('Libraries', '') ;~ WinClose('Libraries') ;======================= ; For non-windows 7 / server 2008 + computers ;======================= ProcessClose('explorer.exe') Sleep(1000) Run('explorer.exe') WinWaitActive('My Documents', '') WinClose('My Documents') EndFunc ;==> RegRemove Func SpecialEvent() GUISetState(@SW_SHOW) TraySetState(2) ; hide EndFunc ;==> SpecialEvent Func _exit() Do $Pass = InputBox ("Password", "Please enter your password", "", "*M") $Split = StringSplit ($Pass, "") If $Split[0] Then $ConfirmPass = "admin" If $Pass <> $ConfirmPass Then MsgBox (48, "Error", "Passwords do not match!!") EndIf Until $Pass = $ConfirmPass If $ConfirmPass Then SplashTextOn( "Closing", "Closing without sending email", 300, 50) Sleep(3000) RegRemove() Exit EndIf EndFunc ;==> _exit Func _AddHorzSep($iX, $iY, $iW) GUICtrlCreateLabel("", $iX, $iY, $iW, 1) GUICtrlSetBkColor(-1, 0x000000) EndFunc ;==>_AddHorzSep Func _wmigetcompinfo($strComputer = "localhost") ; Generated by AutoIt Scriptomatic November 30, 2012 $wbemFlagReturnImmediately = 0x10 $wbemFlagForwardOnly = 0x20 $colItems = "" $sOutput = "" ;- $sOutput &= "Computer: " & $strComputer & @CRLF $sOutput &= "" $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _ $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems $sOutput &= "Computer Status: " & $objItem.Status & @CRLF Next Else Return ("WMI not functional") EndIf $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _ $wbemFlagReturnImmediately + $wbemFlagForwardOnly) Return ($sOutput) EndFunc ;==>_wmigetcompinfo Func WMIDateStringToDate($dtmDate) Return (StringMid($dtmDate, 5, 2) & "/" & _ StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _ & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2)) EndFunc ;==>WMIDateStringToDate Func OKButton($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $s_Body) $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $s_Body) ;~ ProgressOn("Progress", "Submitting your ticket...", "0 percent") ;~ For $i = 0 To 100 Step 20 ;~ Sleep(500) ;~ ProgressSet($i, $i & " percent") ;~ Next ;~ ProgressSet(100, "Done", "Complete") ;~ Sleep(500) ;~ ProgressOff() If @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc) Else Sleep(2000) RegRemove() EndIf EndFunc ;==>OKButton Func OnEmail($sSupportEmail) Run(@ComSpec & " /c " & 'start mailto:' & $sSupportEmail, "", @SW_HIDE) EndFunc ;==>OnEmail Func CLOSEClicked() ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE, ;and @GUI_WINHANDLE would equal $hMainwindow Exit EndFunc ;==>CLOSEClicked Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $sBody = "", $s_AttachFiles = "",$s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($sBody, "<") And StringInStr($sBody, ">") Then $objEmail.HTMLBody = $sBody Else $objEmail.Textbody = $sBody & @CRLF EndIf If $s_AttachFiles <> "" Then Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") For $x = 1 To $S_Files2Attach[0] $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) ;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF) $objEmail.AddAttachment($S_Files2Attach[$x]) Else ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) SetError(1) Return 0 EndIf Next EndIf $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 Then $IPPort = 25 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort ;Authenticated SMTP If $s_Username <> "" Then $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password EndIf If $ssl Then $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True EndIf ;Update settings $objEmail.Configuration.Fields.Update ; Set Email Importance Switch $s_Importance Case "High" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High" Case "Normal" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal" Case "Low" $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low" EndSwitch $objEmail.Fields.Update ; Sent the Message $objEmail.Send If @error Then SetError(2) Return $goMyRet EndIf $objEmail = "" EndFunc ;==>_INetSmtpMailCom ; ; ; Com Error Handler Func MyErrFunc() $HexNumber = Hex($goMyError.number, 8) $goMyRet[0] = $HexNumber $goMyRet[1] = StringStripWS($goMyError.description, 3) ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $goMyError.scriptline & " Description:" & $goMyRet[1] & @LF) SetError(1); something to check for when this function returns Return EndFunc ;==>MyErrFunc Thanks! Grimm Thanks Grimm
Developers Jos Posted April 9, 2013 Developers Posted April 9, 2013 Understand, but it should now tell you which line, errorcode and description....right? SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past.Â
grimmlock Posted April 9, 2013 Author Posted April 9, 2013 Yes sir you are correct. However error code still equals 2 and no description Thanks Grimm Thanks Grimm
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now