Leaderboard
Popular Content
Showing content with the highest reputation on 02/07/2017 in all areas
-
This is my another try on playing XM music in AutoIt. Usually you would need third party dll to play this music. The problem is need for both x86 and x64 dlls for universal application. Deploying these new files has its own downsides. That's why I decided to write my engine for the player. It's written in c++ following available XM documentation, and compiled using free version of Visual Studio. After that binary data is extracted and embedded compressed inside the script. When the script is used the code is decompressed. Download zip file and extract folder inside together with all files (most of them are XM music files of my choice), run Player.au3 and see if it's working for you. XM_Play.zip There are no dlls, external files or anything else of such kind. Available functions are: Load_XM Free_XM Pause_XM Play_XM Vol_XM Player.au3 is just an example. ...Oh, and you can load online XMs directly specifying URL.3 points
-
GUI for cmail command line utility
argumentum reacted to MattHiggs for a topic
Hey autoit scripters. I just finished up a script that provides a GUI interface for cmail, a command line utility which allows email to be sent via command line, is easy to use, and is compatible with almost any mailbox setup. I wrote the GUI to provide a way to create "template" messages which can be saved for future and will allow the user to send repetitive emails to many people very quickly rather than having to type out the same email over and over again. Includes drag and drop attachment support. Note that the command which actually runs the cmail utility may require you to modify it in order to make it work for your particular mail setup (eg configuring a proxy server, disable use of TLS, include more advanced features, etc.), as I utilized the utilities basic parameters that were compatible with my GMail account when writing this script. BTW, for those of you looking for a way to send email from your gmail account via command line without the need to lower your security settings, cmail is the tool to use. just create a "custom app password" for the tool to utilize, and it works like a charm. And a big thank you to "big_daddy" for his Spell checker example that was incorporated into this script to check messages for spelling errors prior to sending the message, found here. You will also need Zip.au3 udf in autoit "includes" folder. Now, without further ado: #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_UseX64=y #AutoIt3Wrapper_Res_SaveSource=y #AutoIt3Wrapper_Res_Language=1033 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; *** Start added by AutoIt3Wrapper *** #include <ListBoxConstants.au3> ; *** End added by AutoIt3Wrapper *** ; *** Start added by AutoIt3Wrapper *** #include <AutoItConstants.au3> ; *** End added by AutoIt3Wrapper *** ; *** Start added by AutoIt3Wrapper *** #include <MsgBoxConstants.au3> ; *** End added by AutoIt3Wrapper *** #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.15.0 (Beta) Author: William Higgs Script Function: Provides a graphical user interface for the command line utility "Cmail", which lets one send emails via command line. I wrote this specificially to reduced the ammount of time needed to send messages to potential employers. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <ComboConstants.au3> #include <File.au3> #include <Array.au3> #include <GuiEdit.au3> #include <GuiListBox.au3> #include <Constants.au3> #include <Word.au3> #include <Array.au3> OnAutoItExitRegister ( "_Exit" ) Global $trans = False ;_WordErrorHandlerRegister() If Not FileExists ( @MyDocumentsDir & "\settings.ini" ) Then If Not IsDeclared("sInputBoxAnswer") Then Local $sInputBoxAnswer $sInputBoxAnswer = InputBox("Name","What is the name wou want the recipients of your messages to see in regards to the sender? (Should be your name)",""," ") If @error = 1 Then Exit Else IniWrite ( @MyDocumentsDir & "\settings.ini", "Config", "Name", $sInputBoxAnswer ) EndIf If Not IsDeclared("sInputBoxAnswer") Then Local $sInputBoxAnswer $sInputBoxAnswer = InputBox("Email address","What is your email address or the email address of the account sending the mail?",""," ") If @error = 1 Then Exit Else IniWrite ( @MyDocumentsDir & "\settings.ini", "Config", "Email Address", $sInputBoxAnswer ) EndIf If Not IsDeclared("sInputBoxAnswer") Then Local $sInputBoxAnswer $sInputBoxAnswer = InputBox("SMTP server","What is the address of the SMTP server for your outgoing mail?",""," ") If @error = 1 Then Exit Else IniWrite ( @MyDocumentsDir & "\settings.ini", "Config", "SMTP Server", $sInputBoxAnswer ) EndIf $sInputBoxAnswer = InputBox("Email Port","What is the port used by smtp server?",""," ") If @error = 1 Then Exit Else IniWrite ( @MyDocumentsDir & "\settings.ini", "Config", "Port", $sInputBoxAnswer ) EndIf $sInputBoxAnswer = InputBox("Email Username","What is the username used to login to your email?",""," ") If @error = 1 Then Exit Else IniWrite ( @MyDocumentsDir & "\settings.ini", "Config", "User name", $sInputBoxAnswer ) EndIf $sInputBoxAnswer = InputBox("Email Password","What is the password used to login to your email?",""," ") If @error = 1 Then Exit Else IniWrite ( @MyDocumentsDir & "\settings.ini", "Config", "Password", $sInputBoxAnswer ) EndIf If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer $iMsgBoxAnswer = MsgBox($MB_YESNO + $MB_ICONQUESTION + $MB_SYSTEMMODAL,"Proxy server?","Does your network utilize a proxy server?") If $iMsgBoxAnswer = $IDYES Then $sInputBoxAnswer = InputBox("Proxy server","What is the proxy server address?",""," ") If @error = 1 Then Exit Else IniWrite ( @MyDocumentsDir & "\settings.ini", "Config", "Proxy", $sInputBoxAnswer ) EndIf Else IniWrite ( @MyDocumentsDir & "\settings.ini", "Config", "Proxy", "False" ) EndIf EndIf Global $oWordApp = _Word_Create(False) Global $oDoc = _Word_DocAdd ( $oWordApp ) Global $oRange = $oDoc.Range Global $oSpellCollection, $oAlternateWords HotKeySet ( "^d", "stylish" ) Global $attach = "" Global $array $Form2 = GUICreate("Form2", 406, 514, 320, 200, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE)) $handle = WinGetHandle ( $Form2 ) $MenuItem1 = GUICtrlCreateMenu("configure") $MenuItem2 = GUICtrlCreateMenuItem("Attachments", $MenuItem1) $Label1 = GUICtrlCreateLabel("Email Address", 128, 0, 130, 29) GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif") $Input1 = GUICtrlCreateInput("", 70, 32, 273, 21) $Label2 = GUICtrlCreateLabel("Attachments (Can drag and drop below)", 27, 64, 351, 29) GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif") $Input2 = GUICtrlCreateInput("", 32, 104, 337, 21) GUICtrlSetState ( -1, $GUI_DROPACCEPTED ) $Button9 = GUICtrlCreateButton("Add/Browse", 158, 136, 89, 33, $BS_NOTIFY) GUICtrlSetCursor (-1, 0) $Label4 = GUICtrlCreateLabel("Subject", 160, 184, 157, 29) GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif") $Input3 = GUICtrlCreateInput("", 32, 216, 337, 21) $Label3 = GUICtrlCreateLabel("Message", 160, 240, 172, 29) GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif") $Edit1 = GUICtrlCreateEdit("", 32, 272, 345, 153, BitOR($ES_WANTRETURN, $WS_VSCROLL)) $Button1 = GUICtrlCreateButton("Send", 30, 440, 113, 33, $BS_NOTIFY) GUICtrlSetCursor (-1, 0) $Button2 = GUICtrlCreateButton("Save As Template", 160, 440, 105, 33, $BS_NOTIFY) GUICtrlSetCursor (-1, 0) $Button6 = GUICtrlCreateButton ( "Use Template", 282, 440, 113, 33, $BS_NOTIFY ) GUICtrlSetCursor (-1, 0) $Form1 = GUICreate("Spell check", 345, 251, 302, 218) Global $handle2 = WinGetHandle ( $Form1 ) $ListBox1 = GUICtrlCreateList("", 8, 8, 137, 149, $LBS_NOTIFY + $WS_VSCROLL ) $ListBox2 = GUICtrlCreateList("", 200, 8, 137, 149, $LBS_NOTIFY + $WS_VSCROLL ) $Button3 = GUICtrlCreateButton("Send", 32, 201, 75, 25, $BS_NOTIFY) GUICtrlSetCursor (-1, 0) $Button4 = GUICtrlCreateButton("&Cancel", 240, 201, 75, 25, $BS_NOTIFY) GUICtrlSetCursor (-1, 0) $Button5 = GUICtrlCreateButton("Correct spelling", 128, 201, 83, 25, $BS_NOTIFY) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetCursor (-1, 0) $Form3 = GUICreate("Form3", 286, 283, 192, 124) $Label5 = GUICtrlCreateLabel("Attachments", 86, 8, 113, 29) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $List1 = GUICtrlCreateList("", 16, 40, 249, 188, BitOR($GUI_SS_DEFAULT_LIST,$LBS_HASSTRINGS)) $Button7 = GUICtrlCreateButton("Delete", 40, 240, 81, 33, $BS_NOTIFY) GUICtrlSetCursor (-1, 0) $Button8 = GUICtrlCreateButton("Back", 160, 240, 81, 33, $BS_NOTIFY) GUICtrlSetCursor (-1, 0) $Form4 = GUICreate("Form4", 242, 95, 216, 123) $Combo1 = GUICtrlCreateCombo("", 40, 56, 169, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL)) $Label6 = GUICtrlCreateLabel("Templates", 72, 8, 96, 29) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") GUISetState(@SW_DISABLE, $Form4) GUISetState( @SW_DISABLE, $Form3 ) GUISetState( @SW_DISABLE, $Form1 ) GUISetState( @SW_SHOW, $Form2 ) $aRect = _GUICtrlEdit_GetRECT($Edit1) $aRect[0] += 10 $aRect[1] += 10 $aRect[2] -= 10 $aRect[3] -= 10 _GUICtrlEdit_SetRECT($Edit1, $aRect) While 1 Global $nMsg = GUIGetMsg(1) Switch $nMsg[1] Case $Form2 Switch $nMsg[0] Case $GUI_EVENT_CLOSE _Exit() Case $GUI_EVENT_DROPPED Sleep ( 200 ) $mult = StringSplit ( GUICtrlRead ( $Input2 ), "|" ) If @error Then WinActivate ( $Form2 ) WinWaitActive ( $Form2 ) GUICtrlSetState ( $Input2, $GUI_FOCUS ) Send ( "{ENTER}", 0 ) Else For $v = 1 To $mult[0] Step 1 $attach = $attach & $mult[$v] & ";" Next GUICtrlSetData ( $Input2, "" ) $sToolTipAnswer = ToolTip("The attachments were added!",Default,Default,"Success") Sleep ( 3000 ) ToolTip ("") EndIf Case $MenuItem2 GUISetState ( @SW_HIDE, $Form2 ) GUISetState ( @SW_DISABLE, $Form2 ) GUISwitch ( $Form3 ) GUISetState ( @SW_ENABLE, $Form3 ) GUISetState ( @SW_SHOW, $Form3 ) If $attach <> "" Then $array = StringSplit ( StringTrimRight ( $attach, 1 ), ";" ) If @error Then SetError ( 0 ) _GUICtrlListBox_AddString ( $List1, _GetFilename ( StringTrimRight ( $attach, 1 ) ) & "." & _GetFilenameExt ( StringTrimRight ( $attach, 1 ) ) ) Else For $l = 1 To $array[0] Step 1 _GUICtrlListBox_AddString ( $List1, _GetFilename ( $array[$l] ) & "." & _GetFilenameExt ( $array[$l] ) ) Next EndIf Else _GUICtrlListBox_AddString ( $List1, "You currently do not have any attachments." ) EndIf Case $Input2 $attach = $attach & GUICtrlRead ( $Input2 ) & ";" GUICtrlSetData ( $Input2, "" ) $sToolTipAnswer = ToolTip("The attachment was added!",Default,Default,"Success") Sleep ( 3000 ) ToolTip ("") Case $Button9 If GUICtrlRead ( $Input2 ) <> "" Then $attach = $attach & GUICtrlRead ( $Input2 ) & ";" GUICtrlSetData ( $Input2, "" ) $sToolTipAnswer = ToolTip("The attachment was added!",Default,Default,"Success") Sleep ( 3000 ) ToolTip ("") Else $file = FileOpenDialog ( "Choose the file you want to attach.", "", "All (*.*)", 7, "", $Form2 ) $files = StringSplit ( $file, "|" ) If @error Then SetError ( 0 ) $attach = $attach & $file & ";" GUICtrlSetData ( $Input2, $file ) $sToolTipAnswer = ToolTip("The attachment was added!",Default,Default,"Success") Sleep ( 1000 ) ToolTip ("") GUICtrlSetData ( $Input2, "" ) Else For $p = 2 To $files[0] Step 1 $attach = $attach & $files[1] & "\" & $files[$p] & ";" Next $sToolTipAnswer = ToolTip("The attachment was added!",Default,Default,"Success") Sleep ( 1000 ) ToolTip ("") EndIf EndIf Case $Button1 _GUICtrlEdit_SetSel ( $Edit1, 0, -1 ) _SpellCheck () Case $Button2;save as template If Not IsDeclared("sInputBoxAnswer") Then Local $sInputBoxAnswer $sInputBoxAnswer = InputBox("Template Name","What do you want to name this template?",""," ") If @Error = 1 Then Else $name = $sInputBoxAnswer $num = Int ( IniRead ( @MyDocumentsDir & "\settings.ini", "Number", "Template", "0" ) ) $num += 1 $bodcap = _GUICtrlEdit_GetText ( $Edit1 ) $subcap = GUICtrlRead ( $Input3 ) $attcap = $attach Local $holdarr[5][2] = [[3, ""], ["Name", $name], ["Body", $bodcap], ["Subject", $subcap], ["Attachments", $attcap]] IniWriteSection ( @MyDocumentsDir & "\settings.ini", "Template " & $num, $holdarr ) IniWrite ( @MyDocumentsDir & "\settings.ini", "Number", "Template", $num ) $sToolTipAnswer = ToolTip("The attachment was added!",Default,Default,"Success") Sleep ( 2000 ) ToolTip ( "" ) EndIf Case $Button6 GUISetState ( @SW_HIDE, $Form2 ) GUISetState ( @SW_DISABLE, $Form2 ) GUISwitch ( $Form3 ) GUISetState ( @SW_ENABLE, $Form4 ) GUISetState ( @SW_SHOW, $Form4 ) $numag = Int ( IniRead ( @MyDocumentsDir & "\settings.ini", "Number", "Template", "0" ) ) If $numag = 0 Then MsgBox($MB_OK + $MB_ICONHAND,"No templates","You have not configured any templates.") Else For $h = 1 To $numag Step 1 GUICtrlSetData ( $Combo1, IniRead ( @MyDocumentsDir & "\settings.ini", "Template " & $h, "Name", "NA" ) ) Next EndIf EndSwitch Case $Form1 Switch $nMsg[0] Case $GUI_EVENT_CLOSE GUISetState ( @SW_HIDE, $Form1 ) GUISetState ( @SW_DISABLE, $Form1 ) GUISwitch ( $Form2 ) GUISetState ( @SW_ENABLE, $Form2 ) GUISetState ( @SW_SHOW, $Form2 ) Case $ListBox1 _SpellingSuggestions() Case $ListBox2 GUICtrlSetState($Button5, $GUI_ENABLE) Case $Button3 SendMessage () Case $Button4 GUISetState ( @SW_HIDE, $Form1 ) GUISetState ( @SW_DISABLE, $Form1 ) GUISwitch ( $Form2 ) GUISetState ( @SW_ENABLE, $Form2 ) GUISetState ( @SW_SHOW, $Form2 ) Case $Button5 _ReplaceWord() EndSwitch Case $Form3 ToolTip ("") Switch $nMsg[0] Case $GUI_EVENT_CLOSE, $Button8 ToolTip ("") GUISetState ( @SW_HIDE, $Form3 ) GUISetState ( @SW_DISABLE, $Form3 ) GUISwitch ( $Form2 ) GUISetState ( @SW_ENABLE, $Form2 ) GUISetState ( @SW_SHOW, $Form2 ) If UBound ( $array ) = 1 Then $attach = "" Else $attach = "" For $ff = 1 To UBound ( $array ) - 1 Step 1 $attach = $attach & $array[$ff] & ";" Next EndIf _GUICtrlListBox_ResetContent ( $List1 ) Case $List1 ToolTip ("") Case $Button7 If _GUICtrlListBox_GetSelCount = -1 Then $sToolTipAnswer = ToolTip("Select something to delete first numbnuts.",Default,Default,"Idiot") Else ToolTip ("") $seltext = _GUICtrlListBox_GetText ( $List1, _GUICtrlListBox_GetCurSel ( $List1 ) ) For $ff = 1 To $array[0] Step 1 If StringInStr ( $array[$ff], $seltext ) > 0 Then _ArrayDelete ( $array, $ff ) _GUICtrlListBox_DeleteString ( $List1, _GUICtrlListBox_GetCurSel ( $List1 ) ) ExitLoop EndIf Next EndIf EndSwitch Case $Form4 Switch $nMsg[0] Case $GUI_EVENT_CLOSE GUISetState ( @SW_HIDE, $Form4 ) GUISetState ( @SW_DISABLE, $Form4 ) GUISwitch ( $Form2 ) GUISetState ( @SW_ENABLE, $Form2 ) GUISetState ( @SW_SHOW, $Form2 ) Case $Combo1 $sec = "" $numag2 = Int ( IniRead ( @MyDocumentsDir & "\settings.ini", "Number", "Template", "0" ) ) If $numag2 = 0 Then Else $use = GUICtrlRead ( $Combo1 ) For $h = 1 To $numag2 Step 1 If StringCompare ( IniRead ( @MyDocumentsDir & "\settings.ini", "Template " & $h, "Name", "NA" ), $use ) = 0 Then $sec = "Template " & $h ExitLoop Else ContinueLoop EndIf Next GUISetState ( @SW_HIDE, $Form4 ) GUISetState ( @SW_DISABLE, $Form4 ) GUISwitch ( $Form2 ) GUISetState ( @SW_ENABLE, $Form2 ) GUISetState ( @SW_SHOW, $Form2 ) $attach = IniRead ( @MyDocumentsDir & "\settings.ini", $sec, "Attachments", "NA" ) GUICtrlSetData ( $Input3, IniRead ( @MyDocumentsDir & "\settings.ini", $sec, "Subject", "NA" ) ) _GUICtrlEdit_SetText ( $Edit1, IniRead ( @MyDocumentsDir & "\settings.ini", $sec, "Body", "NA" ) ) EndIf EndSwitch EndSwitch WEnd Func stylish () $thestyle = GUIGetStyle ( $handle ) If $trans = False Then GUISetStyle ( -1, $thestyle[1] + 32, $handle ) WinSetTrans ( $handle, "", 170 ) $trans = True Else GUISetStyle ( -1, $thestyle[1] - 32, $handle ) WinSetTrans ( $handle, "", 255 ) $trans = False EndIf EndFunc Func GetHoveredHwnd() Local $iRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1)) If IsArray($iRet) Then Return HWnd($iRet[0]) Return SetError(1, 0, 0) EndFunc Func _SpellCheck() Local $sText, $tText, $sWord $sText = _GUICtrlEdit_GetText ( $Edit1 ) $oRange = $oWordApp.ActiveDocument.Range $oRange.Delete $oRange.InsertAfter($sText) _SetLanguage() $oSpellCollection = $oRange.SpellingErrors If $oSpellCollection.Count > 0 Then If BitAND ( WinGetState ( $handle ), 2 ) Then If $trans = True Then stylish () EndIf GUISetState ( @SW_DISABLE, $Form2 ) GUISetState ( @SW_HIDE, $Form2 ) GUISwitch ( $Form1 ) GUISetState ( @SW_SHOW, $Form1 ) GUISetState ( @SW_ENABLE, $Form1 ) EndIf ; _GUICtrlListBox_ResetContent($ListBox1) _GUICtrlListBox_ResetContent($ListBox2) GUICtrlSetState($Button5, $GUI_DISABLE) For $i = 1 To $oSpellCollection.Count $sWord = $oSpellCollection.Item($i).Text _GUICtrlListBox_AddString($ListBox1, $sWord) Next GUICtrlSetData($Edit1, $oRange.Text) Else SendMessage () EndIf EndFunc ;==>_SpellCheck Func _SpellingSuggestions() Local $iWord, $sWord ; _GUICtrlListBox_ResetContent($ListBox2) GUICtrlSetState($Button5, $GUI_DISABLE) $iWord = _GUICtrlListBox_GetCurSel($ListBox1) + 1 $sWord = $oSpellCollection.Item($iWord).Text $oAlternateWords = $oWordApp.GetSpellingSuggestions($sWord) If $oAlternateWords.Count > 0 Then For $i = 1 To $oAlternateWords.Count _GUICtrlListBox_AddString($ListBox2, $oAlternateWords.Item($i).Name) Next Else _GUICtrlListBox_AddString($ListBox2, "No suggestions.") EndIf EndFunc ;==>_SpellingSuggestions Func _HighlightWord() Local $sText, $iWord, $sWord, $iEnd, $iStart ; $iWord = _GUICtrlListBox_GetCurSel($ListBox1) + 1 $sWord = $oSpellCollection.Item($iWord).Text $sText = $oRange.Text $iStart = ($oSpellCollection.Item($iWord).Start) $iEnd = ($oSpellCollection.Item($iWord).End) _GUICtrlEdit_SetSel($Edit1, $iStart, $iEnd) EndFunc ;==>_HighlightWord Func _ReplaceWord() Local $iWord, $iNewWord, $sWord, $sNewWord, $sText, $sNewText ; $iWord = _GUICtrlListBox_GetCurSel($ListBox1) + 1 $iNewWord = _GUICtrlListBox_GetCurSel($ListBox2) + 1 If $iWord == $LB_ERR Or $iNewWord == $LB_ERR Then MsgBox(48, "Error", "You must first select a word to replace, then a replacement word.") Return EndIf $oSpellCollection.Item($iWord).Text = $oAlternateWords.Item($iNewWord).Name GUICtrlSetData($Edit1, $oRange.Text) _SpellCheck() GUICtrlSetState($Button5, $GUI_DISABLE) EndFunc ;==>_ReplaceWord Func _SetLanguage() $sLang = "English" $oWordApp.CheckLanguage = False $WdLangID = Number(1033) If $WdLangID Then With $oRange .LanguageID = $WdLangID .NoProofing = False EndWith EndIf EndFunc ;==>_SetLanguage Func SendMessage () If BitAND ( WinGetState ( $handle2 ), 2 ) Then GUISetState ( @SW_HIDE, $Form1 ) GUISetState ( @SW_DISABLE, $Form1 ) GUISwitch ( $Form2 ) GUISetState ( @SW_ENABLE, $Form2 ) GUISetState ( @SW_SHOW, $Form2 ) EndIf $change = StringStripWS ( GUICtrlRead ( $Input1 ), 3 ) GUICtrlSetData ( $Input1, $change ) $body = GUICtrlRead ( $Edit1 ) _GUICtrlEdit_SetText ( $Edit1, "" ) ;$attach = StringStripCR ( $attach ) $subject = GUICtrlRead ( $Input3 ) If $attach <> "" Then $split = StringSplit ( StringTrimRight ( $attach, 1 ), ';' ) If @error Then SetError ( 0 ) $finattach = '-a:"' & $attach & '" ' Else $finattach = Null For $i = 1 To $split[0] Step 1 $finattach = $finattach & '-a:"' & $split[$i] & '" ' Next EndIf EndIf $body = StringReplace ( $body, @CRLF, "\n" ) #cs $split = StringSplit ( $body, "", $STR_NOCOUNT ) For $i = 0 To UBound ( $split ) - 1 Step 1 If $split[$i] = Chr ( 10 ) Then $split[$i] = "\n" ElseIf $split[$i] = Chr ( 13 ) Then $split[$i] = Null Else ContinueLoop EndIf Next $body = _ArrayToString ( $split, "" ) ConsoleWrite ( $body ) #ce If StringRegExp ( GUICtrlRead ( $Input1 ), "^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$" ) = 1 Then If $attach = "" Then $proc = Run ( 'CMail -from:' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Email Address", "NA" ) & ':"' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Name", "NA" ) & '" -to:' & GUICtrlRead ( $Input1 ) & ' -subject:"' & $subject & '" -body:"' & $body & '" -host:' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "User name", "NA" ) & ':' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Password", "NA" ) & '@' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "SMTP Server", "NA" ) & ':' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Port", "NA" ) & ' -starttls -requiretls -d', 'C:\ProgramData\chocolatey\bin', @SW_SHOW, $STDOUT_CHILD ) Else $proc = Run ( 'CMail -from:' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Email Address", "NA" ) & ':"' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Name", "NA" ) & '" -to:' & GUICtrlRead ( $Input1 ) & ' -subject:"' & $subject & '" -body:"' & $body & '" ' & $finattach & '-host:' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "User name", "NA" ) & ':' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Password", "NA" ) & '@' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "SMTP Server", "NA" ) & ':' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Port", "NA" ) & ' -starttls -requiretls -d', 'C:\ProgramData\chocolatey\bin', @SW_SHOW, $STDOUT_CHILD ) ClipPut ( 'CMail -from:' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Email Address", "NA" ) & ':"' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Name", "NA" ) & '" -to:' & GUICtrlRead ( $Input1 ) & ' -subject:"' & $subject & '" -body:"' & $body & '" ' & $finattach & '-host:' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "User name", "NA" ) & ':' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Password", "NA" ) & '@' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "SMTP Server", "NA" ) & ':' & IniRead ( @MyDocumentsDir & "\settings.ini", "Config", "Port", "NA" ) & ' -starttls -requiretls -d' ) ProcessWaitClose ( $proc ) $text = StdoutRead ( $proc ) ClipPut ( $text ) MsgBox($MB_OK + $MB_SYSTEMMODAL,"Sent!","Message Sent!!") EndIf Else MsgBox(16,"Not a valid email","Enter a correct email address please") EndIf EndFunc Func _GetFilename($sFilePath) Local $oWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & "." & "\root\cimv2") Local $oColFiles = $oWMIService.ExecQuery("Select * From CIM_Datafile Where Name = '" & StringReplace($sFilePath, "\", "\\") & "'") If IsObj($oColFiles) Then For $oObjectFile In $oColFiles Return $oObjectFile.FileName Next EndIf Return SetError(1, 1, 0) EndFunc ;==>_GetFilename Func _GetFilenameExt($sFilePath) Local $oWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & "." & "\root\cimv2") Local $oColFiles = $oWMIService.ExecQuery("Select * From CIM_Datafile Where Name = '" & StringReplace($sFilePath, "\", "\\") & "'") If IsObj($oColFiles) Then For $oObjectFile In $oColFiles Return $oObjectFile.Extension Next EndIf Return SetError(1, 1, 0) EndFunc ;==>_GetFilenameExt Func _GetFilenameInt($sFilePath) Local $oWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & "." & "\root\cimv2") Local $oColFiles = $oWMIService.ExecQuery("Select * From CIM_Datafile Where Name = '" & StringReplace($sFilePath, "\", "\\") & "'") If IsObj($oColFiles) Then For $oObjectFile In $oColFiles Return $oObjectFile.Name Next EndIf Return SetError(1, 1, 0) EndFunc ;==>_GetFilenameInt Func _GetFilenameDrive($sFilePath) Local $oWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & "." & "\root\cimv2") Local $oColFiles = $oWMIService.ExecQuery("Select * From CIM_Datafile Where Name = '" & StringReplace($sFilePath, "\", "\\") & "'") If IsObj($oColFiles) Then For $oObjectFile In $oColFiles Return StringUpper($oObjectFile.Drive) Next EndIf Return SetError(1, 1, 0) EndFunc ;==>_GetFilenameDrive Func _GetFilenamePath($sFilePath) Local $oWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & "." & "\root\cimv2") Local $oColFiles = $oWMIService.ExecQuery("Select * From CIM_Datafile Where Name = '" & StringReplace($sFilePath, "\", "\\") & "'") If IsObj($oColFiles) Then For $oObjectFile In $oColFiles Return $oObjectFile.Path Next EndIf Return SetError(1, 1, 0) EndFunc ;==>_GetFilenamePath Func _Exit() _Word_Quit ( $oWordApp ) Exit EndFunc ;==>_Exit Comments are welcome and appreciated.1 point -
Something like this should work #include <Array.au3> local $a = ["abc", "jkl", "def\", "ghi", "Users\"] local $b = ["abc", "cde", "Users\", "def\", "ghi", "hij"] ; create 3 empty dictionaries Local $sda = ObjCreate("Scripting.Dictionary") Local $sdb = ObjCreate("Scripting.Dictionary") Local $sdc = ObjCreate("Scripting.Dictionary") ; set comparemode property $sda.CompareMode = 1 ; case insensitive $sdb.CompareMode = 1 ; populate 'a' and 'b' dictionaries with the content of 'a' and 'b' arrays ; the elements are added as keys For $i In $a $sda.Item($i) Next For $i In $b $sdb.Item($i) Next ; check if elements in array 'a' exist as keys in dictionary 'b' ; if not then add them to dictionary 'c' For $i In $a If not $sdb.Exists($i) Then $sdc.Item($i) Next ; check if elements in array 'b' exist as keys in dictionary 'a' ; if not then add them to dictionary 'c' For $i In $b If not $sda.Exists($i) Then $sdc.Item($i) Next ; return the array of all keys from dictionary 'c' $asdc = $sdc.Keys() _ArrayDisplay($asdc, "$asdc") Edit another example in this topic - post#101 point
-
This could be what you are after. If you put the ConsoleWrite within the For - Next loop, you'll see what is being replaced on each loop as the count parameter reduces. Global $Variable[4] = ["HELLO1", "TEST1", "HELLO2", "TEST2"] $NewText = ',{....."Var1":true,"Var2":"1244324","Var1":true,"Var2":"677324","Var1":true,"Var2":"62364","Var1":true,"Var2":"235624","...' For $i = 3 To 0 Step -1 $NewText = StringRegExpReplace($NewText, '("Var2":")([^,]*)', "${1}" & $Variable[$i] & '"', $i + 1) Next ConsoleWrite($NewText & @CRLF) #cs ;Returns:- ,{....."Var1":true,"Var2":"HELLO1","Var1":true,"Var2":"TEST1","Var1":true,"Var2":"HELLO2","Var1":true,"Var2":"TEST2","... #ce1 point
-
[Solved] Open Folder Directory that contains commas
AnonymousX reacted to Subz for a topic
Just use single/double quotes for example: Run('Explorer.exe "' & $hFileName & '"')1 point -
GUI for cmail command line utility
argumentum reacted to MattHiggs for a topic
All a matter of preference. I actually have mine in my OneDrive folder so I can use the tool on both work and personal computer and update the script as I like without the need to worry about copying and replacing the ini between computers... Too much hassle. Oh, and you are most welcome.1 point -
XM Play (Extended Module)
trancexx reacted to argumentum for a topic
Tested in XP, 7 x64 and 10 x64. In Win10 sound better. Could you add volume control ?. I feel it would make it sound better with a lower volume. Thanks for sharing PS: while writing https://www.autoitscript.com/forum/topic/130660-return-to-castle/#comment-1174449 , I wanted a glory song to play after the last level, so, I got me over 400 XM songs , ..edend up chosing mission_impossible_db_mix.xm1 point -
The bumper thread of missing winapi examples.
argumentum reacted to JohnOne for a topic
As I look through _WinAPI_* entries in the help file there are many without examples. It's quite a task for any one person to undertake, so I propose anyone who can be bothered every now and then, figure one out and post an example here. I'd suggest not using the help forum as that defeats the object. I'll go first with an easy one from near the top. EDIT: (regarding guinness' below post) If you wish your example to be considered for help file entry, please follow his instructions. If you don't care then don't worry, just the example will do however you like. EDIT2: The links below are to the examples, not the online help. EDIT3: If anyone wants to modify any examples to be help file worthy you are most welcome to. _WinAPI_ArrayToStruct _WinAPI_AbortPath >_WinAPI_AdjustWindowRectEx >_WinAPI_GetDefaultUserProfileDirectory >_WinAPI_DeleteFile >_WinAPI_GetAsyncKeyState >_WinAPI_GetCurrentDirectory >_WinAPI_GetDefaultPrinter >_WinAPI_GetDeviceCaps >_WinAPI_GetDriveType >_WinAPI_GetErrorMessage >_WinAPI_GetFileType >_WinAPI_GetGraphicsMode >_WinAPI_GetGuiResources >_WinAPI_GetPEType >_WinAPI_GetPolyFillMode >_WinAPI_GetPriorityClass >_WinAPI_GetProcessHandleCount >_WinAPI_GetProcessIoCounters >_WinAPI_GetProfilesDirectory >_WinAPI_GetROP2 >_WinAPI_GetStartupInfo >_WinAPI_GetStdHandle >_WinAPI_GetSystemDEPPolicy >_WinAPI_GetSystemInfo >_WinAPI_GetSystemMetrics >_WinAPI_GetSystemTimes >_WinAPI_GetSystemWow64Directory >_WinAPI_GetTempFileName >_WinAPI_GetVersionEx >_WinAPI_GetWindowDC >_WinAPI_GetWindowFileName >_WinAPI_GetWindowHeight >_WinAPI_GetWindowWidth >_WinAPI_GlobalMemoryStatus >_WinAPI_HiByte >_WinAPI_InflateRect >_WinAPI_IsChild >_WinAPI_IsClassName >_WinAPI_IsElevated >_WinAPI_LoByte >_WinAPI_OpenProcess1 point