Leaderboard
Popular Content
Showing content with the highest reputation on 07/20/2015 in all areas
-
[NEW RELEASE] - 11 Jan 15 Added: A new function (_GUITreeViewEx_SaveTV) to save the current TreeView (and checkbox state). Changed: A number of function names have been altered to reflect that at present the UDF is mainly oriented towards checkbox management (but stick around... ). This is script breaking so please do look at the new names if you have already used the UDF in a script. New zip below. A recent thread dealt with getting TreeViews with checkboxes to automatically check/clear associated items when a checkbox was actioned. It seemed like a good idea for a UDF and so here it is. I think the examples are pretty self-explanatory: initialise a TreeView once it is filled, register the UDF NOTIFY handler and then check/clear some checkboxes! Additional functionalities are the ability to check/clear ALL checkboxes in the TreeView and to stop the UDF acting on a previously initialised TreeView. There are also functions to fill/save a TreeView using a text string to define the item titles and the levels at which they should be created which has no link to the other UDF functions but seemeduseful to add. Here is a zip containing the UDF and examples in both MessageLoop & OnEvent mode: GUITreeViewEx.zip As always, comments, compliments and criticisms welcomed. M231 point
-
The other day mikeytown2 posted one post in HTTP UDF's thread that got me thinking if there is better (different) method to send requests through the HTTP protocol to HTTP servers. There is Winhttp.dll that ships with windows and that is its main purpose. I couldn't find any examples of using this dll in AutoIt, so I came up with this. Microsoft about Windows HTTP Services: Microsoft Windows HTTP Services (WinHTTP) provides developers with an HTTP client application programming interface (API) to send requests through the HTTP protocol to other HTTP servers... .. blah, blah, and so on... This is an example of getting page header: #include "WinHttp.au3" Opt("MustDeclareVars", 1) ; Open needed handles Local $hOpen = _WinHttpOpen() Local $hConnect = _WinHttpConnect($hOpen, "msdn.microsoft.com") ; Specify the reguest: Local $hRequest = _WinHttpOpenRequest($hConnect, Default, "en-us/library/aa384101(VS.85).aspx") ; Send request _WinHttpSendRequest($hRequest) ; Wait for the response _WinHttpReceiveResponse($hRequest) Local $sHeader = _WinHttpQueryHeaders($hRequest) ; ...get full header ; Clean _WinHttpCloseHandle($hRequest) _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hOpen) ; Display retrieved header MsgBox(0, "Header", $sHeader)Everything you need to be able to use this UDF can be found at WinHttp site. Remember, basic understanding of the HTTP protocol is important to use this interface. ProgAndy, trancexx WinHttp.au3 is completely free and no one has right to charge you for it. That's very important. If you feel WinHttp.au3 was helpful to you and you wish to support my further work you can donate to my personal account via PayPal address: trancexx at yahoo dot com I will appreciate that very much. Thank you in advance! :kiss:1 point
-
No it doesn't speak, I lied. That is impossible. It's about setting animated GIF (and every other type of images) to a GUI control. How is this done for animated GIF? Few simple steps: - created ImageList of GIF Bitmaps retrieved from gif file/resource - created Pic control - every now and then another image is displayed. This is determined by frame delay time - see gif specification somewhere. That's it. All that takes time and could potentially block our gui/script. That's why flying assembly is used. Animation is done in another thread different from one AutoIt's code is executed in. Nothing stops animation but you. Animation works both for x64 and x86. Also it works for all kind of images not only GIFs. That means you can use it to display PNGs, BMPs, JPGs, etc... All of them from resources too. Example: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include "GIFAnimation.au3" Opt("MustDeclareVars", 1) ; Start by choosing GIF to display Global $sFile = FileOpenDialog("Choose Image", "", "(*.gif;*.png;*.jpg;*.tiff;*.bmp;*.jpeg)", -1, "") If @error Then Exit ; Make GUI Global $hGui = GUICreate("GIF Animation", 500, 500, -1, -1, $WS_OVERLAPPEDWINDOW) ; Add some buttons Global $hButton = GUICtrlCreateButton("&Pause animation", 50, 450, 100, 25) Global $hButton1 = GUICtrlCreateButton("&Delete Control", 200, 450, 100, 25) Global $hButton2 = GUICtrlCreateButton("&Open Image", 350, 450, 100, 25) ; Make GIF Control Global $hGIF = _GUICtrlCreateGIF($sFile, "", 10, 10) If @extended Then GUICtrlSetState($hButton, $GUI_DISABLE) GUICtrlSetTip($hGIF, "Image") ; Additional processing of some windows messages (for example) GUIRegisterMsg(133, "_Refresh") ; WM_NCPAINT GUIRegisterMsg(15, "_ValidateGIFs") ; WM_PAINT Global $iPlay = 1 ; Show it GUISetState() ; Loop till end While 1 Switch GUIGetMsg() Case -3 Exit Case $hButton If $iPlay Then If _GIF_PauseAnimation($hGIF) Then $iPlay = 0 GUICtrlSetData($hButton, "Resume animation") EndIf Else If _GIF_ResumeAnimation($hGIF) Then $iPlay = 1 GUICtrlSetData($hButton, "Pause animation") EndIf EndIf Case $hButton1 _GIF_DeleteGIF($hGIF) Case $hButton2 $sFile = FileOpenDialog("Choose gif", "", "(*.gif;*.png;*.jpg;*.tiff;*.bmp;*.jpeg)", -1, "", $hGui) If Not @error Then _GIF_DeleteGIF($hGIF); delete previous $hGIF = _GUICtrlCreateGIF($sFile, "", 10, 10) If @extended Then GUICtrlSetState($hButton, $GUI_DISABLE) Else GUICtrlSetState($hButton, $GUI_ENABLE) EndIf GUICtrlSetTip($hGIF, "Image") $iPlay = 1 GUICtrlSetData($hButton, "Pause animation") EndIf EndSwitch WEnd Func _Refresh($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam, $lParam _GIF_RefreshGIF($hGIF) EndFunc ;==>_Refresh Func _ValidateGIFs($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam, $lParam _GIF_ValidateGIF($hGIF) EndFunc ;==>_ValidateGIFs It should be 0% cpu. Download from here if you want to impress chicks: http://code.google.com/p/gif-animation/downloads/list There are 8 examples in there. GIF files are downloaded automatically if some example script needs it. Mostly from photobucket.com. Some examples work without classic download. Required data is get with InetRead(). That's mighty cool. So, download, open ZIP, grab folder inside and place it where you want. Run examples and that's it. Word or two about main function, _GUICtrlCreateGIF(). It can handle all sorts of input. Will display Images that are passed as binary, resource identifiers, strings, file names, ... everything. If it's valid image all works. For example, all this is valid: ; Pass GIF File path/name _GUICtrlCreateGIF("Some.gif", "", 10, 10) ; Binary data _GUICtrlCreateGIF($bGIF, "", 10, 10,) ; PE Resource (file GIF.dll, Type: GIF, Name: 4) _GUICtrlCreateGIF("GIF.dll", "GIF;4", 10, 10, 100, 120) ; PE Resource (file @AutoItExe, Type: RES, Name: BLAH, Language: 1033) _GUICtrlCreateGIF(@AutoItExe, "RES;BLAH;1033", 10, 10) ; PE Resource (file "explorer.exe", Type: 2, Name: 6801) _GUICtrlCreateGIF("explorer.exe", "2;6801", 10, 10) ;<- BITMAP ; PE Resource (file @AutoItExe, Type: RC_DATA, Name: PNG) _GUICtrlCreateGIF(@AutoItExe, "10;PNG", 10, 10) ; GIF string _GUICtrlCreateGIF(FileRead("Some.gif"), "", 10, 10) ____________________________________________1 point
-
TTS UDF
coffeeturtle reacted to Kanashius for a topic
This is a simple TTS-UDF. If you like it, please leave me a comment, also if you have any suggestions to make it better or if you found bugs. TTS UDF.au31 point -
Hi, I think, you all know this: You look at a script containing color values. You have a rough idea of the colors, but would like to know how it looks like. I have created a Lua script that displays the color of the value in SciTE as Calltip. Set the cursor in the Hex-value, press the hotkey. Above the value a Call tip appears. The background color corresponds to the hex value. Read the function header to obtain installation instructions. So it looks. EDIT: I think it's better to bind the function not only of AutoIt. If it can be called in all files, also the color settings in the * .properties can view. For this purpose remove the file attachment from the call. Use: command.13.*= instead of: command.13.*.au3= EDIT 20.07.2015: Now I've made some changes - You can switch to show colors as RGB or BGR - added new function: PreviewBackForeColor To have a preview for back and fore color: - Write in one line first the back color, than the fore color (i. e. as comment: "; 0xDEDEDE 0x000080") OR have this values inside a function call: "_AnyFunction($param1, $param2, 0xDEDEDE, $param3 0x000080)". If the order inside the call is reverse (first hex value is fore color), you can call the function with Flag "_fFore1st=true" - No other color value may be included in this line. If any - the first and second color will used. - Set the cursor in this line and hit the Hotkey. - A Calltip appears with the back color and the text "FORE-COLOR" with color of the fore value. - If only one color value was find in this line, this value will used as back color or, if Flag is "true", as fore color. In this cases the fore color is set to black and with Flag the back color is the default GUI back color "0xF0F0F0" Because you've different functions in one script, you need another way to install and call it. Read the instructions inside the script. First color used as back color, second as fore color. Function called with flag - first color is now the fore color. EDIT 2018-01-16: Added: Now be also recognized in au3 scripts, variables/constants which have an color assignment inside the script or inside an include file from this script. But it can only be one assignment per line. If the assignment is inside a comment line or -block, it will ignored. The assignment can also be build by using function(s) [from script or include files]. example: "Local $COLOR = '0x' & Hex(Mod(@SEC, 2) ? Random(0,0x000FFF, 1) : Random(0x001000, 0xFFF000, 1), 8)" But the functions must NOT CONTAIN any VARIABLES! This would require a recursive assignment search. Impossible if variables get values only at runtime. You can disable the search inside include files with an entry in SciTEUser.properties: #~ "ShowHexColorFromCursor.lua", Dis/Enable search in Includes (0/1 NO/YES) Get.Color.Assignment.Includes=0 The default value (without settings) is '1', enabled. Includes in comments will ignored. current version v0.8 EDIT 2018-02-22: Changed: Read assignment from function call got any problems - removed. Fixed: Unexpected behavior if caret doesn't touch any hex value while calling the function. Added: Recognition of hex values from length 1 hex character. Added: Instead of default behavior for hiding the calltip, [line 75] local bCALLTIP_END_ANYKEY = true can be used to immediately fade out the tip every time you press a key or move a mouse. current version v0.10 -- TIME_STAMP 2018-02-22 10:26:36 v 0.10 --[[------------- I N S T A L L A T I O N A N D U S I N G I N S T R U C T I O N -------------- Save the file. At first, make an entry in your SciTEStartup.lua LoadLuaFile("ShowHexColorFromCursor.lua", "C:\\Your Path\\with Backslash\\") Select free command-numbers from your SciTEUser.properties. Customize the following settings with this numbers. # 13 Show HexColor RGB command.name.13.*=Show RGB-Color From Cursor command.13.*=dostring ShowHexColorFromCursor() command.mode.13.*=subsystem:lua,savebefore:yes command.shortcut.13.*=Ctrl+Shift+F11 # 14 Show HexColor BGR command.name.14.*=Show BGR-Color From Cursor command.14.*=dostring ShowHexColorFromCursor(true) command.mode.14.*=subsystem:lua,savebefore:yes command.shortcut.14.*=Ctrl+Alt+F11 Set the cursor in the Hex-value, press the hotkey to show the color as RGB or as BGR. Above the value a Call tip appears. The background color corresponds to the hex value. A possible alpha component is ignored. [NEW] Now be also recognized in au3 scripts, variables/constants which have an color assignment inside the script or inside an include file from this script. PLEASE NOTE: Each line may only contain one assignment! If the assignment is inside a comment line or -block, it will ignored. You can disable the search inside include files with an entry in SciTEUser.properties: #~ "ShowHexColorFromCursor.lua", Dis/Enable search in Includes (0/1 NO/YES) Get.Color.Assignment.Includes=0 The default value (without settings) is '1', enabled. Includes in comments will ignored. Be recognized AutoIt hex color code "0x12AB34" and also HTML hex color code "#12AB34" with length from 1 to 6 hex characters. Possible alpha information will ignored. PREVIEW FOR BACK AND FORE COLOR: - Write in one line first the back color, than the fore color (i. e. as comment: "; 0xDEDEDE 0x000080") OR have this values inside a function call: "_AnyFunction($param1, $param2, 0xDEDEDE, $param3 0x000080)". If the order inside the call is reverse (first hex value is fore color), you can call the function with Flag "_fFore1st=true" - No other color value may be included in this line. If any - the first and second color will used. - Set the cursor in this line and hit the Hotkey. - A Calltip appears with the back color and the text "FORE-COLOR" with color of the fore value. - If only one color value was find in this line, this value will used as back color or, if Flag is "true", as fore color. In this cases the fore color is set to black and with Flag the back color is the default GUI back color "0xF0F0F0" For use with AutoIt color values only. To have both calls (w/wo flag) make two commands: # 11 Preview Back and Fore Color / first color value is back color command.name.11.*.au3=Preview Back and Fore Color command.11.*.au3=dostring PreviewBackForeColor() command.mode.11.*.au3=subsystem:lua,savebefore:yes command.shortcut.11.*.au3=Ctrl+Shift+F12 # 16 Preview Fore and Back Color / first color value is fore color command.name.16.*.au3=Preview Fore and Back Color command.16.*.au3=dostring PreviewBackForeColor(true) command.mode.16.*.au3=subsystem:lua,savebefore:yes command.shortcut.16.*.au3=Ctrl+Alt+F12 --------------------------------------------------------------------------------------------------]] local bDEBUG = false -- set "true" to get debug output local bCALLTIP_END_ANYKEY = false -- set "true" to cancel the calltip with any key or mouse move ------------------------------------------------------------ list object to manipulate simple tables local objList = { list = {}, delall = function(self) self.list = {} return self end, addonce = function(self, _val, _casesense) -- return true, if added local exists = function(_val, _casesense) for k in pairs(self.list) do if _casesense then if self.list[k] == _val then return true end else if tostring(self.list[k]):upper() == tostring(_val):upper() then return true end end end return false end if not exists(_val, _casesense) then table.insert(self.list, _val) return true end return nil end, new = function(self, _obj) _obj = _obj or {} setmetatable(_obj, self) self.__index = self return _obj end } --------------------------------------------------------------------------------------- /object list --------------------------------------------------------------------------------------- object color local objColor = { --------------------------------------------- variable will un/set if color-calltip is not/shown colortip_show = false, --------------------------------- user can disable search inside include files, default: enabled search_in_includes = true, ------------------------------------------------------------------- the default calltip position calltips_pos_def = false, ------------------------------------------------------------ the default calltip highlight color calltips_colorhlt_def = 0x0000FF, -- BGR (red) ---------------------------------------------------------- list with include storage directories lInclPathes = objList:new(), -------------------------------------------------- list/string with includes from current buffer lIncl = objList:new(), sIncl = '', ---------------------------------------------------------------------------------------- pattern pattHex = '()0x([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])', pattHex2 = '[0-9a-fA-F][0-9a-fA-F]', pattHexN = '0-[x#]([0-9a-fA-F]+)', pattHexEnd = '0x[0-9a-fA-F]+()', pattCS1 = '^#[Cc][Oo][Mm][Mm][Ee][Nn][Tt][Ss]%-[Ss][Tt][Aa][Rr][Tt]', pattCE1 = '^#[Cc][Oo][Mm][Mm][Ee][Nn][Tt][Ss]%-[Ee][Nn][Dd]', pattCS2 = '^#[Cc][Ss]', pattCE2 = '^#[Cc][Ee]', pattComment = '^%s*;', ----------------------------------------------------------------------------------------- pathes sPathGetColorAU3, sFileResult, TEMPDIR = props['SciteUserHome']..'\\..\\..\\Temp', sAU3exe = props['SciteDefaultHome']..'\\..\\AutoIt3.exe', ------------------------------------------------------------------------------------------------ ------------------------------------------------------------ set calltip values back to defaults SetCalltipsDefault = function(self) self.colortip_show = false scite.SendEditor(SCI_CALLTIPSETBACK, 0xFFFFFF) scite.SendEditor(SCI_CALLTIPSETFOREHLT, self.calltips_colorhlt_def) scite.SendEditor(SCI_CALLTIPSETPOSITION, self.calltips_pos_def) if bDEBUG then output:AppendText('> DEBUG: Calltips set to defaults') end end, ---------------------------------------------------------------------------- /SetCalltipsDefault ------------------------------------------------------------------------------ initialize values Startup = function(self) if props['Get.Color.Assignment.Includes'] == '0' then self.search_in_includes = false end if tonumber(props['calltips.set.above']) == 1 then self.calltips_pos_def = true end if props['calltips.color.highlight'] ~= '' then local colorhlt_user = myCallTips:BGR2Decimal(props['calltips.color.highlight']) if colorhlt_user ~= nil then self.calltips_colorhlt_def = colorhlt_user end end local sProp = props['openpath.$(au3)'] for w in sProp:gmatch('([^;]+)') do self.lInclPathes:addonce(w) end self.sPathGetColorAU3 = self.TEMPDIR..'\\ExecLineGetColor.au3' self.sFileResult = self.TEMPDIR..'\\ExecLineColor.txt' end, --------------------------------------------------------------------------------------- /Startup -------- check for comment line/block. Return "true/false, 0/1/-1" (0=comment line/1=#cs/-1=#ce) -- returned number for de/increase comment counter CheckComment = function(self, _s) local iMatch = _s:find(self.pattComment) if iMatch ~= nil then return true, 0 end iMatch = _s:find(self.pattCS1) or _s:find(self.pattCS2) if iMatch ~= nil then return true, 1 end iMatch = _s:find(self.pattCE1) or _s:find(self.pattCE2) if iMatch ~= nil then return true, -1 end return false, 0 end, ------------------------------------------------------------------------------------------------ --------------------------------------------------------- read include files from current buffer IncludesFromBuffer = function(self) local sText, boolCmnt, countCmnt, n, incl = editor:GetText(), false, 0 self.lIncl:delall() self.sIncl = '' for line in sText:gmatch('([^\r\n]+)') do boolCmnt, n = self:CheckComment(line) if boolCmnt then countCmnt = countCmnt + (n) end if not boolCmnt and countCmnt == 0 then -- none comment line or block -- #include <abc.au3> incl = line:match("#[iI][nN][cC][lL][uU][dD][eE]%s-<([%w%s_.]+)>") if incl ~= nil then if self.lIncl:addonce(incl) then self.sIncl = self.sIncl..'#include <'..incl..'>\n' if bDEBUG then output:AppendText('> DEBUG: IncludesFromBuffer.Add "#include <'..incl..'>"\n') end end else -- #include 'abc.au3' or #include "abc.au3" _, incl = line:match("#[iI][nN][cC][lL][uU][dD][eE]%s-([\"'])([%w%s_.:\\]+)%1") if incl ~= nil then if incl:sub(1,1) == '\\' then incl = incl:sub(2,-1) end if self.lIncl:addonce(incl) then if incl:sub(2,2) == ':' then self.sIncl = self.sIncl..'#include "'..incl..'"\n' if bDEBUG then output:AppendText('> DEBUG: IncludesFromBuffer.Add "#include '.."'"..incl.."'"..'"\n') end else self.sIncl = self.sIncl..'#include "'..props['FileDir']..'\\'..incl..'"\n' if bDEBUG then output:AppendText('> DEBUG: IncludesFromBuffer.Add "#include '.."'"..props['FileDir']..'\\'..incl.."'"..'"\n') end end end end end end end end, ---------------------------------------------------------------------------- /IncludesFromBuffer ------------------------------------------ create the au3 file for executing the assignment line CreateAU3 = function(self, _sLineAssignment) local sTextAU3 = self.sIncl.. 'Global $sFileExport = @TempDir & "\\ExecLineColor.txt"\n'.. 'FileDelete($sFileExport)\n'.. 'Global $sLine = "'.._sLineAssignment..'" ; line: $Variable = assignment\n'.. 'If $sLine = "NONE" Then Exit\n'.. 'Global $sExec = StringTrimLeft($sLine, StringInStr($sLine, "="))\n'.. 'Global $sColor = "0x" & Hex(Execute($sExec), 6)\n'.. 'If Not StringRegExp($sColor, "^0x[0-9A-F]{6}$") Then Exit\n'.. 'FileWrite($sFileExport, $sColor)\n' local fH = io.open(self.sPathGetColorAU3, 'w+') fH:write(sTextAU3) fH:close() end, ------------------------------------------------------------------------------------- /CreateAU3 --------------------------------- check, if file containing the assignment for selected variable FindAssignment = function(self, _path, _sSelection) local fH = io.open(_path) if fH ~= nil then local sRead, boolCmnt, countCmnt, n = fH:read('*all'), false, 0 fH:close() for line in sRead:gmatch('([^\r\n]+)') do boolCmnt, n = self:CheckComment(line) if boolCmnt then countCmnt = countCmnt + (n) end if not boolCmnt and countCmnt == 0 then -- none comment line or block if line:find(_sSelection..'%s*=') then if bDEBUG then output:AppendText('> DEBUG: Assignment line "'..line..'"\n') end return line end end end end return nil end, -------------------------------------------------------------------------------- /FindAssignment -------------------------------------------------------------------- detects color from variable GetColorValueFromVariable = function(self, _sSelection, _iCursor, _var_beginPos, _var_endPos, _fBGR) local sLine = self:FindAssignment(props['FilePath'], _sSelection) if sLine == nil then -- search inside include files -- do it not, if the user has disabled: "Get.Color.Assignment.Includes=0" (default = 1 - enabled) if self.search_in_includes then self:IncludesFromBuffer() -- get include files if #self.lIncl.list ~= 0 then -- open each include file, search line with assignment "_sSelection =" for i=1, #self.lIncl.list do if self.lIncl.list[i]:sub(2,2) == ':' then -- include has full path, search only in this file sLine = self:FindAssignment(self.lIncl.list[i], _sSelection) if bDEBUG then output:AppendText('> DEBUG: Search "'.._sSelection..'" in "'..self.lIncl.list[i]..'" --> '..tostring(sLine ~= nil)..'\n') end end if sLine == nil and self.lIncl.list[i]:find('\\') then -- include has partial path, check first if exist in @ScriptDir sLine = self:FindAssignment(props['FileDir']..'\\'..self.lIncl.list[i], _sSelection) if bDEBUG then output:AppendText('> DEBUG: Search "'.._sSelection..'" in "'..props['FileDir']..'\\'..self.lIncl.list[i]..'" --> '..tostring(sLine ~= nil)..'\n') end end if sLine == nil then -- include has filename only (or partial path), -- .. concanate all directories with this for searching for j=1, #self.lInclPathes.list do sLine = self:FindAssignment(self.lInclPathes.list[j]..'\\'..self.lIncl.list[i], _sSelection) if bDEBUG then output:AppendText('> DEBUG: Search "'.._sSelection..'" in "'..self.lInclPathes.list[j]..'\\'..self.lIncl.list[i]..'" --> '..tostring(sLine ~= nil)..'\n') end if sLine == nil then sLine = self:FindAssignment(props['FileDir']..'\\'..self.lIncl.list[i], _sSelection) if bDEBUG then output:AppendText('> DEBUG: Search "'.._sSelection..'" in "'..props['FileDir']..'\\'..self.lIncl.list[i]..'" --> '..tostring(sLine ~= nil)..'\n') end end if sLine ~= nil then break end end end end end end end if sLine == nil then sLine = 'NONE' else -- trim characters right from assignment sLine = sLine:sub(1,sLine:match(self.pattHexEnd)) end if bDEBUG then output:AppendText('> DEBUG: Search "'.._sSelection..'" \n> DEBUG: Result "'..sLine..'"\n') end -- create the au3-file for executing the assignment line, with 'NONE' - the last result file will delete self:CreateAU3(sLine) -- run the au3-file local sCmd = '"'..self.sAU3exe..'" /AutoIt3ExecuteScript "'..self.sPathGetColorAU3..'"'..' "'..sLine..'"' if shell then shell.exec(sCmd, nil, true, true) else os.execute('start "" '..sCmd) end -- check for result local fH = io.open(self.sFileResult) if fH == nil then scite.SendEditor(SCI_CALLTIPSHOW, _var_beginPos +1, (' NONE COLOR ASSIGNED! ')) scite.SendEditor(SCI_CALLTIPSETHLT, 0, 22) scite.SendEditor(SCI_CALLTIPSETBACK, 0x33FFFF) scite.SendEditor(SCI_CALLTIPSETFOREHLT, 0x0000FF) scite.SendEditor(SCI_CALLTIPSETPOSITION, true) if bDEBUG then output:AppendText('> DEBUG: Set Calltip "'.._sSelection..'" --> "NONE COLOR ASSIGNED!"\n') end else local sValue = fH:read() fH:close() local R,G,B = sValue:match('('..self.pattHex2..')('..self.pattHex2..')('..self.pattHex2..')$') local iLen = _var_endPos - _var_beginPos -1 scite.SendEditor(SCI_CALLTIPSHOW, _var_beginPos +1, (' '):rep(iLen)) scite.SendEditor(SCI_CALLTIPSETHLT, 0, iLen) scite.SendEditor(SCI_CALLTIPSETPOSITION, true) if _fBGR == true then scite.SendEditor(SCI_CALLTIPSETBACK, tonumber(string.format('0x%s%s%s', R,G,B))) if bDEBUG then output:AppendText('> DEBUG: Set Calltip BGR "'.._sSelection..'" --> "'..string.format('0x%s%s%s', R,G,B)..'"\n') end else scite.SendEditor(SCI_CALLTIPSETBACK, tonumber(string.format('0x%s%s%s', B,G,R))) if bDEBUG then output:AppendText('> DEBUG: Set Calltip RGB "'.._sSelection..'" --> "'..string.format('0x%s%s%s', B,G,R)..'"\n') end end end self.colortip_show = true editor:SetSelection(_iCursor, _iCursor) end, --------------------------------------------------------------------- /GetColorValueFromVariable ----------------------------------------- grabs the color value or variable from cursor position FromCursor = function(self, _fBGR) local function isHexChar(_asc) local sChar = string.char(_asc) if sChar:find('[#x0-9a-fA-F]') then return true else return false end end local cursor = editor.CurrentPos -- check if cursor is possible inside a variable local var_beginPos, var_endPos = cursor if string.char(editor.CharAt[cursor]) ~= '$' then -- cursor is inside or behind the variable (if its a variable) editor:WordLeft() -- skip to the left end var_beginPos = editor.CurrentPos -- is it a variable? if string.char(editor.CharAt[var_beginPos]) == '$' then -- now the cursor is in front of variable editor:WordRight() var_endPos = editor.CurrentPos editor:SetSelection(var_beginPos, var_endPos) local sSelection = editor:GetSelText() local iLenSel = sSelection:len() -- trim spaces on right site, if any sSelection = sSelection:gsub('%s+$','') var_endPos = var_endPos - (iLenSel - sSelection:len()) if bDEBUG then output:AppendText('> DEBUG: Cursor on variable "'..sSelection..'"\n') end return self:GetColorValueFromVariable(sSelection, cursor, var_beginPos, var_endPos, _fBGR) end -- cursor inside hex value? local beginPos, endPos = cursor, cursor while isHexChar(editor.CharAt[beginPos-1]) do beginPos = beginPos - 1 end while isHexChar(editor.CharAt[endPos]) do endPos = endPos + 1 end if beginPos ~= endPos then if beginPos > endPos then editor:SetSelection(endPos, beginPos) else editor:SetSelection(beginPos, endPos) end local sMatch = tostring(editor:GetSelText()):match(self.pattHexN) if sMatch == nil then return editor:SetSelection(cursor, cursor) end local sHex6 = '0x'..('0'):rep(6-sMatch:len())..sMatch local iLen = sMatch:len() +2 local R,G,B = tostring(sHex6):match('('..self.pattHex2..')('..self.pattHex2..')('..self.pattHex2..')$') if bDEBUG then output:AppendText('> DEBUG: Cursor on hex value\n') end editor:SetSelection(cursor, cursor) scite.SendEditor(SCI_CALLTIPSHOW, beginPos+1, (' '):rep(iLen-1)) scite.SendEditor(SCI_CALLTIPSETHLT, 0, iLen-1) scite.SendEditor(SCI_CALLTIPSETPOSITION, true) if _fBGR == true then scite.SendEditor(SCI_CALLTIPSETBACK, tonumber(string.format('0x%s%s%s', R,G,B))) if bDEBUG then output:AppendText('> DEBUG: Set Calltip BGR hex value --> "'..string.format('0x%s%s%s', R,G,B)..'"\n') end else scite.SendEditor(SCI_CALLTIPSETBACK, tonumber(string.format('0x%s%s%s', B,G,R))) if bDEBUG then output:AppendText('> DEBUG: Set Calltip RGB hex value --> "'..string.format('0x%s%s%s', B,G,R)..'"\n') end end self.colortip_show = true else editor:SetSelection(cursor, cursor) end end, ------------------------------------------------------------------------------------ /FromCursor ----------------------------------------------------------------------- show back and fore color PreviewBackForeColor = function(self, _fFore1st) local iBackCol, iForeCol = 0xF0F0F0, 0x000000 local cursor = editor.CurrentPos local sLine, iColumn = editor:GetCurLine() local iLineStartPos = cursor - iColumn local tMatch, beginPos = {}, nil for s, r, g, b in sLine:gmatch(self.pattHex) do if beginPos == nil then beginPos = s end local t = {} t['R']=r t['G']=g t['B']=b table.insert(tMatch, t) end if #tMatch == 0 then if bDEBUG then output:AppendText('> DEBUG: Search back/fore color --> "FAILED"\n') end return elseif #tMatch == 1 then if _fFore1st == true then iForeCol = tonumber(string.format('0x%s%s%s', tMatch[1].B, tMatch[1].G, tMatch[1].R)) if bDEBUG then output:AppendText('> DEBUG: Search back/fore color "ForeColor" --> "'..string.format('0x%s%s%s', tMatch[1].B, tMatch[1].G, tMatch[1].R)..'"\n') end else iBackCol = tonumber(string.format('0x%s%s%s', tMatch[1].B, tMatch[1].G, tMatch[1].R)) if bDEBUG then output:AppendText('> DEBUG: Search back/fore color "BackColor" --> "'..string.format('0x%s%s%s', tMatch[1].B, tMatch[1].G, tMatch[1].R)..'"\n') end end else if _fFore1st == true then iForeCol = tonumber(string.format('0x%s%s%s', tMatch[1].B, tMatch[1].G, tMatch[1].R)) iBackCol = tonumber(string.format('0x%s%s%s', tMatch[2].B, tMatch[2].G, tMatch[2].R)) if bDEBUG then output:AppendText('> DEBUG: Search back/fore color "ForeColor" --> "'..string.format('0x%s%s%s', tMatch[1].B, tMatch[1].G, tMatch[1].R)..'"\n') end if bDEBUG then output:AppendText('> DEBUG: Search back/fore color "BackColor" --> "'..string.format('0x%s%s%s', tMatch[2].B, tMatch[2].G, tMatch[2].R)..'"\n') end else iForeCol = tonumber(string.format('0x%s%s%s', tMatch[2].B, tMatch[2].G, tMatch[2].R)) iBackCol = tonumber(string.format('0x%s%s%s', tMatch[1].B, tMatch[1].G, tMatch[1].R)) if bDEBUG then output:AppendText('> DEBUG: Search back/fore color "ForeColor" --> "'..string.format('0x%s%s%s', tMatch[2].B, tMatch[2].G, tMatch[2].R)..'"\n') end if bDEBUG then output:AppendText('> DEBUG: Search back/fore color "BackColor" --> "'..string.format('0x%s%s%s', tMatch[1].B, tMatch[1].G, tMatch[1].R)..'"\n') end end end if bDEBUG then output:AppendText('> DEBUG: Set calltip back/fore color\n') end scite.SendEditor(SCI_CALLTIPSHOW, iLineStartPos + beginPos, ' FORE-COLOR ') scite.SendEditor(SCI_CALLTIPSETHLT, 0, 12) scite.SendEditor(SCI_CALLTIPSETBACK, iBackCol) scite.SendEditor(SCI_CALLTIPSETFOREHLT, iForeCol) self.colortip_show = true end -------------------------------------------------------------------------- /PreviewBackForeColor } -------------------------------------------------------------------------------------- /object color ---------------------------------------------------------------------------------- region EventClass ShowColorEvt = EventClass:new(Common) function ShowColorEvt:OnKey() if objColor.colortip_show then if bCALLTIP_END_ANYKEY then scite.SendEditor(SCI_CALLTIPCANCEL) end objColor:SetCalltipsDefault() end end function ShowColorEvt:OnDwellStart() if objColor.colortip_show then if bCALLTIP_END_ANYKEY then scite.SendEditor(SCI_CALLTIPCANCEL) end objColor:SetCalltipsDefault() end end --------------------------------------------------------------------------------- /region EventClass -------------------------------------------------------------------------- function call redirection function ShowHexColorFromCursor(_fBGR) objColor:FromCursor(_fBGR) end --> ShowHexColorFromCursor function PreviewBackForeColor(_fFore1st) objColor:PreviewBackForeColor(_fFore1st) end --> PreviewBackForeColor ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------- run startup objColor:Startup() ---------------------------------------------------------------------------------------------------- ShowHexColorFromCursor[0.10].lua1 point
-
Visual Studio 2015 and .NET 4.6 Available for Download
guinness reacted to jvanegmond for a topic
http://blogs.msdn.com/b/somasegar/archive/2015/07/20/visual-studio-2015-and-net-4-6-available-for-download.aspx1 point -
This is a Musicplayer, with streamingfunction, 2 decks and 2 playlists, so you can play 3 audiolines to 3 different audiooutputs. there is also a livesearch (searching while typing) and the fileexplorer treeview/listview udf (written by me) is used (littlebit modified for playlists entry). There is also a simple mode with just one playlist. Also there is a full colormanagement to personalize it. I translated the Programm in english to post it here. If you like it, please leave me a comment, also if you have any suggestions to make it better or if you found bugs. Example Images: For more information and direct executables, please visit my website: http://kanashius.de/?page=musicIt MusicIt_source.zip1 point
-
TTS UDF
coffeeturtle reacted to mLipok for a topic
Yes. I think this can be one of examples but this need a time. We are toogether (I and Kanashius) working on TTS UDF updated.1 point -
JO, SRER is not so easy for a fairly new AutoIt user Just a clue $newtext = StringRegExpReplace($oldtext, '\h{5,}', $delimiter)1 point
-
Visual Studio 2015 and .NET 4.6 Available for Download
jvanegmond reacted to guinness for a topic
How weird is that? =)1 point -
WinHTTP functions
jaberwacky reacted to trancexx for a topic
Probably. This could also work (maybe): #include "WinHttp.au3" Const $sClientID = "3fda9b4a8bc150c" ; your client-id Const $sAddress = "https://api.imgur.com/3/upload.xml" ; the address of the target (https or http, makes no difference - handled automatically) Const $sForm = _ '<form action="' & $sAddress & '" method="post" enctype="multipart/form-data">' & _ ' <input type="file" name="image"/>' & _ ; '</form>' $sFileToUpload = FileOpenDialog("Open", @ScriptDir, "Images (*.jpg;*.gif;*.png;*.bmp)") ; Initialize and get session handle $hOpen = _WinHttpOpen() $hConnect = $sForm ; will pass form as string so this is for coding correctness because $hConnect goes in byref ; Fill form $sReturned = _WinHttpSimpleFormFill($hConnect, $hOpen, _ Default, _ "name:image", $sFileToUpload, _ "Authorization: Client-ID " & $sClientID) If @error Then MsgBox(4096, "Error", "Error number = " & @error) Else ConsoleWrite($sReturned & @CRLF) EndIf ; Close handles _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hOpen)1 point -
Windows 10 release 29th of July
jvanegmond reacted to AdmiralAlkex for a topic
I'm going to install it as soon as I can. I expect my computer to pretty much literally fly with DX12 (Intel i7 3930K & GeForce GTX 970)1 point -
Windows 10 Deployment Scenarios Overview
Jon reacted to JLogan3o13 for a topic
Thanks for the post, Jon. I am working at a client's right now in which upgrade discussions have already begun. Thankfully I believe it'll coincide with a hardware refresh, so the number of machines we actually upgrade will be small. And I don't think they'll be ready to even plan a rollout until 2016, but the requests are already piling up for testing resources, both physical and virtual.1 point -
Windows 10 release 29th of July
jvanegmond reacted to guinness for a topic
I am genuinely looking forward to it. Windows 7 right through to 8.1 has surpassed all my expectations, plus looking forward to VS2015 =)1 point -
Try this code : #Include <IE.au3> $sUser = "testuser1" $oIE = _IEcreate("http://the-url") ; replace it by your url $content = _IEDocReadHTML($oIE) $id = StringRegExp($content, 'for="([^"]+)">Select ' & $sUser & '', 1)[0] $oCheckbox = _IEGetObjById($oIE, $id) $oCheckbox.checked = True1 point
-
Hiding folders
argumentum reacted to satanttin for a topic
Does it matter it wasn't made to do this? i mean it works so thought someone might find it usefull. And yes the only reason it needs to be "moved" is because autoit doesn't have a function to rename a folder.1 point -
How to locate a checkbox in a form
HuaAi reacted to jaberwacky for a topic
Is _IEAction what you're looking for?1 point -
Try this code: #include <BMP3.au3> ;https://www.autoitscript.com/forum/topic/27362-bitmap-library/ #include <Array.au3> #include <File.au3> Global $g_bPaused = False HotKeySet("{PAUSE}", "TogglePause") HotKeySet("{ESC}", "Terminate") Func TogglePause() $g_bPaused = Not $g_bPaused While $g_bPaused Sleep(100) ToolTip('Script is "Paused"', 0, 0) WEnd ToolTip("") EndFunc Func Terminate() Exit EndFunc Local $filename = FileOpenDialog("Select image", @DesktopCommonDir, "All images (*.jpg;*.png;*.gif;*.bmp;)", 1) $bmp = _BMPOpen($filename,1) ;zwraca uchwyt do bitmapy która otworzylismy. Dim $tab3d[$bmp[2]][$bmp[1]] For $i = 0 To $bmp[1] - 1 For $j = 0 To $bmp[2] - 1 $tab3d[$j][$i]=_PixelRead($bmp,$i,$j) Next Next If WinExists("[CLASS:MSPaintApp]") Then _ WinKill("[CLASS:MSPaintApp]", "") Run("mspaint.exe") $hWnd = WinWait("[CLASS:MSPaintApp]", "",2) sleep(200) WinMove("[CLASS:MSPaintApp]", "", 0, 0, 1000, 1000) Sleep(200) MouseMove(105,76,1) Local $w1, $w2 For $i = 0 to $bmp[2] - 1 $w1=MouseGetPos() For $j = 0 To $bmp[1] - 1 if $tab3d[$i][$j]='000000' Then Local $w2=MouseGetPos() MouseClick( "left", $w2[0],$w2[1], 1, 1 ) while $j < $bmp[2]-1 And $tab3d[$i][$j] = $tab3d[$i][$j+1] $j += 1 MouseDown( "left" ) $w2 = MouseGetPos() MouseMove( $w2[0]+2, $w2[1], 0 ) WEnd MouseUp("left") $w2 = MouseGetPos() MouseMove( $w2[0]+2, $w2[1], 0 ) EndIf if $tab3d[$i][$j]='FFFFFF' Then $w2 = MouseGetPos() MouseMove( $w2[0]+2, $w2[1], 0 ) EndIf Next MouseMove( $w1[0], $w1[1]+2, 0 ) Next1 point
-
Help with POSTing image to imgur [winhttp]
jaberwacky reacted to trancexx for a topic
There are no forms there, the output you get from form filling function is correct. What you should do if you want to use _WinHttpSimpleFormFill() is to create form for your self. Like this: #include "WinHTTP.au3" $sFile = @ScriptDir & "\testimage.jpg" $sForm = _ '<form action="http://imgur.com/api/upload.xml" method="post" enctype="multipart/form-data">' & _ ' <input type="file" name="image" />' & _ ' <input name="key">' & _ '</form>' ; Initialize and get session handle $hOpen = _WinHttpOpen() ; Form is string initially $hForm = $sForm ; Fill form on this page $sRead = _WinHttpSimpleFormFill($hForm, $hOpen, Default, "name:image", $sFile, "name:key", "b3625162d3418ac51a9ee805b1840452") ; Close connection handle _WinHttpCloseHandle($hForm) ; Close session handle _WinHttpCloseHandle($hOpen) ; See what's returned If $sRead Then ConsoleWrite($sRead & @CRLF) That script will upload testimage.jpg and will print to console all the info you would need.1 point