Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 12/28/2013 in all areas

  1. 1/22/2014: re-Uploaded a new SciTE4AutoIt3.exe installer with the new SciTE v3.3.7 release. This version contains a version of AutoIt3Wrapper and SciTEConfig which are recompiled with AutoIt3 v 3.3.10.2 to avoid te hardcrash with Athlon CPU's. There are a couple of major changes: - Updated our version of SciTE from 3.3.6 to 3.3.7 - AutoIt3Wrapper will now use "c:users<userName>AppdataLocalAutoit v3Aut2Exe" as Temp directory. - Updated syntax files. Enjoy, Jos Addition/Changes/Fixes in the current installer: -------------------------------------------------------------------------------------------------- 01/22/2014 *** Updated AutoIt3Wrapper v2.1.4.5 (Jos) - Fixed issue with undecleared variable error when using /Versioning_Commit - Recompiled with version 3.3.10.2 because 3.3.10.0 could give a hardcrash. *** Updated SciTEConfig v1.6.11.1 (Jos) - Recompiled with version 3.3.10.2 because 3.3.10.0 could give a hardcrash. -------------------------------------------------------------------------------------------------- 12/29/2013 *** Fixed missing SciTEConfig in SciTE4AutoIt3 installer. -------------------------------------------------------------------------------------------------- 12/28/2013 *** Merged the updates of SciTE v 3.3.7 by Neil Hodgson with our own version of SciTE. (Jos) *** Updated Production config files to 3.3.10.0 *** Updated AutoIt3Wrapper v2.1.4.0 (Jos) - Use "c:\users\<userName>\Appdata\Local\Autoit v3\Aut2Exe" as Temp directory for compiling and resource updating like aut2exe. - Fixed issue with Compile both and Pragma(x64,true) - Fixed inputfile in case Obfuscator needs to run but is skipped due to unsupported utf format. - Fixed UPX selection option to default to N and adding the Directive when checkbox is checked. *** Updated Obfuscator.exe v1.0.31.1 (Jos) - Changed the code to leave #include statements that include a a3x file. -------------------------------------------------------------------------------------------------- 11/14/2013 *** Merged the updates of SciTE v 3.3.6 by Neil Hodgson with our own version of SciTE. (Jos) - Added check to avoid double shelling of the script via shortcuts of the tools menu items. - Added Properties option to set the default encoding of new files: NewFileEncoding=CodePage/UTF8/UTF8BOM/UTF16BE/UTF16LE - Fixed issue in AU3 lexer to show the last correctly when the previous line is a commentline, commentblock, Special and Directives. *** Updated AutoIt3Wrapper v2.1.3.0 (Jos) - Fixed issue where a tempfile was left behind when files was checked by au3check and UTF encoded. - Added support for the #PRAGMA statement to avoid any conflicts. Warnings are now displayed in the Console output. - Added SciTE version to the displayed info in the Console Output. - Added #AutoIt3Wrapper_Res_Remove (wraithdu) - Added File compression for Resource Files (wraithdu) #AutoIt3Wrapper_Res_File_Add=%in%, 10, UNCOMPRESSED #AutoIt3Wrapper_Res_File_Add=%in%, -10, COMPRESSED - Updated option to change the TempDir in the INI file. Default changed to @UserProfileDir. (wraithdu) - Fixed adding /Beta to the Obfuscator line when using the /Beta on the commandline of Autoit3wrapper. - Fixed to ensure UPX is ran when needed. - Fixed: Allow | in run_before and Run_After directives. *** Updated Tidy v2.4.0.0 (Jos) - Added support for 3.3.9.x changes. - Changed default EOF setting to add the CRLF. (End_With_NewLine=1) - Fixed removal of spaces for new Var/Func notation - Fixed crash caused by Function table load. *** Updated SciTEConfig v1.6.11.0 - Updates for Abbrev manager and User Calltip Manager (Melba23) *** Updated Obfuscator.exe v1.0.31.0 (Jos) - Fixed ensure #pragma statements are not stripped. - Fixed Regression internal code cleanup done before. The Obfuscation was broken - Fixed #include logic for #Include not first checking the Directory where the file containing the include is located. - Added check for max 4100 character record len without causing a crash. *** Added support for personal LUA functions. Look at "PersonalTools.lua" in your @UserProfileDir subdir for details. *** Updated SciTEJump to the latest version v2.13.103.227 (guinness) -------------------------------------------------------------------------------------------------- ==> 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.
    1 point
  2. Thank you. I came up with this: Func IsConnectedToRoom($iProcessId) Local $avResult = DllCall("iphlpapi.dll", "DWORD", "GetExtendedTcpTable", _ "ptr", 0, _ "DWORD*", 0, _ "BOOL", True, _ "ULONG", 2, _ ;AF_INET "DWORD", 4, _ ;TCP_TABLE_OWNER_PID_CONNECTIONS "ULONG", 0) If ((@error) Or ($avResult[0] <> 0x7A)) Then Return False ;ERROR_INSUFFICIENT_BUFFER Local $dwSize = $avResult[2] Local $tTcpTable = DllStructCreate("BYTE[" & $dwSize & "]") $avResult = DllCall("iphlpapi.dll", "DWORD", "GetExtendedTcpTable", _ "ptr", DllStructGetPtr($tTcpTable), _ "DWORD*", $dwSize, _ "BOOL", True, _ "ULONG", 2, _ ;AF_INET "DWORD", 4, _ ;TCP_TABLE_OWNER_PID_CONNECTIONS "ULONG", 0) If ((@error) Or ($avResult[0])) Then Return False Local $tMIB_TCPTABLE_OWNER_PID = DllStructCreate("DWORD[" & Ceiling($dwSize / 4) & "]", DllStructGetPtr($tTcpTable)) Local $dwNumEntries = DllStructGetData($tMIB_TCPTABLE_OWNER_PID, 1) If ($dwNumEntries = 0) Then Return False Local $iOffset Local $iConnectionProcessId, $iConnectionRemotePort For $i = 0 To $dwNumEntries - 1 $iOffset = ($i * 6) + 1 $iConnectionProcessId = DllStructGetData($tMIB_TCPTABLE_OWNER_PID, 1, $iOffset + 6) $iConnectionRemotePort = Dec(Hex(BinaryMid(DllStructGetData($tMIB_TCPTABLE_OWNER_PID, 1, $iOffset + 5), 1, 2))) If (($iConnectionProcessId = $iProcessId) And ($iConnectionRemotePort = 8687)) Then Return True Next Return False EndFunc
    1 point
  3. You can use AutoIt3WrapperToPragma (see signature) to do it in one click!
    1 point
  4. The main reason why ability to #include a3x-es was added was to move number of built-in functions from compiled binaries (raw .bin interpreters used by the compiler) into precompiled private au3 files. The idea was to extend and use pragmatic directives to "include" needed precompiled files/functions. To me it never made sense why compiled executable should include all built-in functions even though they were never used by user's code. Considering AutoIt is dllcall capable and also since some time works with all kind of objects either late or early bound, all preconditions for the idea were made. Really large number of functions can be taken out of the binary stub with no performance hits. Functions like Beep, Mouse..., Reg..., Tcp, Udp, and tens of others which aren't any faster because of being part of the binary code. Of course that some functions can't be taken out, for example Adlibs or some that do lots of calculation like Pixel-whatever but large number of others are very good candidates. Anyway, the idea was to do something like this: #pragma use(socket) TCPStartup() ;... ...and in case of au3 script which is run by AutoIt.exe TCP functions would be built-in (even not necessary) and in case of compiled executable Aut2Exe would add needed a3x code with functions written for it in simple easily maintainable AutoIt code. This way the size of compiled executables would really depend just on set used functions plus absolute minimum interpreter needs and wouldn't have burden of unnecessary code. Pragma directive would be mandatory for code that uses Execute or some other run-string function, but for "normal" code it can even be dropped out because compiler can detect used functions itself.
    1 point
  5. Jon

    autoit 3.3.10.0 is HUGE

    I agree. I'm always wary of exe bloat and try and keep it to a minimum. I used to have a rule that the AutoIt.exe couldn't be more than 100KB compressed. But features add size in the current architecture and that's why I resist features when a UDF is acceptable. It's always a balance - not one that I always get right either. Yeah, that was the whole point of .a3x along with a super-permissive license for redistributing autoit3.exe. If I were distributing lots of files it's how I would do it. I don't have the skill or the time to create a proper compiler so that's all I've got. It's always been compiled with every file shrinking option that can be done. We don't have any exceptions/c++ stream features enabled - and we don't use any of the STL classes. The initial compile is done in "minimize size" mode which gives: 850KB (Visual Studio 2012) 820KB (2010) One of the biggest increases in size this release was because we had too many bugs in the math functions (we were using bespoke assembly code for all these functions since 2003) and we finally had to use the VC runtime ones to fix things - this instantly added 60KB, ouch, but at least it's fixed and other future math functions won't mess up or add more size. Even compiled without the VC runtime in static mode it is 666KB - so still in the "people will moan" territory and not worth the hassle of making everyone install the VC runtimes. You'll notice that the current release exe is actually 70KB bigger than I mention above. That's because we then run it through a few common operations and use the Visual Studio tools to analyse performance and then recompile the hotspot functions for speed. The resulting file sizes between the different compilers vary wildly at this point and generally the latest compiler tends to perform better. VC 2010 in this mode gives a much much bigger exe than 2012 and it's about the same speed (a touch faster). This 70KB vs the speed boost is another aspect to weigh up - the perf boost significant enough that I choose to use it. We also add a far bit of bloat when we reduce bugs. We tend to use a lot of string classes and smart pointers in new code and this is totally worth it to reduce those impossible to find bugs that haunt AutoIt for years. Many of the bugs fixed this release were due to some buffer overrun or buffer miscalculation, especially when different people are touching the same source. When old functions are revisited they tend to get the same treatment. Totally worth it IMO. Supporting older OSes also adds some KBs - not much but 10's of KBs. We have to check for, and dynamically load functions, and perform cleanup afterwards. We have wrapper functions that allow this to be done in an easy way but they are all C++ classes that add a little size because they perform various checks and auto-clean up in as hassle free (and bug free) manner possible. In general I try to stick with an OS level that is under MS support which usually (not always) corresponds to the latest compiler level. At the moment we are going one step beyond that in supporting XP RTM and adding some ugly compiler hacks to allow this. 3.3.12.0 will be changed to XP SP3 which will remove another set of these dynamic functions. I rambled on a bit there, but thought some of the internals might be of interest.
    1 point
×
×
  • Create New...