Leaderboard
Popular Content
Showing content with the highest reputation on 12/08/2024 in all areas
-
I needed a very fast x64 unsigned shift right, and doing it through an AutoIt array was way too slow. So I decided to make a .dll to perform such a task. While I was there, why not include all the bitwise operators that I know of. And then why not make a UDF. This is a bit like my wife does, she buys some draperies and then I end up repainting the whole room because the colors do not match anymore. Anyway, hope it can be useful for you too. Let me know if you have enhancements or comments, I will be glad to incorporate them (if possible). Version 2024-12-07 ASM * Code optimization (elimination of redundancy) Version 2024-12-06 ASM Func BitAND64 Func BitOR64 Func BitXOR64 Func BitSHIFT64 Func BitROTATE64 Func BitNOT64 Version 2020-04-27 DLL Func _BitAND64 Func _BitOR64 Func _BitXOR64 Func _BitEQV64 Func _BitIMP64 Func _BitSHIFT64 Func _BitROTATE64 Func _BitNOT64 Func _x64CloseDLL Version 2020-04-27 Util Func _Hex2Dec x64_Ops.zip2 points
-
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
ioa747 reacted to argumentum for a topic
...food for thought. The idea was to showcase the function clearly. That's there. How to implement it, is up to the coder given the many ways that could be used based on a given project. The examples are there. The coder would decide how to implement it I guess. 🤷♂️1 point -
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
ioa747 reacted to argumentum for a topic
I figured after you posted that the length would be limited. Found that the max length is 128 So bad idea on my part. but could use a hash of the @ScriptFullPath to make it unique for the path 🤔1 point -
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
argumentum reacted to ioa747 for a topic
https://www.autoitscript.com/autoit3/docs/libfunctions/_WinAPI_GetCurrentProcessExplicitAppUserModelID.htm #NoTrayIcon #include <GUIConstants.au3> #include <WinAPIShellEx.au3> #include <WinAPIProc.au3> ;~ _WinAPI_SetCurrentProcessExplicitAppUserModelID(_WinAPI_CreateGUID()) _WinAPI_SetCurrentProcessExplicitAppUserModelID(StringTrimRight(@ScriptName, 3) & "_v1.0") ;~ _WinAPI_SetCurrentProcessExplicitAppUserModelID("My Custom GUI_v1.0") GUICreate("My Custom GUI", 300, 200, @DesktopWidth * 0.2, @DesktopHeight * 0.6) GUISetIcon(@ScriptDir & '\iH1.ico') ; ok TraySetIcon(@ScriptDir & '\iH1.ico') ; ok GUISetState(@SW_SHOW) Local $sAppID = _WinAPI_GetCurrentProcessExplicitAppUserModelID() If @error Then MsgBox($MB_ICONERROR, "Error", "Failed to retrieve AppUserModelID. Error code: " & @extended) Else MsgBox($MB_ICONINFORMATION, "AppUserModelID", "The current process AppUserModelID is: " & $sAppID) EndIf Do Until GUIGetMsg() = -3 ; $GUI_EVENT_CLOSE (-3)1 point -
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
ioa747 reacted to argumentum for a topic
obviously they are "H1_v1", "H2_v1", etc., because the ModelID string is different. I thought it was the same script run multiple times. Interesting. As far as I know, as long as the ModelID string is the same, ... that's that. It should be the same. Win 10 or 11. Tho I never tested how long the string can be ( https://github.com/dotnet/maui/issues/20031 )1 point -
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
argumentum reacted to ioa747 for a topic
in windows10 with @ScriptFullPath it doesn't work as expected1 point -
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
argumentum reacted to ioa747 for a topic
What I noticed is that if I run two or three scripts with _WinAPI_SetCurrentProcessExplicitAppUserModelID("My Custom GUI_v1.0") the icons are grouped in the taskbar while if I run them with _WinAPI_SetCurrentProcessExplicitAppUserModelID(StringTrimRight(@ScriptName, 3) & "_v1.0") each one has its own icon Thank you very much1 point -
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
ioa747 reacted to argumentum for a topic
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #NoTrayIcon ; either way, upto the coder #include <GUIConstants.au3> #include <WinAPIShellEx.au3> ; for _WinAPI_SetCurrentProcessExplicitAppUserModelID($sAppID) #include <WinAPIProc.au3> ; for _WinAPI_GetCurrentProcessExplicitAppUserModelID() ;~ #include <WinAPICom.au3> ; for _WinAPI_CreateGUID() ;~ Global Const $_g__ProcessExplicitAppUserModelID = "{E2971A53-037D-4811-B3E3-FE79C2586831}" ; created with _WinAPI_CreateGUID() ;~ _WinAPI_SetCurrentProcessExplicitAppUserModelID($_g__ProcessExplicitAppUserModelID) ; ensure a unique product ID ; or Global Const $VERSION = "0.1.2.3" ; @ScriptFullPath would be better than @ScriptName ? ( depending on how the script works ) _WinAPI_SetCurrentProcessExplicitAppUserModelID(StringRight(StringTrimRight(@ScriptFullPath, 3) & $VERSION, 127)) ; ensure a unique product ID [and maybe unique for version too] ; max length of "SetCurrentProcessExplicitAppUserModelID" is 127 char. ConsoleWrite(' CurrentProcessExplicitAppUserModelID:' & @CRLF & _ ' StringLen = ' & StringLen(_WinAPI_GetCurrentProcessExplicitAppUserModelID()) & @CRLF & _ ' AppID >' & _WinAPI_GetCurrentProcessExplicitAppUserModelID() & '< ' & @CRLF & _ ' @error,@extended = ' & @error & ',' & @extended & @CRLF & @CRLF) main() Func main() Local $sIcon = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1)) & "Icons\MyAutoIt3_Red.ico" Local $hGUI = GUICreate("My Custom GUI", 300, 200) GUISetIcon($sIcon) ; ok TraySetIcon($sIcon) ; ok Local $idBttn1 = GUICtrlCreateButton("MsgBox without parent", 5, 5, 200, 25) Local $idBttn2 = GUICtrlCreateButton("MsgBox with parent", 5, 35, 200, 25) GUISetState(@SW_SHOW) While "meh" ; it is very important to have fun while coding, for me anyway Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $idBttn1 MsgBox(0, "title", "Bttn 1" & @LF & @LF & "w/o parent", 60) Do ; the msgbox is smaller than the gui and GuiGetMsg gets queued, Until Not GUIGetMsg() ; therefore this avoids closing the gui unwillingly. Case $idBttn2 ; hence is better to provide the parent if present. MsgBox(0, "title", "Bttn 2" & @LF & @LF & "with parent", 60, $hGUI) EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>main Yes @ioa747. I too felt that it needed a better presentation than just a phrase. That's why I posted this. I tend to tell people to "put code where you mouth is". I was failing my own demands 😁1 point -
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
argumentum reacted to ioa747 for a topic
Something like that, you mean? #NoTrayIcon #include <GUIConstants.au3> #include <WinAPIShellEx.au3> _WinAPI_SetCurrentProcessExplicitAppUserModelID(StringTrimRight(@ScriptName, 3) & "_v1.0") GUICreate("My Custom GUI", 300, 200) GUISetIcon(@ScriptDir & '\test1.ico') ; ok TraySetIcon(@ScriptDir & '\test1.ico') ; ok GUISetState(@SW_SHOW) Do Until GuiGetMsg() = -3 ; $GUI_EVENT_CLOSE (-3)1 point -
No custom GUI icon in taskbar when au3 script is executed by "Run script" option
ioa747 reacted to argumentum for a topic
_WinAPI_CreateGUID() is not a good idea unless to create a constant of the script/project. Otherwise StringTrimRight(@ScriptName, 3) [& $VERSION] would be a good idea, as a copy'n'paste solution.1 point -
prologue On the occasion of @TheDcoder post (I wonder if someone can port it to AutoIt ) and because in the past I already had something similar (Active_SaveFileDlg), ( in which I remember making an effort so that it wouldn't catch windows other than Scite's) So I took it as a challenge. Of course, since I don't know much, I skipped the extras and stuck to the basics A brief description While the script is running in the background when you display the SaveFileDlg or OpenFileDlg window, display a button-icon in the center of the window title. Click it brings up a list of some favorite path plus the paths from all open folders. by selecting one of them, WindowDlg goes to the selected path. Covers almost everything modern SaveFileDlg & OpenFileDlg & SaveFolderDlg & OpenFolderDlg and a series of old-style dialogs like Koda, Crimson Editor, IrfanView, etc Active_FileDlg.au3 #NoTrayIcon ; https://www.autoitscript.com/forum/topic/212478-active_filedlg ;---------------------------------------------------------------------------------------- ; Title...........: Active_FileDlg.au3 ; Description.....: Add All open folder & some extra as contex menu in SaveFileDlg & OpenFileDlg ; AutoIt Version..: 3.3.16.1 Author: ioa747 ;---------------------------------------------------------------------------------------- #AutoIt3Wrapper_Res_Description=Add All open folder & some extra as contex menu in SaveFileDlg & OpenFileDlg #AutoIt3Wrapper_Res_ProductName=Active_FileDlg.au3 #AutoIt3Wrapper_Icon=shell32-68.ico #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #AutoIt3Wrapper_Res_Fileversion=0.0.0.5 ;~ #AutoIt3Wrapper_UseX64=y #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <WinAPISysWin.au3> #include <Misc.au3> #include <GuiTreeView.au3> #include <Array.au3> ; Favorites folder Global $aFavFolder[4] $aFavFolder[0] = 3 $aFavFolder[1] = @DesktopDir ; * <--------- Fav1 folder (get one of your own) $aFavFolder[2] = @MyDocumentsDir ; * <--------- Fav2 folder (get one of your own) $aFavFolder[3] = @UserProfileDir ; * <--------- Fav3 folder (get one of your own) _CmdLineWatcher() While 1 _main() Sleep(500) WEnd Exit ;-------------------------------------------------------------------------------------------------------------------------------- Func _main() If WinActive("[CLASS:#32770]") Then Local $hWnd = WinGetHandle("[ACTIVE]") ; checck if gui all redy exist for this Dlg If WinExists("GUI-" & $hWnd) Then Return Local $Executable = @Compiled ? '"' & @ScriptFullPath & '"' : '"' & @AutoItExe & '" "' & @ScriptFullPath & '"' ;specify FileDlg criteria _AddressBarPath($hWnd) If @error Then ; alternative methods ; ### [2] _AltName() Local $sText = WinGetText($hWnd) If StringInStr($sText, "File &name") Then ; FoldersGUI($hWnd, 2) Run($Executable & ' FoldersGUI ' & $hWnd & ' 2') WinWaitActive("GUI-" & $hWnd, "", 5) EndIf ; ### [3] _BrowseForFolder() $sText = WinGetText($hWnd) If StringInStr($sText, "Select a directory") Then ; FoldersGUI($hWnd, 3) Run($Executable & ' FoldersGUI ' & $hWnd & ' 3') WinWaitActive("GUI-" & $hWnd, "", 5) EndIf Else ; ### [1] _AddressBarPath() ; FoldersGUI($hWnd, 1) Run($Executable & ' FoldersGUI ' & $hWnd & ' 1') WinWaitActive("GUI-" & $hWnd, "", 5) EndIf EndIf EndFunc ;==>_main ;---------------------------------------------------------------------------------------- Func FoldersGUI($hWnd, $iFlag) ; $iFlag: 1=_AddressBarPath, 2=_AltName, 3=_BrowseForFolder ; if parameter coming from cmdline as text If Not IsHWnd($hWnd) Then $hWnd = HWnd($hWnd) If Not IsInt($iFlag) Then $iFlag = Int($iFlag) Local $hGUI = GUICreate("GUI-" & $hWnd, 24, 24, -50, -50, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_NOACTIVATE), $hWnd) Local $idDummy = GUICtrlCreateDummy() Local $idButton = GUICtrlCreateButton("contex button", 0, 0, 24, 24, $BS_ICON) GUICtrlSetImage(-1, "shell32.dll", -68) Local $idContext = GUICtrlCreateContextMenu($idButton) Local $OpenFolders = _EnumAllOpenFolder() ;If not open folder, just add fav If $OpenFolders[0][0] = 0 Then ReDim $OpenFolders[UBound($OpenFolders) + 1][2] Else _ArrayInsert($OpenFolders, 1, "0|") ; separator EndIf ; Add Fav folder (the numbers on the front don't matter) For $i = 1 To $aFavFolder[0] _ArrayInsert($OpenFolders, 1, $i & "|" & $aFavFolder[$i]) Next $OpenFolders[0][0] = UBound($OpenFolders) - 1 ;_ArrayDisplay($OpenFolders) ; Create Context Menu For $i = 1 To $OpenFolders[0][0] GUICtrlCreateMenuItem($OpenFolders[$i][1], $idContext) Next Local $Wpos = WinGetPos($hWnd) WinMove($hGUI, "", $Wpos[0] + $Wpos[2] * 0.5, $Wpos[1] + 3) Sleep(50) GUISetState(@SW_SHOWNOACTIVATE, $hGUI) WinActivate($hWnd) Local $MsgId While WinExists($hWnd) $Wpos = WinGetPos($hWnd) WinMove($hGUI, "", $Wpos[0] + $Wpos[2] * 0.5, $Wpos[1] + 3) $MsgId = GUIGetMsg() Switch $MsgId Case 6 To $OpenFolders[0][0] + 6 Switch $iFlag Case 1 _AddressBarPath($hWnd, $OpenFolders[$MsgId - 5][1]) Case 2 _AltName($hWnd, $OpenFolders[$MsgId - 5][1]) Case 3 _BrowseForFolder($hWnd, $OpenFolders[$MsgId - 5][1]) EndSwitch Case $idButton GUICtrlSendToDummy($idDummy) Case $idDummy MouseClick("right") EndSwitch WEnd GUIDelete($hGUI) Exit EndFunc ;==>FoldersGUI ;---------------------------------------------------------------------------------------- Func _EnumAllOpenFolder() ; enumerating all open folders Local $oShell = ObjCreate("Shell.Application") Local $sPath, $index = 0 Local $aArray[$oShell.Windows.Count + 1][2] = [["hWnd", "Path"]] For $oWin In $oShell.Windows $index += 1 $aArray[0][0] = $index $sPath = StringTrimLeft($oWin.LocationURL, 8) ; trim 'file:///' $sPath = StringReplace($sPath, "/", "\") $sPath = _UnicodeURLDecode($sPath) $aArray[$index][0] = HWnd($oWin.HWND) $aArray[$index][1] = $sPath Next Return $aArray EndFunc ;==>_EnumAllOpenFolder ;---------------------------------------------------------------------------------------- Func _UnicodeURLDecode($toDecode) Local $strChar = "", $iOne, $iTwo Local $aryHex = StringSplit($toDecode, "") For $i = 1 To $aryHex[0] If $aryHex[$i] = "%" Then $i = $i + 1 $iOne = $aryHex[$i] $i = $i + 1 $iTwo = $aryHex[$i] $strChar = $strChar & Chr(Dec($iOne & $iTwo)) Else $strChar = $strChar & $aryHex[$i] EndIf Next Local $Process = StringToBinary($strChar) Local $DecodedString = BinaryToString($Process, 4) Return $DecodedString EndFunc ;==>_UnicodeURLDecode ;---------------------------------------------------------------------------------------- Func _AddressBarPath($hWnd, $sNewBarPath = "") WinActivate($hWnd) For $i = 1 To 10 Local $hCtrl = ControlGetHandle($hWnd, "", "ToolbarWindow32" & $i) If @error Then ExitLoop Local $sControlText = ControlGetText($hWnd, "", $hCtrl) If StringLeft($sControlText, 9) = "Address: " Then Local $aTextPart = StringSplit($sControlText, ": ", 1) If $aTextPart[0] = 2 Then ; Get AddressBarPath If $sNewBarPath == "" Then Return $aTextPart[2] Else ; Set AddressBarPath ControlCommand($hWnd, "", $hCtrl, "SendCommandID", 1280) Local $sCtrlNN = ControlGetFocus($hWnd) Local $hCtrlHnd = ControlGetHandle($hWnd, "", $sCtrlNN) ControlSetText($hWnd, "", $hCtrlHnd, $sNewBarPath) ControlSend($hWnd, "", $hCtrlHnd, "{ENTER}") Return $sNewBarPath EndIf EndIf EndIf Next ; If Error, return an empty string Return SetError(1, 0, "") EndFunc ;==>_AddressBarPath ;---------------------------------------------------------------------------------------- Func _AltName($hWnd, $sNewBarPath) WinActivate($hWnd) ControlSend($hWnd, "", "", "!n") ; File &name ;File &name: Local $sCtrlNN = ControlGetFocus($hWnd) Local $hCtrlHnd = ControlGetHandle($hWnd, "", $sCtrlNN) ControlSetText($hWnd, "", $hCtrlHnd, $sNewBarPath) ControlSend($hWnd, "", $hCtrlHnd, "{ENTER}") Return $sNewBarPath EndFunc ;==>_AltName ;---------------------------------------------------------------------------------------- Func _BrowseForFolder($hWnd, $sNewBarPath) WinActivate($hWnd) Local $hTView = ControlGetHandle($hWnd, "", "SysTreeView321") Local $aPath = StringSplit($sNewBarPath, "\", 1) ; first find drive (with label) Local $hItemFound = _GUICtrlTreeView_FindItem($hTView, $aPath[1], True) If $hItemFound Then _GUICtrlTreeView_SelectItem($hTView, $hItemFound) Sleep(10) Local $sSPath = $aPath[1] Local $hItemOld = $hItemFound For $i = 2 To $aPath[0] $hItemFound = _GUICtrlTreeView_FindItem($hTView, $aPath[$i], False, $hItemOld) $hItemOld = $hItemFound $sSPath &= "\" & $aPath[$i] If $hItemFound Then _GUICtrlTreeView_SelectItem($hTView, $hItemFound) Sleep(10) Next If $sSPath = $sNewBarPath Then ;ControlSend($hWnd, "", $hTView, "{ENTER}") Return $sNewBarPath EndIf EndFunc ;==>_BrowseForFolder ;---------------------------------------------------------------------------------------- Func _CmdLineWatcher() ; Run('"' & @AutoItExe & '" "' & @ScriptFullPath & '" FoldersGUI ' & $hWnd & ' 1') Local $aArgs = $CmdLine Local $sFunc If $aArgs[0] > 0 Then $sFunc = $aArgs[1] _ArrayDelete($aArgs, 1) $aArgs[0] = "CallArgArray" Call($sFunc, $aArgs) If @error = 0xDEAD And @extended = 0xBEEF Then ToolTip("error !! Function does not exist" & @CRLF & "or wrong number of parameter", Default, Default, @ScriptName, 3) Sleep(4000) ToolTip("") EndIf Exit EndIf EndFunc ;==>_CmdLineWatcher ;---------------------------------------------------------------------------------------- Please, every comment is appreciated! leave your comments and experiences here! Thank you very much1 point
-
The PrintFormat() function is at the bottom of the example... https://www.autoitscript.com/autoit3/docs/functions/StringFormat.htm Func PrintFormat($vVar, $sFormat, $sExplan, $iTab = 0) ConsoleWrite('"' & $sFormat & '" on ' & $vVar & @TAB & ' => ' & StringFormat($sFormat, $vVar)) If $iTab Then ConsoleWrite(@TAB) ConsoleWrite(@TAB & " ; " & $sExplan & @CRLF) EndFunc ;==>PrintFormat ..where it uses stringformat with format first.1 point
-
*** FREE*** April 9, 2007 Download XProtec.au3 - Free Original XProTec - v1.0.5 - March 18, 2007 XProTec.au3 Previous downloads = 820 +/- Protect and get Paid for.... Your Program Features: *New* Limited Freeware Option Example end user must register. automated email notifications to developer. trial period. user license. registration price. registration reminder. automated registration and acceptance of payment. ( your paypal account ) Syntax: Must be compiled #include<XProTec.au3> ; MUST BE AN INCLUDE $D_Mail = "developer@msn.com " ; your email $D_Program = "My_Program_Name" ; your program name $U_Price = "20.00" ; the amount of money you wish to be payed by the user $U_Trial = "30" ; amount of days for the trial period $U_License = "3" ; 3 = one computer only - see license notes $D_License = "123456789" ; developers license # $D_PayPal = "www.paypal.com/my account-link to paypal" ; - paypal link $D_Link = "www.mywebsite.com/.../" ; looks for "www.mywebsite.com/.../Blacklist.txt" ; see Blacklist $U_Return = 1 ; pay or quit .... or $U_Return = 0 ; will return control to developer with @extended = 6 [Limited Freeware Option] XProTec($D_Mail, $D_Program, $U_Price, $U_Trial, $U_License, $D_License, $D_PayPal, $D_Link, $U_Return) ; your script starts here ..............1 point