Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/25/2020 in all areas

  1. Or find a way to change the style to allow aligning the context menu to the "Right" side (from button) depending what the main window has their Better yet Post a reproducer to tell what option are available
    3 points
  2. Malkey

    RegEx Problem

    Using curly brackets around the back-reference number, "${1}", in the replace parameter, appears to return the "Expected result" - for some reason. $Clip = 'Some "nice sample" text.' $Clip = StringRegExpReplace($Clip, '(?:(?:(?<=^|[^=]|[^=\w])["“”])([^"“”]+[.,!?\)]?)(?:["”]))', '“${1}”') ;$Clip = StringRegExpReplace( $Clip, '(?:["“])([^"“”]+)(?:["”])', '“${1}”') ConsoleWrite($Clip & @CRLF) MsgBox(1, "", $Clip)
    2 points
  3. This topic give you access to an AutoIt functions library I maintain which is called PAL, Peter's AutoIt Library. The latest version 1.29 contains 231 functions divided into these topics: window, desktop and monitor GUI, mouse and color GUI controls including graphical buttons (jpg, png) GUI numberbox controls for integer, real, binary and hexadecimal input logics and mathematics include constants string, xml string and file string dialogues and progress bars data lists: lists, stacks, shift registers and key maps (a.ka. dictionaries) miscellaneous: logging/debugging, process and system info Change log and files section on the PAL website (SourceForge). A lot of these functions were created in the development of Peace, Peter's Equalizer APO Configuration Extension which is a user interface for the system-wide audio driver called Equalizer APO.
    1 point
  4. This allows you to easily redirect your existing RDP session to the console so it will maintain an active Desktop. This code has a UI to perform the redirect, but to actually use it with your automation, you would need to incorporate it into your code as once it's run it will kick you out of the RDP session since it was redirected to the console. When I was using this, I had another automation running in the background so I ran this to redirect to console and my other automation script ran after hours when it was schedule. #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile_type=a3x #AutoIt3Wrapper_Outfile=RedirectToConsole.a3x #AutoIt3Wrapper_UseX64=N #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs Make a remote connection not loose access to the desktop after disconnecting. https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/keeping-computer-unlocked.html https://support.microsoft.com/en-us/help/302801/the-use-of-tscon-exe-can-leave-a-previously-locked-console-unlocked for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (%windir%\System32\tscon.exe %%s /dest:console) "C:\<path to dc64.exe>\dc64.exe" -width=1920 -height=1200 -depth=32 for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do ( %windir%\System32\tscon.exe %%s /dest:console ) Must be run under x64 not 32, use this to run the execute under 64bit _WinAPI_Wow64EnableWow64FsRedirection(True) ShellExecute(@WindowsDir & '\System32\tscon.exe', '1 /dest:console', '', 'runas') _WinAPI_Wow64EnableWow64FsRedirection(False) Once we have been redirected to console, ensure we are using the largest display available can't tell what the available displays are until we have gone into the console at least once... Create an .ini for use on that computer after to load the dropdown? Default to the last one used, Largest if nothing else was used yet. This doesn't work within Citrix as its a totally different connection type Create a log file to track who initiated the redirect and where they connected in from #ce #include <WinAPIFiles.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <Array.au3> #include <ColorConstants.au3> #include <GuiComboBox.au3> Opt("GUIOnEventMode", 1) ;Use Event mode to call functions directly $sLogFile = @ScriptDir & "\redirect.log" $sSeperator = "---------------------------------------------------------------------------------------------" ;===================================================================================== ;=== Used to figure out what SessionID we are logged in with and if its a remote connection ;===================================================================================== ;Options for the $SessionID Global Static $WTS_CURRENT_SESSION = -1 ;Options for the $WTSInfoClass Global Static $WTSInitialProgram = 0 Global Static $WTSApplicationName = 1 Global Static $WTSWorkingDirectory = 2 Global Static $WTSOEMId = 3 Global Static $WTSSessionId = 4 Global Static $WTSUserName = 5 Global Static $WTSWinStationName = 6 Global Static $WTSDomainName = 7 Global Static $WTSConnectState = 8 Global Static $WTSClientBuildNumber = 9 Global Static $WTSClientName = 10 Global Static $WTSClientDirectory = 11 Global Static $WTSClientProductId = 12 Global Static $WTSClientHardwareId = 13 Global Static $WTSClientAddress = 14 Global Static $WTSClientDisplay = 15 Global Static $WTSClientProtocolType = 16 Global Static $WTSIdleTime = 17 Global Static $WTSLogonTime = 18 Global Static $WTSIncomingBytes = 19 Global Static $WTSOutgoingBytes = 20 Global Static $WTSIncomingFrames = 21 Global Static $WTSOutgoingFrames = 22 Global Static $WTSClientInfo = 23 Global Static $WTSSessionInfo = 24 Global Static $WTSSessionInfoEx = 25 Global Static $WTSConfigInfo = 26 Global Static $WTSValidationInfo = 27 Global Static $WTSSessionAddressV4 = 28 Global Static $WTSIsRemoteSession = 29 Global $sINIfile = @ScriptDir & "\redirect.ini" $iGuiW = 500 $iGuiH = 200 $hGUI = GUICreate("RDP Desktop Redirect", $iGuiW, $iGuiH) GUISetOnEvent($GUI_EVENT_CLOSE, "_ExitApp") GUICtrlCreateLabel("This will redirect your current session to Console." & @CRLF & "This desktop will remain active, but you will be disconnected.", 0, 13, $iGuiW, 40, $SS_CENTER) GUICtrlSetFont(-1, 10, 600) GUICtrlCreateLabel("Select the desktop Display Settings to use after the redirect", 0, 70, $iGuiW, 17, $SS_CENTER) $hDisplaySetting = GUICtrlCreateCombo("<Max>", 40, 90, 240, 20) ;This will be loaded from .ini if found $hBtnRedirect = GUICtrlCreateButton("Redirect and Disconnect", 40, $iGuiH - 50, 160, 25) GUICtrlSetOnEvent($hBtnRedirect, "_RedirectNow") GUICtrlCreateButton("Exit", $iGuiW - 140, $iGuiH - 50, 100, 25) GUICtrlSetOnEvent(-1, "_ExitApp") ;Disable the Redirect button if this is not an RDP session ; Create a red note next to redirect to say Not an RDP session. $sConnType = _WTSQuerySessionInformation($WTS_CURRENT_SESSION, $WTSClientProtocolType) ;What type of connection was used for this session 2 = RDP ConsoleWrite("$WTSClientProtocolType " & $sConnType & @CRLF) If $sConnType <> 2 Then ;2 = RDP connection GUICtrlCreateLabel("Not an RDP connection", 205, $iGuiH - 45, 140, 17) GUICtrlSetColor(-1, $COLOR_RED) GUICtrlSetState($hBtnRedirect, $GUI_DISABLE) EndIf ;Read the .ini if exists and populate the combobox $aDisplayOptions = IniReadSection($sINIfile, "Display") If @error Then GUICtrlCreateLabel("List available after the first redirect", 285, 93, $iGuiW - 285, 17) Else ;load the returned array into the combobox For $i = 1 to $aDisplayOptions[0][0] _GUICtrlComboBox_AddString($hDisplaySetting, $aDisplayOptions[$i][1]) Next EndIf GUISetState(@SW_SHOW, $hGUI) While 1 sleep(100) WEnd Func _RedirectNow() FileWriteLine($sLogFile, $sSeperator & @CRLF & " " & @MON & "/" & @MDAY & "/" & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & "." & @MSEC) $id = _WTSQuerySessionInformation($WTS_CURRENT_SESSION, $WTSSessionId) ;Get the current users SessionId ConsoleWrite("My Session ID: " & $id & @CRLF) $Username = _WTSQuerySessionInformation($WTS_CURRENT_SESSION, $WTSUserName) ;Get the username for the specified session ConsoleWrite("My Username: " & $Username & @CRLF) $sConnFrom = _WTSQuerySessionInformation($WTS_CURRENT_SESSION, $WTSClientName) ;Where the connected user is from (computername) ConsoleWrite("Connected From " & $sConnFrom & @CRLF) If $sConnType = 2 Then ; 2 = RDP Local $aRes[4] ;Store the resolution details needed to update res after switching to console $sDisplaySelection = GUICtrlRead($hDisplaySetting) ;what did the user pick from the dropdown? ;ConsoleWrite("About to redirect to Console: " & @HOUR & ":" & @MIN & ":" & @SEC & "." & @MSEC & @CRLF) FileWriteLine($sLogFile, " RDP Session " & $id & " Redirect to console session 0 initiated by " & $Username & " from " & $sConnFrom) _RedirectToConsole($id) ;Redirect the logged in RDP session to the console to maintain an active desktop for automation While _WTSQuerySessionInformation($WTS_CURRENT_SESSION, $WTSClientProtocolType) = 2 ;Sleep until the Session type is no longer RDP sleep(200) WEnd Sleep(2000) ;Pull every available graphic option from the console and save to the .ini file for selection on the next run IniDelete($sINIfile, "Display", "") ;Delete any existing display settings $aAllOptions = _EnumDisplaySettingsEx() ;Retrieve array of all valid display settings For $i = 0 to UBound($aAllOptions) - 1 IniWrite($sINIfile, "Display", $i, $aAllOptions[$i][4]) Next FileWriteLine($sLogFile, " - " & UBound($aAllOptions) & " valid display settings were found for console. Saved to .ini for next run") ;If something besides <max> has been selected, then choose that If $sDisplaySelection = "<Max>" Then $aRes[0] = $aAllOptions[0][0] $aRes[1] = $aAllOptions[0][1] $aRes[2] = $aAllOptions[0][2] $aRes[3] = $aAllOptions[0][3] Else ;Find the selected display in the [][4] and use that FileWriteLine($sLogFile, " - " & $sDisplaySelection & " was specified instead of opting for <Max>") For $f = 0 to UBound($aAllOptions) - 1 If $aAllOptions[$f][4] = $sDisplaySelection Then $aRes[0] = $aAllOptions[$f][0] $aRes[1] = $aAllOptions[$f][1] $aRes[2] = $aAllOptions[$f][2] $aRes[3] = $aAllOptions[$f][3] ExitLoop EndIf Next EndIf If $aRes[0] = "" or $aRes[1] = "" or $aRes[2] = "" or $aRes[3] = "" Then FileWriteLine($sLogFile, " - Custom Resolution was not found in Console, Left at default: " & @DesktopWidth & "x" & @DesktopHeight & " at " & @DesktopDepth & "dpi with " & @DesktopRefresh & "Hz refresh rate") Exit EndIf _ChangeScreenResEx(1, $aRes[0], $aRes[1], $aRes[2], $aRes[3]) ;Set the display to the max value Sleep(2000) FileWriteLine($sLogFile, " - Screen resolution set to " & @DesktopWidth & "x" & @DesktopHeight & " at " & @DesktopDepth & "dpi with " & @DesktopRefresh & "Hz refresh rate") ;---------------------------------------------------------------------------------------------------------- ;This is where your automation code would go, take screenshots, interact with Desktop, etc... ;---------------------------------------------------------------------------------------------------------- Exit Else MsgBox(0, "Redirect - Disconnect", "This must be launched via a Remote Desktop Connection") EndIf Exit EndFunc Func _RedirectToConsole($iSessionID) _WinAPI_Wow64EnableWow64FsRedirection(True) ShellExecute(@WindowsDir & '\System32\tscon.exe', $iSessionID & ' /dest:console', '', 'runas') _WinAPI_Wow64EnableWow64FsRedirection(False) EndFunc ;Mod of argumentum code at https://www.autoitscript.com/forum/topic/134679-get-hostname-of-the-client-connected-to-the-terminalserver-session/ Func _WTSQuerySessionInformation($SessionId = -1, $WTSInfoClass = 10, $iReturnAsIs = 0) Local $aResult = DllCall("Wtsapi32.dll", "int", "WTSQuerySessionInformation", "Ptr", 0, "int", $SessionId, "int", $WTSInfoClass, "ptr*", 0, "dword*", 0) If @error Or $aResult[0] = 0 Then Return SetError(1, 0, "") Local $ip = DllStructGetData(DllStructCreate("byte[" & $aResult[5] & "]", $aResult[4]), 1) DllCall("Wtsapi32.dll", "int", "WTSFreeMemory", "ptr", $aResult[4]) If $iReturnAsIs Then Return $ip Switch $WTSInfoClass Case 4 ; We want the WTSSessionId Return Int('0x' & StringTrimRight(StringReverse($ip), 3)) Case 29 ; 1 = Its remote, 0 = physical connection $WTSIsRemoteSession Return Int('0x' & StringTrimRight(StringReverse($ip), 3)) case 16 ; $WTSClientProtocolType Return Int('0x' & StringTrimRight(StringReverse($ip), 3)) Case 14 ; We want the WTSClientAddress If Not (Int(StringLeft($ip, 4)) = 2) Then ; IPv4 $ip = "" Else $ip = Dec(StringMid($ip, 15, 2)) & '.' & Dec(StringMid($ip, 17, 2)) & '.' & Dec(StringMid($ip, 19, 2)) & '.' & Dec(StringMid($ip, 21, 2)) EndIf EndSwitch Return StringReplace(BinaryToString($ip), Chr(0), "") EndFunc ;==>_GetWTSClientName ;============================================================== ;=== Return array containing all valid display resolutions ;=== [#][0] = Width ;=== [#][1] = Height ;=== [#][2] = dpi ;=== [#][3] = Refresh Rate ;=== [#][4] = All values in a user readable string ;=== ;=== Sorted Largest to smallest, dups removed ;=== Origionally from rasim ;=== Modified by: BigDaddyO ;============================================================== Func _EnumDisplaySettingsEx() Local $DEVMODE, $DllRet = 0, $enum = 0 local $aAll[1000][5] ;Create a structure to hold all the items that are returned from the EnumDisplaySettinsEx call $DEVMODE = DllStructCreate("char dmDeviceName[32];ushort dmSpecVersion;ushort dmDriverVersion;short dmSize;" & _ "ushort dmDriverExtra;dword dmFields;short dmOrientation;short dmPaperSize;short dmPaperLength;" & _ "short dmPaperWidth;short dmScale;short dmCopies;short dmDefaultSource;short dmPrintQuality;" & _ "short dmColor;short dmDuplex;short dmYResolution;short dmTTOption;short dmCollate;" & _ "byte dmFormName[32];dword dmBitsPerPel;int dmPelsWidth;dword dmPelsHeight;" & _ "dword dmDisplayFlags;dword dmDisplayFrequency") DllStructSetData($DEVMODE, "dmSize", DllStructGetSize($DEVMODE)) $enum = 0 ;Used to track how many display settings have been added to the $aList Do $DllRet = DllCall("user32.dll", "int", "EnumDisplaySettingsEx", "ptr", 0, "dword", $enum, _ "ptr", DllStructGetPtr($DEVMODE), "dword", 0) $DllRet = $DllRet[0] ;Need to retrieve everything into a 2D array, Sort by the Width in Descending order. ; Then loop through writing them into a single string making sure there are no duplicates and returning as a 1D array $aAll[$enum][0] = Int(DllStructGetData($DEVMODE, "dmPelsWidth")) $aAll[$enum][1] = Int(DllStructGetData($DEVMODE, "dmPelsHeight")) $aAll[$enum][2] = Int(DllStructGetData($DEVMODE, "dmBitsPerPel")) $aAll[$enum][3] = Int(DllStructGetData($DEVMODE, "dmDisplayFrequency")) $aAll[$enum][4] = $aAll[$enum][0] & "x" & $aAll[$enum][1] & ", " & $aAll[$enum][2] & "dpi, " & $aAll[$enum][3] & "Hz" ConsoleWrite("Display Setting = " & $aAll[$enum][4] & @CRLF) $enum += 1 Until $DllRet = 0 $DEVMODE = 0 ;Clear out the DLL Struct before we leave the Func ReDim $aAll[$enum][5] ;Resize to the number of items we actually retrieved _ArraySort($aAll, 1) ;Sort the array so its in the order we want ;Move through the array to get rid of any dups Local $aList[$enum][5] ;This will hold the display settigns without any dups Local $iAdd = 0 ;Keep track of the number of unique records For $d = 0 to $enum - 1 ;Loop through every record returned For $f = 0 to $iAdd ;Loop through only those we already verified as not dups If $aList[$f][4] = $aAll[$d][4] Then ContinueLoop(2) ;We found it, so just skip to the next record EndIf Next ;We will only get to this part of the loop if we didn't find a dup $aList[$iAdd][0] = $aAll[$d][0] $aList[$iAdd][1] = $aAll[$d][1] $aList[$iAdd][2] = $aAll[$d][2] $aList[$iAdd][3] = $aAll[$d][3] $aList[$iAdd][4] = $aAll[$d][4] $iAdd += 1 Next ReDim $aList[$iAdd][5] Return $aList EndFunc ;=============================================================================== ; Function Name: _ChangeScreenResEx() ; Description: Changes the current screen geometry, colour and refresh rate. ; Version: 1.0.0.0 ; Parameter(s): $i_DisplayNum - Display to change, starting at 1 ; $i_Width - Width of the desktop screen in pixels. (horizontal resolution) ; $i_Height - Height of the desktop screen in pixels. (vertical resolution) ; $i_BitsPP - Depth of the desktop screen in bits per pixel. ; $i_RefreshRate - Refresh rate of the desktop screen in hertz. ; Return Value(s): On Success - Screen is adjusted, @ERROR = 0 ; On Failure - sets @ERROR = 1 ; Forum(s): ; Author(s): Original code - psandu.ro, PartyPooper ; Modifications - bobchernow ;=============================================================================== Func _ChangeScreenResEx($i_DisplayNum = 1, $i_Width = @DesktopWidth, $i_Height = @DesktopHeight, $i_BitsPP = @DesktopDepth, $i_RefreshRate = @DesktopRefresh) Local Const $DM_PELSWIDTH = 0x00080000 Local Const $DM_PELSHEIGHT = 0x00100000 Local Const $DM_BITSPERPEL = 0x00040000 Local Const $DM_DISPLAYFREQUENCY = 0x00400000 Local Const $CDS_TEST = 0x00000002 Local Const $CDS_UPDATEREGISTRY = 0x00000001 Local Const $DISP_CHANGE_RESTART = 1 Local Const $DISP_CHANGE_SUCCESSFUL = 0 Local Const $HWND_BROADCAST = 0xffff Local Const $WM_DISPLAYCHANGE = 0x007E If $i_Width = "" Or $i_Width = -1 Then $i_Width = @DesktopWidth; default to current setting If $i_Height = "" Or $i_Height = -1 Then $i_Height = @DesktopHeight; default to current setting If $i_BitsPP = "" Or $i_BitsPP = -1 Then $i_BitsPP = @DesktopDepth; default to current setting If $i_RefreshRate = "" Or $i_RefreshRate = -1 Then $i_RefreshRate = @DesktopRefresh; default to current setting Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]") Local $s_Display $s_Display = "\\.\Display" & $i_DisplayNum Local $B = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "int", 0, "ptr", DllStructGetPtr($DEVMODE)) If @error Then $B = 0 SetError(1) Return $B Else $B = $B[0] EndIf If $B <> 0 Then DllStructSetData($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5) DllStructSetData($DEVMODE, 4, $i_Width, 2) DllStructSetData($DEVMODE, 4, $i_Height, 3) DllStructSetData($DEVMODE, 4, $i_BitsPP, 1) DllStructSetData($DEVMODE, 4, $i_RefreshRate, 5) $B = DllCall("user32.dll", "int", "ChangeDisplaySettingsEx","str", $s_Display, "ptr", DllStructGetPtr($DEVMODE), "hwnd", 0, "dword", $CDS_TEST, "lparam", 0) If @error Then $B = -1 Else $B = $B[0] EndIf Select Case $B = $DISP_CHANGE_RESTART $DEVMODE = "" Return 2 Case $B = $DISP_CHANGE_SUCCESSFUL DllCall("user32.dll", "int", "ChangeDisplaySettingsEx","str", $s_Display, "ptr", DllStructGetPtr($DEVMODE), "hwnd", 0, "dword", $CDS_UPDATEREGISTRY, "lparam", 0) DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _ "int", $i_BitsPP, "int", $i_Height * 2 ^ 16 + $i_Width) $DEVMODE = "" Return 1 Case Else $DEVMODE = "" SetError(1) Return $B EndSelect EndIf EndFunc;==>_ChangeScreenResEx Func _ExitApp() Exit EndFunc
    1 point
  5. @Deye Thanks when you mention to change the style that made me to find the solution. I'd use _GUICtrlMenu_TrackPopupMenu with $iAlignX set to "2"
    1 point
  6. I have just uploaded a new version of the CryptoNG UDF library that includes the ability to create RSA public/private key pairs. The UDF is _CryptoNG_CreateRSAKeyPair. An example of how to use the new function was added the the examples file. Please refer to the functions header to get more information related to the parameters. There are a few things to keep in mind about this incremental new UDF functionality. The output of the new function is a public/private key blob pair that is CryptoAPI-compatible. Key blobs are what are used internally by Microsoft's Asymmetric Crypto NG APIs. As I detailed in the example file, these key blob files can be easily converted to PEM or DER encoded files using tools like OpenSSL. The addition of this new function does not add much value by itself other than showing how RSA keys can be generated using Microsoft's CryptoNG APIs because you still need some other tool to convert the file to PEM or DER. In other words, if you need a tool like OpenSSL to convert the key blob to PEM or DER, you might as well use OpenSSL to create the key pair to begin with. However, having the ability to create RSA key pair blobs will lend itself to being able to use the CryptoNG APIs to do asymmetric encryption/decryption/signing in the future when that functionality is added to the library. Also, in the future, I may add the ability to convert the key blobs to DER and PEM internally, so that the UDF library doesn't rely on external tools to do the conversions.
    1 point
  7. jchd

    RegEx Problem

    It would seem (but take that with a drop of salt) that the numeric part of the group specifiers in the replace part ($1, $2, ... or \1, \2, ...) is handled wrongly. Here's a little test showing that in this Unicode codepoint vincinity (and most probably alsewhere), many codepoints don't get handled correctly when they appear right after the last digit of the group number, but get thru fine elsewhere: $Clip = 'Some "nice sample" text and another "sample".' For $i = 0 To 63 $cw(StringRegExpReplace($Clip, '.*?(["“”])(.*?)(["“”]).*', '0x' & Hex(0x2000 + $i, 4) & @TAB & '>' & ChrW(0x2000 + $i) & '<' & @TAB & '“$2' & ChrW(0x2000 + $i) & '<')) Next $cw() is a homebrew UTF8-aware consolewrite. Output: 0x2000 > < “nice sample< 0x2001 > < “nice sample < 0x2002 > < “nice sample< 0x2003 > < “nice sample < 0x2004 > < “nice sample< 0x2005 > < “nice sample< 0x2006 > < “nice sample < 0x2007 > < “nice sample < 0x2008 > < “nice sample < 0x2009 > < “nice sample < 0x200A > < “nice sample< 0x200B >< “nice sample< 0x200C >‌< “nice sample< 0x200D >‍< “nice sample< 0x200E >‎< “nice sample‎< 0x200F >‏< “nice sample‏< 0x2010 >‐< “nice sample‐< 0x2011 >‑< “nice sample‑< 0x2012 >‒< “nice sample‒< 0x2013 >–< “nice sample–< 0x2014 >—< “nice sample< 0x2015 >―< “nice sample< 0x2016 >‖< “nice sample‖< 0x2017 >‗< “nice sample‗< 0x2018 >‘< “nice sample‘< 0x2019 >’< “nice sample’< 0x201A >‚< “nice sample‚< 0x201B >‛< “nice sample‛< 0x201C >“< “nice sample< 0x201D >”< “nice sample< 0x201E >„< “nice sample< 0x201F >‟< “nice sample‟< 0x2020 >†< “nice sample< 0x2021 >‡< “nice sample‡< 0x2022 >•< “nice sample< 0x2023 >‣< “nice sample‣< 0x2024 >․< “nice sample< 0x2025 >‥< “nice sample< 0x2026 >…< “nice sample…< 0x2027 >‧< “nice sample‧< 0x2028 >
