Leaderboard
Popular Content
Showing content with the highest reputation on 01/02/2012 in all areas
-
Ok.. this one time I will bite to show you what makes sense, but you really should try to understand what the script does and use the full version of SciTE4AutoIt3 so that the au3check is always run to filter out script errors. All I have done is rearrange the lines and uncommented $AttachFiles since that is used, but only made it "". #include <File.au3> #include <Array.au3> ;################################## ; Variables ;################################## $filefolder = 'D:Inputp' $fileextension = '*.eml' $result = 'Check attached .txt for latest status on Checker' $SmtpServer = "exch-server" ; address for the smtp-server to use - REQUIRED $FromName = "IT Helpdesk" ; name from who the email was sent $FromAddress = "matt@company.com" ; address from where the mail should come $ToAddress = "it.helpdesk@company.com" ; destination address of the email - REQUIRED $Subject = "Automatic Helpdesk Generated E-mail" ; subject from the email - can be anything you want it to be $Body = $result ; the messagebody from the mail - can be left blank but then you get a blank mail $AttachFiles = "" ;"c:matttasks.txt" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed $CcAddress = "" ; address for cc - leave blank if not needed $BccAddress = "" ; address for bcc - leave blank if not needed $Importance = "Normal" ; Send message priority: "High", "Normal", "Low" $Username = "******" ; username for the account used from where the mail gets sent - REQUIRED $Password = "********" ; password for the account used from where the mail gets sent - REQUIRED $IPPort = 25 ; port used for sending the mail $ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS ;~ $IPPort=465 ; GMAIL port used for sending the mail ;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS ;################################## ; Script ;################################## Global $oMyRet[2] Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") ; While 1 sleep(5000) $FileList = _FileListToArray($filefolder, $fileextension);only list files with given extension If $FileList[0] > 10 Then ;MsgBox(0, "number of files:", $FileList[0]) $result = $FileList[0] & " are stuck on the DMZ, please investigate ASAP" $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl) If @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc) EndIf EndIf WEnd ; ; The UDF Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $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_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @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 $oMyRet[1] EndIf $objEmail = "" EndFunc ;==>_INetSmtpMailCom ; ; ; Com Error Handler Func MyErrFunc() $HexNumber = Hex($oMyError.number, 8) $oMyRet[0] = $HexNumber $oMyRet[1] = StringStripWS($oMyError.description, 3) ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF) SetError(1); something to check for when this function returns Return EndFunc ;==>MyErrFunc1 point
-
You're only checking the files once, and you're doing it outside of your loop. If you want to monitor the folder, you need to move this line "$FileList = _FileListToArray($filefolder, $fileextension)", inside of the While Wend loop, and also you might want to think about a way to exit that loop, because right now it's going to run until you kill the process.1 point
-
In my loop wrong ?
MattX reacted to AdmiralAlkex for a topic
You only do the _FileListToArray() once before the loop but it seems like you want the loop to check for changes. Move the _FileListToArray() to the start of the loop.Also, you should add a Sleep() in there. Listing the files thousands of times per second seems overkill, no?You are including Array.au3 but not using anything from there.And finally, as the Else is optional, remove it if there's no code in there.1 point -
MattX, You have the files listed in $FileList and you are trying to display $array[0]. M231 point
-
1 point
-
graydwarf, Searching the Help file for "wildcards" brings up 7 references - the second of which (FileFindFirstFile) states this: "Wildcards: In general, * denotes zero or more characters, and ? denotes zero or one character. If your file search string contains only wildcards (or is "*.*"), then see the example below for the return value! You can use only one wildcard in the filename part or in the extension part i.e. a*.b?. ?? seems equivalent to * (not described in Microsoft documentation). When using a 3-char extension any extension starting with those 3 chars will match, .e.g. "*.log" will match "test.log_1". (not described either in Microsoft documentation)." Us old(er) members remember all that from DOS days - seems like a lifetime ago. M231 point
-
zbatev, Look at GUISetAccelerators in the Help file. They are like HotKeys, but are only active when your GUI has focus. M231 point
-
Try this to unhide the selection: _SendMessage($hWnd, $EM_HIDESELECTION, False)1 point
-
When to give appropriate credit to other forum/AutoIt users for shared code?
graydwarf reacted to jvanegmond for a topic
Some legal notes on free code with proprietary software. When a copyright notice is available, such as GPL / MIT / Apache etc., the case is clear. You must stick to the terms under the license. When a copyright notice is NOT available, then the work belongs to the original author. If the author states his own terms without using a license, then you can use it as long as you don't break those mentioned terms. If the author does not state how it can be used, then I think you are legally not allowed to use it. However, considering this forum is intended for the sharing of code to be used by anyone, all the code here that doesn't fall under a license or other terms, fall under the public domain. You can consider these free to be used and redistributed in any software under any license. In all cases above, if the author does not state if and how attribution should be done, then you are free to do as you please. Including not attribute at all. Personal experience writing a proprietary application. It had to be distributed quickly. I used as much open and free libraries as possible and it ended up as about 1000 lines of my own code. That's nothing. When I had to distribute the application, I had to include a dozen licenses for the open source libraries. In the application GUI, I had to attribute some of the libraries as well. It was truly a hell to include every term according to each libraries own license. After that (and other similar such bad experiences), I have never asked for my source code to be attributed. Many others on this forum feel the same way, and are fine with their code being reused and sold by others. Without attribution. It is always appreciated however! An upside is that if you accredit a library, the author of that library can be tracked down to fix bugs instead of you being asked to do it. As for a standard on this forum, there is none. Keep the library in its original form, especially all comments and headers. Link to the topic or post where you found it (for convenience). If you want, you can thank the author of a library which was important to you. For example if you are building an FTP client with GUI, you can thank the author of the FTP library you used. Don't thank the author of Array.au3. You get the idea.1 point -
ProcessClose appears to close all processes with the given name
graydwarf reacted to jvanegmond for a topic
The iexplore.exe process closes its child processes when it exists. iexplore.exe <-- Kill this, it kills the rest - iexplore.exe - iexplore.exe - iexplore.exe1 point -
autoit.chm is just a merge file By accessing that it will import the contents of autoit3.chm and the contents of the UDFs3.chm file so it will appear they are a single file. As someone pointed out already, all of the individual html files are usually available but I can't find them now. If you actually do decide to decompile the help files then you can open the hhc files in notepad and it's pretty easy to see how a merge file works.1 point
-
Here a version playing a wave file which is saved as a binary string when Shake It button was pressed: Opt("GUIOnEventMode", 1) Global Const $hGUI = GUICreate("Shake it by UEZ 2011", 320, 200) Global Const $idButton = GUICtrlCreateButton("Shake it", 120, 80, 80, 40) GUISetState() Global Const $shake_interval = 0.6 * 1000 Global Const $shake_sleep = 30 ;30 ms Global Const $shake_radius = 30 ;30 pixel Global Const $SND_SYNC = 0, $SND_ASYNC = 1, $SND_NODEFAULT = 2, $SND_MEMORY = 4, $SND_NOWAIT = 0x2000 #region Global $bShake = _Sound() Global $ByteStruct_Snd_Shake = DllStructCreate("byte[" & BinaryLen($bShake) & "]") DllStructSetData($ByteStruct_Snd_Shake, 1, $bShake) Global Const $BytePtr_Snd_Shake = DllStructGetPtr($ByteStruct_Snd_Shake) Global Const $fuSound = BitOR($SND_MEMORY, $SND_ASYNC, $SND_NODEFAULT, $SND_NOWAIT) #endregion GUISetOnEvent(-3, "_Exit") GUICtrlSetOnEvent($idButton, "ShakeIt") Do Until Not Sleep(0xFFFFFF) Func ShakeIt() Local $aPos = WinGetPos($hGUI) sndPlaySound($BytePtr_Snd_Shake, $fuSound) Local $t = TimerInit() Do WinMove($hGUI, "", $aPos[0] + Random(-$shake_radius, $shake_radius, 1), $aPos[1] + Random(-$shake_radius, $shake_radius, 1)) Until TimerDiff($t) > $shake_interval * Sleep($shake_sleep) WinMove($hGUI, "", $aPos[0], $aPos[1]) EndFunc Func _Exit() GUIDelete($hGUI) Exit EndFunc #region Func sndPlaySound($lpszSound, $fuSound) Local $Type = "wstr", $aRes If IsPtr($lpszSound) Then $Type = "ptr" $aRes = DllCall("winmm.dll", "int", "sndPlaySound", $Type, $lpszSound, "dword", $fuSound) If @error Then Return SetError(1, 0, 0) Return $aRes[0] EndFunc ;==>sndPlaySound ;Code was generated by File to Base64 String Code Generator Func _Sound() Local $Sound $Sound &= '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' $Sound &= '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' $Sound &= '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' $Sound &= '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' $Sound &= '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' $Sound &= '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' $Sound &= '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' $Sound &= 'unxYsfDFdJv21t1traACMpQmvtGEaOZWIv/7oACsgAONLk9rGMLebIZaHWcPW40UiT2sZwl5vhmn9Zw9bgAoC7EUUNCtCsdinxhgYAApCUZS6cvk6N4tcSI7z708voonJJTapJjTSiHMiZXn7126OwaZwMZQpJMOKlb0RlJng0uLTSHTGv/8XrnX1/j0+P9Y/3/jCmedLjOx5YAl7W67WWNkAKGFDyrFiuOaBzXF9MlxA5kasGMywKiXxECpjTQ27SfaLh1XpMLjR8gPO86UrprL8FwiSzrU3PEwQQcsAmBCByCIkyNovGhxGcSWdWnstFTppsmmtb7rqRrUmyta3n2V///////////////////////////////////////////////////////////////////////////////gTa626SxsgBkCMSbcIhhy3AYKzlY72hPWyxhZM3dIJAUKtrrRmgXqM1AUlrDS+x2Z1N18KWo46PjTA6eg3DUeALgCsEpUB4CEnS4/BMak09es1/HUtbv//bEX876+4QWe9NQDu21tkkSIARcXEQDgeVS6MyllIoSUmRcl4xtBxuqqZVEDgQwOFLpqJCCNIFglqfapbu10klanUQq3CuoGu+gQl2rBXmdrpEk3Wb+E+l0Y0WhjRShLKyzm+tJV//uvttjQAICGhDA8Ds4bZ+GXQxArRj3Rf6SuRaglF4DFA2nKlNNXJf/7ogDEAAUTM09rGYrcYoZZ3WMLW4tAgzmsZekxaxmodZwtbgqgIkrqi07FML17HuR8QYasegvzMCKuYFo9SXLFbZkqH8yfdWhTf731LHf///9f+4/ABlutkskiQACBCLJekzoEbZnOcRamLHinsGw3MNuxh4zCCaM88zjKyERTADUohsWJHV7LvbLG0gYm4trMrxl7ghxrOUa0VuhesFhcIMfMiJOcYm3YZQthL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wttrbtLIwQAh2licqrgcK4TaQ+1xoDrmVZ2ivSuByUwAUnHIfnZWsCLhU6sS6kywyy53IlDQDhELZ5MmYLhFnOgwdHV0OIj1epr/86n//8nEWiamWaf/rQACEi9BRBM6UuXLfZ0+qVhv3QFZVSjbIVPgYhoHf3aW0LDm8aBpqple4zWlcRkBXecb3EncCRlK5strRyijAkWwoSoxmiL4oVddbbZJEiABUAmEKgyZ6d0tSXQTRiCVNBT3O5NSd0hURotBmUVht0Gz/+6AA2oAHZCHN6xl6TFAGWe1nCluJ7HEx7GXpIWMZZzWcHW4BhZBDkcq4Va8zRbsOBYaJMdFG4mFQ+EYCziIsEcH4imETgYODhdt/////x8bAP1AQR4d3Znt1cIAVWJiCWJdz3R+OypS5dLkBItZ35141lCMkOYTwjcRe6VMiCUkx6R+88cssvy0XTpRPLZqB1MTcEcCWGSePlEwNEXpUUUU1P/XfroKrTUpNBq5gX0FGKv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wZbbZJJI2wAytFkZIbwvWzhKNSxg6ISZRowJRt0chx27gEhqqsqG7EBYpTFAHjltLbq1cK+q00WmSyRXy5Rdh0aR0i8lGRuO8zSqTIrHwqXZTv//jj/+//mH/dwwhXN0iCPDuzK0ujYAETJiBmJOBp74NtAKqJaxc4Sk7k/Bjp2ywMv' $Sound &= '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' $Sound &= 'SwkAum1rcANdsWXg//+kokJ/QB8ADwD/DwAPAA8ADwAPAA8ADwAPAH8PAA8ADwAPAA8ADwBqZ10AlsusDwACASUAEgRgWQ3sqiIAsFLrIM0MfRwAGq4oxK8Gf+8AEz2LywdCRTCAkyotB47cekNBAAwnGkfjDxJIACZhqSxhLycDAKA1Gowd5OByAAaksQKsnDa2ANUoHhr+STLjAHrBokR0Hf/LAAdMjlktYYAAABDESBJMlNmdAIBTtrkRw4yrAKSHL//aZBI3ABJsEBTYik7NAGRWd4sYPACnAKGB5fDKCP/6/MS/LwsPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAEEGAOWikCiAkSDbAAANiw3H2yVBALgWAUjUPEIlAAIEGSKHiEJgADmFI9DAiJQeAI1CMjri6zNAAL6gzoJmv/idAAbA4I2IOgHkALUUbLYNiIOZAFLYDSYB2RUIAGVq+YW9Qw4MAJAJJBUD5nmV+ASy328HDwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8ADw8ADwAKAOJhDuMCRgCgDAAIC0BI9AAJIAEAAAEuAAQAAKB+JcAAAAQDTwMPAP//4aTQCAAAow0LoWIvSP/fAQ8ADwAPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwD/DwAPAA8ADwAPAA8ADwAPAEOkIOFhDygASzChCPAAAAlwcCCvIA8ADwAPBgCgAw8ACgADsAIAkAE=' $Sound = _Base64Decode($Sound) Local $tSource = DllStructCreate('byte[' & BinaryLen($Sound) & ']') DllStructSetData($tSource, 1, $Sound) Local $tDecompress _WinAPI_LZNTDecompress($tSource, $tDecompress) $tSource = 0 Return Binary(DllStructGetData($tDecompress, 1)) EndFunc ;==>_Sound Func _Base64Decode($input_string) Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000) Local $tBuffer, $Ret $tOutput = 0 $tBuffer = DllStructCreate('byte[' & $iBufferSize & ']') If @error Then Return SetError(1, 0, 0) $Ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0) If @error Then Return SetError(2, 0, 0) If $Ret[0] Then Return SetError(3, $Ret[0], 0) $tOutput = DllStructCreate('byte[' & $Ret[6] & ']') If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[6]) Then $tOutput = 0 Return SetError(4, 0, 0) EndIf Return $Ret[6] EndFunc ;==>_WinAPI_LZNTDecompress Func _WinAPI_MoveMemory($pDestination, $pSource, $iLenght) DllCall('ntdll.dll', 'none', 'RtlMoveMemory', 'ptr', $pDestination, 'ptr', $pSource, 'ulong_ptr', $iLenght) If @error Then Return SetError(5, 0, 0) Return 1 EndFunc ;==>_WinAPI_MoveMemory #endregion Br, UEZ1 point
-
Thanks. I'll do that. It looks like ProcessWait might do it too.1 point