Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/02/2019 in all areas

  1. 1/02/2018: Uploaded a new SciTe4AutoIt3.exe v19.102.1901.0 installer. This version contains the bugfix release for SciTE 4.1.2. There has been a major update for Tidy allowing now inline comments without them being shifted to the left by default. See this thread for the total story about the new behavior and the added options ==> SciTE4AutoIt3 v19.102.1901.0 Enjoy, Jos Addition/Changes/Fixes in the current installer: -------------------------------------------------------------------------------------------------- 2-1-2019 *** Merged the SciTE v 4.1.2 by Neil Hodgson with our own version of SciTE. (Jos) - Fixed regex issue for Alt+F in AutoItTools.lua - Fixed another regex issue for several functions in AutoItTools.lua - Fixed Header parameters now showing None when none are - Fixed jump to function to also jump to the right Column again. - Restored AutoItTools:Copy_BookMarks() functionality *** Updated AutoIt3Wrapper v19.102.1901.0 (Jos) - 18.703.1808.1 renamed "#AutoIt3Wrapper_Au3Stripper_Stop_OnError" to "#AutoIt3Wrapper_Au3Stripper_OnError" with now as options S,C,F,Stop,Continue,ForceUse - 18.708.1148.1 Added #include <WinAPIFiles.au3> back in the included file list to ensure backward compatibility. - 18.708.1148.2 Added "Tidy_Stop_OnError" support to the AutoIt3Wrapper.INI file. Changed HiDPI settings for Win 10 compatibility. - 18.708.1148.4 Added logic to be able to display Console Output of script that have #RequireAdmin while SciTE runs at normal level. - 18.708.1148.5 Added support to allow to Stop Execution or Restart for scripts with #RequireAdmin while SciTE runs at normal level. It won't hang anymore when you reply No on the UAC and detect the elevated process didn;t start. - 18.708.1148.6 Reverted HiDPI changes made in 18.708.1148.2 as problems are reported. needs investigation. - 18.708.1148.7 Changed check for RequireAdmin AutoIt3Wrapper startup. - 18.708.1148.8 Added #include <APIResConstants.au3> for backwards compatibility with AutoIt3 v3.3.14.x. *** Updated Au3Stripper v19.102.1901.0 (Jos) - 18.708.1148.1 Fixed issue finding variable names on multiline statements - 18.708.1148.2 Added check for ending \ in the AutoIt3Dir, and remove it when there, to avoid duplication of includes. - recompiled with PellesC 6 to make it compatible with WinXP again. *** Updated SciTEConfig v19.102.1901.0 (Jos) - 18.708.1148.1 Update to allow comments in *.SciTEConfig file lines. (JPM) This update includes the updated shemes to allow changing between them. *** Updated Tidy v19.102.1901.0 (Jos) - 18.708.1148.1: Fix bug handling Directivelines ending with continuation character - 18.708.1148.2: Fixed indentation when a "None breaking space"(C2A0) character is used in a UTF file. - 18.708.1148.3: Fix bug when a continuation line starts with +x, where is would add a space between +- and number. - 18.708.9999.x: Rewrite of some internal code to allow inlinecomments to remain at their current position. Details can be found in this post: https://www.autoitscript.com/forum/topic/196221-tidy-major-update-27-10-requesting-help-with-testing/ - 18.708.9999.22: Released to Beta. - 18.708.9999.23: Added option to totally skip commentblocks so now the options are: #Tidy_Parameters=/tcb=0 =>only indent the whole commentblock (default) /tcb or /tcb=1 =>Tidy inside commentblock /tcb=-1 =>leave whole commentbock alone Tidy.INI:#--> Tidy commentblock 0=only indent the whole commentblock (default=0) # 1=Tidy inside commentblock # -1=leave whole commentbock alone Tidy_commentblock=0 - 18.708.9999.24: Added check for ending \ in the AutoIt3Dir and remove it when there. - recompiled with PellesC 6 to make it compatible with WinXP again. -------------------------------------------------------------------------------------------------- ==> ScitillaHistory page containing all SciTE-Scintilla updates. ==> Visit the SciTE4AutoIt3 Download page for the latest versions ==> Check the online documentation for an overview of all extra's you get with this installer.
    2 points
  2. This is still valid. It must be taken into account in situations where a method takes an array as input parameter and the array is not an array of variants. If you search for VT_ARRAY in this list you'll get 13 matches. When you use any of these PropertyIds as input parameters you have to handle the arrays properly. The problem arises because the internal AutoIt COM conversions that converts native AutoIt variables and arrays to COM compatible data types always convert a native AutoIt array into a safearray of variants. But in these 13 situations the arrays are safearrays of integers, doubles and IUnknown pointers and thus not safearrays of variants. Here we have to handle the COM conversions ourselves. When a safearray is passed as a parameter to a COM method it's usually passed as a variant ($tagVariant structure) where the variant data field contains a pointer to the safearray. In 32 bit code parameters are passed through the stack. In 32 bit code a variant takes up 16 bytes. The purpose of "uint64;uint64;" is to pass the 16 bytes variant structure onto the stack wherefrom it's read by the internal method code. In 64 bit code the first 4 parameters are passed through CPU registers. If one of the first 4 parameters is a structure and the structure isn't larger than 8 bytes (64 bit) it's passed directly through the CPU register. If it's larger than 8 bytes a pointer to the structure is passed through the CPU register. In 64 bit code a variant takes up 24 bytes. The purpose of "ptr;" is to pass a pointer to the variant structure through a CPU register wherefrom the pointer and then the variant structure is read by the internal method code. If you read the posts around the quoted post, you'll see a working example. junkew, Let's make a little deal. I'll code a function to handle arrays as input parameters and post it here. Then you can copy the function directly into your new UDF. In return, I'll use your UDF in my code.
    2 points
  3. Typically starting a PM with "Fuck off Mother Fucker" is not the best way to plead your case...
    2 points
  4. I've revisited and modified a bit this funny toy. Added some ANSI color renditions (4, 8, 24 bit colors allowed), Added possibility to print big letters using Figlet-Fonts, and also added a script that allows you to quickly 'grab' ascii-arts, (copied from a web page for example) and past into your script in the form of a variable so that can be easily printed on the 'terminal'. (still presence of some flaws) The new stuff is in the vdt folder (I will port asap also the example from the first post to this zip) hope you have fun and ... happy new year everybody! vdt.zip
    2 points
  5. *Note: I am putting this here because I couldn't find any recent walk-through posts on the topic and didn't want to revive an old thread. #cs Notice: This script is coded in a way that most enperienced coders will scoff at... But it is a valid starting point for anyone to get an idea of how to achieve the end result. This is a walk-though on creating a simple and effective invisible update process for your software. There are many ways to do this. This is as simplified as it comes to achieve the desired end result. ---- Your srcipt will check the version number of your local target exe file and it will check version.txt on your server. [if] version.txt is higher than your local exe version [then] the update file is downloaded, the original file is deleted, and the update file is renamed to the original exe file name. ---- *Note- In my own software builds I tend to run 2 exe's... One is my gui (that contains my update script) and the other is the actual exe that does the real work. This allows me to update my underlying program code without the user needing to do anything on his side. *You can run 2 copies of this script (names/vars changed) so that you can also version check/update your main gui exe as well. (This will require a little different approach and will not be covered here.) I included message boxes along the way to help you visualize the process - You will want to remove those for a production environment. #ce #include <MsgBoxConstants.au3> #include <IE.au3> #include <INet.au3> #include <WinAPIFiles.au3> ;global vars have to be above all code - Global vars are frowned upon in general, but for this example they do what is needed Global $serverVersionFile = "https://yourdomain.com/version.txt";create a txt file in your webhosting account and only include your software version in it, for example: 2.0.0.0 Global $UpdatePathIs = @ScriptDir & "\update.exe"; This is the local path where you want your update to be downloaded into. Global $serverUpdateExe = "http://yourdomain.com/update.exe"; This is the path to the update.exe file on your server. Global $ToBeReplacedPathIs = @ScriptDir & "\original.exe"; This is the path to your original program that you want to update. Global $doDownload Global $updateFailed Global $retryornot ; ---- These are the two main functions to run GetCurrentSoftwareVersion() doVersionCheck() ;---- Func GetCurrentSoftwareVersion() ; Retrieve the file version of the target/original executable. | Retrieve the version number contained in your version.txt file. Global $localEXEversion = FileGetVersion($ToBeReplacedPathIs) Global $remoteEXEversion = _INetGetSource($serverVersionFile) EndFunc ;==>GetCurrentSoftwareVersion Func doVersionCheck() ;check if local version is lower than server version - if server version higher than local version then push update If $localEXEversion < $remoteEXEversion Then MsgBox(0,"","server version higher - lets update it") Global $doDownload = InetGet($serverUpdateExe, $UpdatePathIs, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND); This goes and downloads our update.exe file (forces a fresh download) ;The 'do' statment below forces the script to wait until the download has completed to continue. Do Sleep(250) Until InetGetInfo($doDownload, $INET_DOWNLOADCOMPLETE) MsgBox(0,"","download completed") DownloadDeleteRename() Else MsgBox(0,"","server version lower than current local verison - no action needed"); we do "lower" so that when you are working on updates locally and testing, your script doesn't force you to update. EndIf EndFunc;doVersionCheck Func DownloadDeleteRename() FileDelete($ToBeReplacedPathIs); this will delete the original exe file FileMove($UpdatePathIs,$ToBeReplacedPathIs,1); this will rename your update.exe to whatver your original exe file name was so that you have replaced the original exe with the updated exe ; lets check to make sure our update was successful - We do this by checking the local and remote file versions again... If the update was successful, then the local exe file and the remote version.txt file will be the same number. GetCurrentSoftwareVersion() MsgBox(0,"",$localEXEversion & $remoteEXEversion) If $localEXEversion = $remoteEXEversion Then ;all is good - the update was successful Global $updateFailed = false; this means the update did not fail ConsoleWrite($updateFailed) Else $retryornot = MsgBox(16 + 5,"Update error detected","Likely cause: Firewall/Antivirus prevented the download. ") ;this tells us what button the user clicked on msgbox... cancel = 2, and retry = 4 Global $updateFailed = true; this means the update failed ConsoleWrite($updateFailed) EndIf ; with the if statement below we are telling the software to simply close if the user rejected our update instead of retrying. If $retryornot = 4 Then GetCurrentSoftwareVersion() doVersionCheck() Else ;close application ;Exit (remove this text and uncomment 'exit' to make the program actually close) EndIf EndFunc;DownloadDeleteRename
    1 point
  6. Did you try opening with just _Excel_BookOpen(...)? It opens fine for me.
    1 point
  7. Can you try a partial search, might be other hidden characters in the string. $iSearchIndex = _ArraySearch($aBBTableData, "Instructor Name", 0, 0, 0, 1, 1, 0)
    1 point
  8. Found! GUICtrlSendMsg($iEdit, $EM_LIMITTEXT, -1, 0) ; Removes the limit on the number of characters of the 30000 Regards!
    1 point
  9. Is their anyway to get a script to wait for a mouse click anywhere on the screen? I wrote a script that automates a function in a free app I use. In the last few steps controlclick, controlwrite etc cause the app to crash. So I had to resort to using mouse move/clicks. It works perfectly for me but I'd like to contribute this to the community that developed the app. Easy enough to do by storing the coords in an ini. So I need to create a simple script to ask the user to click on 3 items and record the coords each time they click. I know it's possible since au3record does it. Basically I just need some code to wait for a "primary click", and then grab the mouse coords when it happens. Thanks, Kenny
    1 point
  10. Frix, You must have a very strange machine to miss clicks using that code - I need to use additional code to wait until the mousebutton is released to prevent multiple hits even when I try to make the fastest click I can manage: #include <Misc.au3> HotKeySet("{ESC}", "Terminate") $dll = DllOpen("user32.dll") While 1 Sleep(10) ; This enough to prevent CPU overload <<<<<<<<<<<<<<<<<<<<<<<< If _IsPressed("01", $dll) Then $MousePos = MouseGetPos() ConsoleWrite("Mouse Button Pressed" & @CRLF & "X=" & $MousePos[0] & @CRLF & "Y=" & $MousePos[1] & @CRLF) While _IsPressed("01", $dll) Sleep(10) WEnd EndIf WEnd Func Terminate() DllClose($dll) Exit 0 EndFunc Are you sure you are missing clicks - are they perhaps being eaten by the GUI on which you are clicking? M23
    1 point
  11. Think I figured it out, going to play with _IsPressed and see if that works. Here's the code maybe it helps someone. Why is it I always post stupid questions... lol #Include <Misc.au3> HotKeySet("{F3}", "Terminate") $dll = DllOpen("user32.dll") While 1 Sleep ( 250 ) If _IsPressed("01", $dll) Then $MousePos = MouseGetPos() MsgBox(0,"_IsPressed", "Mouse Button Pressed" & @CR & "X=" & $MousePos[0] & @CR & "Y=" & $MousePos[1]) ExitLoop EndIf WEnd DllClose($dll) Exit Func Terminate() Exit 0 EndFunc
    1 point
×
×
  • Create New...