- Offizieller Beitrag
Wie der Name sagt, werde ich hier mal die kleinen Schnipselchen, die so beim Programmieren anfallen, und für die ein eigener Thread etwas overdressed wäre, posten.
• Parametersplitting in Array
Kennt ihr sicher: Entweder als Funktions- oder Programmparameter wird eine Liste des Musters Schlüssel1=Wert1,Schlüssel2=Wert2,.. übergeben. Wenn dann aber als Schlüssel oder Wert der Listentrenner , oder der Zuweisungsoperator = auftauchen, muss escaped werden. Zum Escapen verwenden wir üblicherweise \.
Mit der folgenden Funktion werden die Schlüssel-Wert-Paare unter Berücksichtigung etwaiger Escapesequenzen in ein 2D-Array gesplittet. $a[0][0]=Anzahl Paare
Bsp.: Parameterstring escaped 'x1=y1,a=b,\,=;,\==%,\\=/' wird zu [[5],['x1','y1'],['a','b'],[',',';'],['=','%'],['\','/']]
Func _SplitParamEscaped($_sParam) ; Escape with '\'
Local $a[1][2] = [[0]], $pos = 1, $sChar, $sVal = ''
While $pos <= StringLen($_sParam)
$sChar = StringMid($_sParam, $pos, 1)
Switch $sChar
Case '\'
$pos += 1
$sVal &= StringMid($_sParam, $pos, 1)
Case '='
$a[0][0] += 1
ReDim $a[$a[0][0]+1][2]
$a[$a[0][0]][0] = $sVal
$sVal = ''
Case ','
$a[$a[0][0]][1] = $sVal
$sVal = ''
Case Else
$sVal &= $sChar
EndSwitch
$pos += 1
WEnd
$a[$a[0][0]][1] = $sVal
Return $a
EndFunc
Alles anzeigen
• Titel eines Fensters durch User-Mausklick abfragen
Erklärt sich selbst, der User kann aus dem Programm heraus auf ein Fenster klicken, der Titel dieses Fensters wird ausgelesen.
#include <WindowsConstants.au3>
#include <Misc.au3>
Func GetTitleByClick()
Local $hCursor = GUICreate('', 48, 48, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
WinSetTrans($hCursor, '', 10)
GUISetCursor(3, 1, $hCursor)
GUISetState(@SW_SHOW, $hCursor)
; get title bar position
Local $pos
Do
$pos = MouseGetPos()
WinMove($hCursor, '', $pos[0]-24, $pos[1]-24)
Sleep(10)
Until _IsPressed('01')
GUIDelete($hCursor)
; block mouse
_MouseTrap($pos[0], $pos[1], $pos[0]+1, $pos[0]+1)
; click position - activates the window
MouseClick('left', $pos[0], $pos[1])
; unblock mouse
_MouseTrap()
; get the title of the active window
Local $sTitle = WinGetTitle('[ACTIVE]')
Return $sTitle
EndFunc ;==>GetTitleByClick
Alles anzeigen