Brauche Hilfe beim Erstellen der RegExp für den Parameter REGEXPTITLE von erweiterten Fenstertiteln.
Bei WinTextMatchMode 2 (Übereinstimmung einer beliebigen Teilzeichenfolge des Titels) soll ein Fenstertitel gefunden werden, aber ich kann keinen Titel übergeben, der Single Quotes enthält.
Hintergrund
Der Aufruf erfolgt als /AutoIt3ExecuteLine aus VBScript, die SingleLine wird umschlossen von doppelten Anführungszeichen, wodurch ich innerhalb der SingleLine einfache Anführungzeichen benutzen kann, z.B. um Parameter für Funktionen zu umschließen. Wenn nun ein Titel übergeben wird, der seinerseits Single Quotes enthält, streikt der Parser.
Deshalb ersetze ich vor dem Aufruf Single Quotes im Titel durch Fragezeichen "?". Nun brauche ich quasi eine Rückwandlung von "?" in Single Quotes, aber REGEXPTITLE ist kein StringRegExpReplace(). Wie sagt man REGEXPTITLE, dass nach Single Quotes anstelle der "?" gesucht werden soll?
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
Local $sWinTitle = "Ein 'Beispiel' mit '-Zeichen drin"
Local $sWinTitle_2
Local $iRet = 0
Local $hGui = GUICreate($sWinTitle, 400, 200)
Local $Button1 = GUICtrlCreateButton("WinExists ?", 150, 40, 100, 25)
GUISetState(@SW_SHOW, $hGui)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button1
$sWinTitle_2 = StringReplace($sWinTitle, "'", "?") ; Alle Single Quotes durch "?" ersetzen.
$iRet = WinExists('[TITLE:' & $sWinTitle_2 & ']') ; <= Ergibt natürlich 0/False.
; $iRet = WinExists('[REGEXPTITLE:?????' & $sWinTitle_2 & ']') ; <= Wie kann man alle "?" durch Single Quotes "ersetzen"?
MsgBox($MB_SYSTEMMODAL, "", "WinExists: " & $iRet, 0, $hGui)
EndSwitch
WEnd
EndFunc ;==>Example
Alles anzeigen