Recently Browsing 0 members
No registered users viewing this page.
I have a weird problem with a ToolTip function.
It seems that I can't reliably remove a tooltip from the screen if I originally created it by setting a tooltip text via variable, not a straight up string.
Here's a simple script that I used for testing:
After I remade the script into this, it started working just fine (stopped working after I fixed the array comparison):
Basic idea of the script:
You press F1 and a tooltip with some useful info shows up by the mouse cursor. It follows the cursor around until you press F1 again, then it copies the info to the clipboard and hides the tooltip.
It almost seems like if I created a tooltip using a variable to set the text, then ToolTip("") most of the times just repeats the previous use of ToolTip function. If you try to add Sleep(1000) before ToolTip("") in the first draft of the script, you'll see what i mean (if it works the same for everyone, that is).
Is this a bug or am I doing something wrong?
This project has been discontinued!
Here a small tool I wrote to update my Sysinternal tools collection without the need to download always the whole package or visiting the site to check for updates. I know that there are several tools available (also some tools written in AutoIt) but here another one for the collection. It was good exercise for me to code it.
Some files from the live web site cannot be downloaded although they are visible!
Here the download link of the source code only: AutoIt Sysinternal Tools Synchronizer v0.99.6 build 2020-09-23 beta.7z (1557 downloads previously)
-=> Requires AutoIt version 126.96.36.199 or higher / tested on Win8.1 real machine and some VMs: Win7 / Vista / Win10
Compiled exe only: @MediaFire
Just select the Sysinternal Tools folder or create one and press the synchronize button to download the selected items. Click on AutoIt label (near to left upper corner) to open menu.
Special thanks to LarsJ, Melba23 and mesale0077 for their help.
I've still some ideas to implement which are more gimmick related, so it is not finished yet...
If you want to add your language please check out #Region Language. Thanks.
Please report any bug or if you have any suggestions.
The language of the tool tip from each of the executable in the left list view were automatically created using Google translator and weren't checked for correctness.
I have created a ListView that is in a tab, and I want to display an image in that tab, with the ListView on top.
However, the image still appears on top of my ListView.
If I remove the tabs everything works.
I looked at the autoit documentation and the <GuiListView.au3> documentation , I can't figure out how to display a background image, and put on top a ListView, inside a tab. 😥
Here is the code:
Opt("GUIOnEventMode", 1) $Form1 = GUICreate($Titre, 700, 627, $Form1Width, $Form1Height); main window $tabulation = GUICtrlCreateTab(148,0,700,580); creating tabs $tab1=GUICtrlCreateTabItem("Tab 1"); first tab GUICtrlSetState(-1, $GUI_SHOW); this tab is selected by default $Pic1 = GUICtrlCreatePic("image.jpg", 0, 30, 700, 627) GUICtrlSetState(-1, $GUI_DISABLE). $idListview = GUICtrlCreateListView("list 1|list 2|list 3", 200, 50, 390, 200) GUISetState(@SW_SHOW) While 1 Sleep(100) WEnd Thank you in advance.
Hello all. It's me again.
I've got a ListView with an associated ImageList to display icons. What I seem to be hung up on is how to keep the ImageList updated to match the ListView as the latter changes. I thought it was the case that the indices of the items in the ListView and those in the ImageList just needed to match. So, for example, if I:
Delete an item from the ListView [_GUICtrlListView_DeleteItem()], and also delete the image at the matching index in the ImageList [_GUIImageList_Remove()]. Then add a new item to the end of the ListView [_GUICtrlListView_AddItem()], and correspondingly add an image at the end of the ImageList [_GUIImageList_AddIcon()] Shouldn't everything stay in sync?
Here's the code I thought would work:
#include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <FontConstants.au3> #include <WindowsConstants.au3> #include <GuiImageList.au3> Test() func Test() $gui = GUICreate("Test", 400, 300) ; Create ListView $lv = _GUICtrlListView_Create($gui, "", 10, 10, 380, 240, $LVS_DEFAULT) _GUICtrlListView_AddColumn($lv, "Col1", 50) _GUICtrlListView_AddColumn($lv, "Col2", 50) for $i = 0 to 2 $s = StringFormat("%d,1", $i+1) _GUICtrlListView_AddItem($lv, $s, $i) $s = StringFormat("%d,2", $i+1) _GUICtrlListView_AddSubItem($lv, $i, $s, 1) next ; Add ImageList $img_list = _GUIImageList_Create(16, 16, 5, 3) for $i = 0 to 2 $ico = StringFormat("%d.ico", $i+1) _GUIImageList_AddIcon($img_list, $ico) next _GUICtrlListView_SetImageList($lv, $img_list, 1) ; $btn = GUICtrlCreateButton("Test", 10, 260, 60, 30) GUISetState(@SW_SHOW) HotKeySet("^q", Quit) ; Loop until the user exits. while True switch GUIGetMsg() case $GUI_EVENT_CLOSE Exit case $btn ; Remove 2nd list item and image _GUICtrlListView_DeleteItem($lv, 1) _GUIImageList_Remove($img_list, 1) ; Add new item to end of ListView $idx = _GUICtrlListView_AddItem($lv, "foo") _GUICtrlListView_AddSubItem($lv, $idx, "bar", 1) ; Add new image to end of ImageList _GUIImageList_AddIcon($img_list, "5.ico") endswitch wend GUIDelete() endfunc func Quit() Exit endfunc What seems to happen is that when the new item is added to the ListView, its icon is 1.ico (the first item in the ImageList), rather than 5.ico (the newly added item that should be at the end of the ImageList).
Or do I need to re-create the whole ImageList any time the ListView changes?
A zip file is attached that contains the script and also the .ico files, for easier testing.
I'm using the FreeCommander XE file manager here, and i'v written a script, which will create an empty, new file, after choosing an extension out from the Listbox.
The listview code is not mine, iv found the scripts somewhere on this forum. I have no credits in it, because it was intended to be only for my personal use.
But now, i have a lot of free time, so i remembered that i haven't posted anything on this forum, yet, so here is my first script:
It should be compiled with the Autoit v188.8.131.52 .
The compiled exe needs a folder passed as a parameter, so that it know where to create the new file.
A Listbox is opened, with a selection of available extensions.
After selecting and doubleclicking (or using the ok button), the script creates a filename (if specified in the config file) with increased numbers (up to 9999).
If the filename exist, the counter is checking the next number, until the maximum is reached.
This script uses an ini file for configuration, called "NewFile.ini" which should be in the same folder, as the compiled exe.
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <String.au3> #include <WinAPIFiles.au3> #include <Array.au3> #include <EditConstants.au3> #include <GuiEdit.au3> #include <ScrollBarsConstants.au3> Global $test, $hFile, $cmd = "", $cmdtmp, $tmptxt, $tmpinidir, $filesetting, $MouseX, $MouseY, $UseMouseX, $UseMouseY, $Edit1 Global $aArray =  $cmdtmp = StringReplace($cmdlineraw, Chr(34), "") If StringLen($cmdtmp) = 2 Then If StringRight($cmdtmp, 1) = ":" Then $cmd = $cmdtmp & "\" EndIf Else If StringRight($cmdtmp, 1) <> "\" Or StringRight($cmdtmp, 1) <> "/" Then $cmd = $cmdtmp & "\" EndIf EndIf If Not FileExists($cmd) Then ;Check if the folder exists, display an error message if not ! DisplayReadMe(1) Exit EndIf If StringLen(@ScriptDir) > 3 And StringRight(@ScriptDir, 1) <> "\" Then $tmpinidir = @ScriptDir & "\" Else $tmpinidir = @ScriptDir EndIf Local Const $sFilePath = $tmpinidir & "NewFile.ini" $filesetting = IniRead($sFilePath, "setting", "filename", "MyNewFile") $filesetting = StringReplace($filesetting, ">", " ") ;msgbox (0,"",$filesetting) ;Debugging If FileExists($sFilePath) Then $aArray = IniReadSectionNames($sFilePath) ; Read the INI section names. This will return a 1 dimensional array. EndIf $UseMouseX = IniRead($sFilePath, "setting", "UseMouseX", "1") $UseMouseY = IniRead($sFilePath, "setting", "UseMouseY", "0") ; Check if an error occurred. If Not @error Then ; Enumerate through the array displaying the section names. Local $count = 0 If FileExists($sFilePath) Then For $i = 1 To $aArray $tmp1 = IniRead($sFilePath, $aArray[$i], "1", "none") If $tmp1 <> "none" And StringLeft($tmp1, 1) = "." Then ;Extension need to have a dot, or it will be ignored ! $tmptxt = $tmptxt & $tmp1 & "|" & $aArray[$i] & @CRLF $count = $count + 1 ;Count how many extensions are added ! EndIf Next EndIf If $count = 0 Then $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text File" & @CRLF ;MsgBox($MB_SYSTEMMODAL,"",$tmptxt) _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) Else ;Reading the ini failed, create a default array for the extensions $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text" & @CRLF _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) EndIf ;Local $test = [['.au3', 'AutoIt'], ['.ahk', 'Auto Hotkey'], ['.txt', 'text'], ['.sdlbas', 'Sdl Basic'], ['.html', 'Webpage']] If $UseMouseX = 1 Then $MouseX = MouseGetPos(0) Else $MouseX = -1 EndIf If $UseMouseY = 1 Then $MouseY = MouseGetPos(1) Else $MouseY = -1 EndIf $Form1 = GUICreate("Create New File", 210, 247, $MouseX, $MouseY, $WS_CAPTION, $WS_EX_TOOLWINDOW) $List = GUICtrlCreateListView("", 5, 5, 200, 200) _GUICtrlListView_InsertColumn($List, 0, "Extension", 65) _GUICtrlListView_InsertColumn($List, 1, "Description", 115) _GUICtrlListView_AddArray($List, $test) GUICtrlCreateLabel("Example:" & $filesetting & "0000.ext", 5, 205) $Button1 = GUICtrlCreateButton("Ok", 16, 224, 45, 22) $Button3 = GUICtrlCreateButton("ReadMe", 80, 224, 55, 22) $Button2 = GUICtrlCreateButton("Cancel", 150, 224, 45, 22) $cDummy = GUICtrlCreateDummy() GUISetState(@SW_SHOW) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Button2 Exit Case $Button3 DisplayReadMe(0) Case $Button1, $cDummy Local $tmptxt = StringSplit(_GUICtrlListView_GetItemTextString($List), "|") If StringLen($tmptxt) > 0 Then Local $fnr = 0, $tmpfile = "" While $fnr < 10000 $tmpfile = $cmd & $filesetting & _StringRepeat("0", 4 - StringLen($fnr)) & $fnr & $tmptxt ;MsgBox(0,"",$tmpfile) ; for debugging If Not (FileExists($tmpfile)) Then $hFile = _WinAPI_CreateFile($tmpfile, 0) _WinAPI_CloseHandle($hFile) Exit EndIf $fnr = $fnr + 1 WEnd EndIf EndSwitch WEnd ;================================================================================ Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView $hWndListView = $List If Not IsHWnd($List) Then $hWndListView = GUICtrlGetHandle($List) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $NM_DBLCLK ; Fire the dummy if the ListView is double clicked GUICtrlSendToDummy($cDummy) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func DisplayReadMe($err) Local $Form1 = GUICreate("Read Me", 550, 400, 10, 10, BitOR($WS_CAPTION, $WS_THICKFRAME ,$WS_MAXIMIZEBOX)) $Edit1 = GUICtrlCreateEdit("", 0, 0, 549, 399) GUICtrlSetData(-1, "") GUISetState(@SW_SHOW) If $err=1 then local $txttmp01="Error: Path does not exist" local $txttmp02="Commandline call was: " AddText ($txttmp01) Addtext ($txttmp02 & $cmd & @CRLF & @CRLF) EndIf AddText("Instructions:" & @CRLF) AddText("Displays a selection of available extensions and then creates a new file at the Path's location." & @CRLF & @CRLF & "Usage: NewFile Path") AddText("Example: NewFile c:\myfolder\" & @CRLF) AddText("Result: A file with a name 'MyFile0000.ext' will be created at the Path's location.") AddText("If the filename exists, the number counter will increase, until it finds a free number, up to 9999." & @CRLF) AddText("Uses a configuration file in the .exe folder named NewFile.ini !" & @CRLF) AddText("Example of a config file:" & @CRLF) AddText("[setting]" & @CRLF & "filename=MyFile>") AddText("UseMouseX=0 ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings !") AddText("UseMouseY=0 ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates !" & @CRLF) AddText(";Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number)" & @CRLF) AddText(";Format for this ini file is:" & @CRLF & ";Name e.g [Auto It]") AddText(";extension e.g 1=.au3" & @CRLF & "; p.s. only 1 extension per section ! the number must be 1" & @CRLF) AddText("[AutoIt3]" & @CRLF & "1=.au3" & @CRLF & @CRLF & "[Text]" & @CRLF & "1=.txt") _GUICtrlEdit_SetSel($Edit1, 0, 0) _GUICtrlEdit_Scroll($Edit1, $SB_SCROLLCARET) If $err=1 Then _GUICtrlEdit_SetSel($Edit1, 0, StringLen($txttmp01 & $txttmp02 & $cmd)+5) EndIf While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE GUIDelete($Form1) ExitLoop EndSwitch WEnd EndFunc ;==>DisplayReadMe Func AddText($edittxt) _GUICtrlEdit_AppendText($Edit1, $edittxt & @CRLF) EndFunc ;==>AddText
[setting] filename=MyNewFile_ UseMouseX=0 ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings ! UseMouseY=0 ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates ! ;Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number) ;Format for this ini file is: ;Name e.g [Auto It] ;extension e.g 1=.au3 ; p.s. only 1 extension per section ! the number must be 1 [AutoIt3] 1=.au3 [Auto Hotkey] 1=.ahk [Text] 1=.txt [Sdl Basic] 1=.sdlbas [Webpage] 1=.html [Basic] 1=.bas [Pascal] 1=.pas [Rich Text (RTF)] 1=.rtf [Word Document] 1=.doc [Hex File] 1=.hex