< “nice sample
< 0x2029 >
< “nice sample
< 0x202A >‪< “nice sample‪< 0x202B >‫< “nice sample‫< 0x202C >‬< “nice sample< 0x202D >‭< “nice sample< 0x202E >‮< “nice sample‮< 0x202F > < “nice sample < 0x2030 >‰< “nice sample‰< 0x2031 >‱< “nice sample‱< 0x2032 >′< “nice sample< 0x2033 >″< “nice sample″< 0x2034 >‴< “nice sample< 0x2035 >‵< “nice sample< 0x2036 >‶< “nice sample‶< 0x2037 >‷< “nice sample‷< 0x2038 >‸< “nice sample‸< 0x2039 >‹< “nice sample‹< 0x203A >›< “nice sample›< 0x203B >※< “nice sample※< 0x203C >‼< “nice sample< 0x203D >‽< “nice sample< 0x203E >‾< “nice sample< 0x203F >‿< “nice sample‿<
    1 point
  8. Not at all. I know for weeks that resetting the flag to False asap will solve the issue and make the cell context menu appear at each right click, even if I choosed not to indicate it in my 1st post. Didn't I give the solution by myself in the 2nd post ? Concerning the 1st post I edited (1 day before you answered +++) It was to correct the line you mentioned (I noticed by myself that it was wrong, due to a copy-paste) : $iMenu_Choice = _GUICtrlMenu_TrackPopupMenu($hMenu, $g_hListView, -1, -1, 1, 1, 2) ; $g_hHeader -> g_hListView (however, has nothing to do with the issues) There is nothing wrong in modifying a post when no answers have been made, that was the case. I should certainly have written why I modified it, but as you noticed, it has nothing to do with the issue and I noticed that too. The main reason for the 1st post is based on the fact I hoped someone would point at the fact the flag should be reset earlier and a discussion would have followed that. But the "yellowed" line issue, that one I didn't have any clue about it : 1 HD Main B That "yellowed" line is the part of code that is executed after the header menu is closed (when no options have been chosen in it). I wanted to know why it appeared only for the header menu (resetting in time the flag, great !) and not for the cell menu (flag not reset => problem) I discovered this week that, while the header menu is displayed, another right click on the header (keeping the right button down) triggers that "yellowed" line immediately and no other event occurs while the right button is down (no right click notify event) This behavior isn't found in the cell menu : when you right click on another cell, nothing is triggered (in the script) until you release the right button : that's a big difference between both right clicks (in header or in cell) Anyway, thanks for the detailed explanations. I'll consider using the dummy control for all the reasons you exposed, especially you made me discover the "state" parameter I never used until now, thanks for that. GUICtrlSendToDummy( controlID [, state] ) And thanks to argumentum for your code, I'll study that too.
    1 point
  9. jchd

    RegEx Problem

    I get the same (surprinsingly wrong) result here (W7 x64 French). I wild guess the OS version is irrelevant but maybe a setting applying to typing correction is the culprit. For instance, the following works: $Clip = 'Some "nice sample" text and another "sample".' $Clip = StringRegExpReplace($Clip, '(["“”])(.*?)(["“”])', '“$2' & ChrW(0x200B) & '”') MsgBox(1, "", $Clip) Removing the ChrW(0x200B) [ZERO WIDTH SPACE] causes the closing ChrW(0x201D) [RIGHT DOUBLE QUOTATION MARK] to vanish in the result.
    1 point
  10. Subz

    ShellFolder object filter

    Or $objShell = ObjCreate("Shell.Application") $objFolder = $objShell.Namespace('shell:Downloads').Self.Path ConsoleWrite($objFolder & @CRLF)
    1 point
  11. Melba23

    RegEx Problem

    Guy_, I have amended your original thread title for 2 reasons: it is not necessarily an AutoIt bug - and to attract the RegEx gurus who might otherwise miss the thread! M23
    1 point
  12. Danp2

    WebDriver UDF - Help & Support

    This is the "General Help and Support" thread for the WebDriver UDF. The UDF itself can be downloaded here. So if you have any questions, suggestions or errors please post here.
    1 point
  13. I used google to translate bracket to latin which is ancon. So Anconophobia?
    1 point
×
×
  • Create New...