Beiträge von Bitnugger
-
-
Geht das auch mit Autoit Bordmitteln?
Ich denke mal ja...
DriveGetDrive, DriveStatus, _WinAPI_IsWritable, _WinAPI_IsDoorOpen, _WinAPI_EjectMedia, _WinAPI_LoadMedia
-
Allerdings wird in die jeweils falsche Richtung gescrollt (x und y)...
Bei WM_TOUCH aber nur, nehme ich mal an...
Dann musst du nur folgende Zeilen ändern:
GuiScroll_Prog_neu_06.au3
Zeile 311: $SB_LINELEFT mit $SB_LINERIGHT vertauschen
Zeile 312: 'right' mit 'left' vertauschen
Zeile 317: $SB_LINEUP mit $SB_LINEDOWN vertauschen
Zeile 318: 'up' mit 'down' vertauschen
GuiScroll_Prog_neu_06_DEBUG.au3Zeile 343: $SB_LINELEFT mit $SB_LINERIGHT vertauschen
Zeile 344: 'right' mit 'left' vertauschen
Zeile 349: $SB_LINEUP mit $SB_LINEDOWN vertauschen
Zeile 350: 'up' mit 'down' vertauschenEs kann aber auch gut sein, dass du deinen Monitor drehen musst...

-
Was mir noch auffällt sind komische Zeichen, wenn ich ÖÄÜ im Text verfüge.
Du meinst in Outlook? Die Umlaute sind zerhackt? Dann ist es ein Kodierungsproblem. Falls ja, dann poste mal die Ausgabe der folgenden Funktion...
AutoItLocal $iEncoding = FileGetEncoding(@ScriptFullPath) ConsoleWrite('$iEncoding = ' & $iEncoding & @CRLF)Habe noch was dazu gefunden: Tabulator innerhalb der E-Mail
ZitatBeachte, dass Email entweder in html oder plain-text geschrieben wird. In beiden gibt es keinen setzbaren Tabstopp. Bei Drücken der Tab-Taste werden nur 3 geschützte Leerzeichen eingefügt und das auch nur wenn Du ein E-Mail Programm also einen lokalen Editor verwendest.
Im Web (Outlook.com) kannst Du Dir evtl. für einige Fälle mit dem eingerückten Absatz behelfen.
Gert
Gert
-
Hast Du Lust, das nochmal anzugehen?
Ja sicher doch... habe momentan aber leider wenig bis keine Zeit.

Neu: GuiScroll.au3
Neu: GuiScroll_Prog_neu_06.au3
Neu: GuiScroll_Prog_neu_06_DEBUG.au3 ; Verwendet die Pfeiltasten (Arrow keys), um WM_TOUCH-Nachrichten zu simulieren.
Bis auf die Accelerator-Keys, die ich zum Testen von $WM_TOUCH in der DEBUG-Version eingebaut habe, sollten beide Versionen identisch sein. Was du nicht brauchst, kannst du ja wieder eliminieren.Achtung: die GuiScroll.au3 ist eine geänderte Version!!!
Teste beide Versionen und falls es bei dir immer noch nicht funktioniert, dann bitte noch mal den Inhalt von _Memo() mit ausreichend Daten für weiter Fehlersuche posten.
Die DEBUG-Version läuft jedenfalls bei mir... die normale kann ich ja nicht testen... und schau dir die Kommentare gut an!
So, dann bin ich mal gespannt...

-
Hm... durch das Sleep pausiert das Script 20 ms lang... wüsste aber ich nicht, was es sonst noch für einen Sinn hat.

Hier mal meine Version mit _IsPressed... die ich aber nur benutzen würde, wenn man mir eine Pistole an die Stirn hält.

IsPressed
AutoIt
Alles anzeigen;-- TIME_STAMP 2018-01-13 15:14:57 v 0.1 #Region ;************ Includes ************ #include <StaticConstants.au3> #include <WindowsConstants.au3> ;~ #include <Misc.au3> ; _IsPressed #EndRegion ;************ Includes ************ Global $g_hDLL = DllOpen("user32.dll"), $g_ptz, $g_idShow_ptz, $g_sShow_ptz _Example() Func _Example() Local $hGUI = GUICreate('', 800, 600, -1, -1, $WS_POPUP) GUISetBkColor(0x483D8B, $hGUI) GUISetState(@SW_MAXIMIZE) Local $aClientSize = WinGetClientSize($hGUI) GUICtrlCreateLabel(StringFormat('Erlaubte Tasten\r\r%s\r\r%s\r', 'ARROW keys: DOWN, UP, LEFT, RIGHT', 'ESC for Exit'), 100, 100, $aClientSize[0] - 200, 5 * 80, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER)) GUICtrlSetFont(-1, 48, 900) GUICtrlSetColor(-1, 0x7B68EE) $g_idShow_ptz = GUICtrlCreateLabel('losgelassen', 100, 7 * 80, $aClientSize[0] - 200, 240, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER)) GUICtrlSetFont(-1, 144) GUICtrlSetColor(-1, 0x008CCC) GUICtrlSetBkColor(-1, 0x685DAB) OnAutoItExitRegister('_Exit') AdlibRegister('_Show_ptz') While 1 _GetKeys() If $g_ptz = 'x' Then Exit If $g_sShow_ptz = $g_ptz Then ContinueLoop $g_sShow_ptz = $g_ptz & ($g_ptz <> '' ? ' gedrückt' : 'losgelassen') WEnd EndFunc ;==>_Example Func _IsPressed($sHexKey, $vDLL = 'user32.dll') ; $hexKey must be the value of one of the keys. ; _Is_Key_Pressed will return 0 if the key is not pressed, 1 if it is. Local $a_R = DllCall($vDLL, "short", "GetAsyncKeyState", "int", '0x' & $sHexKey) If @error Then Return SetError(@error, @extended, False) Return BitAND($a_R[0], 0x8000) <> 0 EndFunc ;==>_IsPressed ; Mit dieser Funktion wird nur abgefragt, ob z. B. die Tasten 'x', 'y' und 'z' gedrückt sind... nicht aber, ob auch noch andere Tasten gedrückt sind. Func _GetKeys() ; DOWN ARROW key UP ARROW key LEFT ARROW key RIGHT ARROW key ESC Local $iDown = _IsPressed('28', $g_hDLL), $iUp = _IsPressed('26', $g_hDLL), $iLeft = _IsPressed('25', $g_hDLL), $iRight = _IsPressed('27', $g_hDLL), $iExit = _IsPressed('1B', $g_hDLL) Switch True Case $iDown And $iLeft $g_ptz = 'downleft' Case $iDown And $iRight $g_ptz = 'downright' Case $iUp And $iLeft $g_ptz = 'upleft' Case $iUp And $iRight $g_ptz = 'upright' Case $iDown $g_ptz = 'down' Case $iUp $g_ptz = 'up' Case $iLeft $g_ptz = 'left' Case $iRight $g_ptz = 'right' Case $iExit $g_ptz = 'x' Case Else $g_ptz = '' EndSwitch EndFunc ;==>_GetKeys Func _Show_ptz() Local Static $sOld_Show_ptz If $g_sShow_ptz <> $sOld_Show_ptz Then $sOld_Show_ptz = $g_sShow_ptz GUICtrlSetData($g_idShow_ptz, $g_sShow_ptz) GUICtrlSetColor(-1, $g_sShow_ptz = 'losgelassen' ? 0x008CCC : 0x00BFFF) EndIf EndFunc ;==>_Show_ptz Func _Exit() DllClose($g_hDLL) EndFunc ;==>_Exit -
In der Hilfe zu _IsPressed steht: Falls diese Funktion wiederholt aufgerufen wird, sollte die Datei 'user32.dll' geöffnet werden und durch ein Handle übergeben werden.
Also besser so: _IsPressed(57, $vDll)
Ich habe dir dazu auch mal eine kleines Script erstellt...
Example
AutoIt
Alles anzeigen;-- TIME_STAMP 2018-01-13 06:43:08 #Region ;************ Includes ************ #Include <EditConstants.au3> #Include <StaticConstants.au3> #Include <Array.au3> #include <WinAPIRes.au3> #EndRegion ;************ Includes ************ OnAutoItExitRegister('_Exit') ;~ TCPStartup() ;~ Global $iSocket = TCPConnect($ipcam, "5002") Global $ptz, $ptzdownright = 'wa', $ptzdownleft = 'wd', $ptzupright = 'sa', $ptzupleft = 'sd', $ptzdown = 'w', $ptzup = 's', $ptzright = 'a', $ptzleft = 'd', $ptzstop = 'stop' _Example() Func _Example() Local $hGUI = GUICreate('Example', 420, 10 * 24) GUISetBkColor(0x2F6E70, $hGUI) GUICtrlCreateGroup('Gedrückte Tasten', 120, 10, 285, 7.5 * 24) Local $idInput = GUICtrlCreateInput("", 128, 28, 270, 6.5 * 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) Local $hInput = GUICtrlGetHandle($idInput) GUICtrlSetLimit(-1, 2, 0) GUICtrlSetFont(-1, 96) GUICtrlSetColor(-1, 0x5F9EA0) GUICtrlSetBkColor(-1, 0x008080) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup('Erlaubte Tasten', 10, 10, 95, 7.5 * 24) Local $idLabel = GUICtrlCreateLabel(' w ' & @CRLF & ' a ' & @CRLF & ' s ' & @CRLF & ' d ' & @CRLF & 'w + a ' & @CRLF & 'w + d ' & @CRLF & 's + a ' & @CRLF & 's + d ', 30, 30, 60, 6 * 24, BitOR($GUI_SS_DEFAULT_LABEL, $SS_LEFT)) GUICtrlSetFont(-1, 12, 900, 0, 'Courier New') GUICtrlSetColor(-1, 0x5F9EA0) GUICtrlCreateGroup("", -99, -99, 1, 1) Local $idLabel_ptz = GUICtrlCreateLabel('Beide Motoren laufen nicht', 10, 20 + 8 * 24, 400, 24) GUICtrlSetFont(-1, 11, 900, 0, 'Courier New') GUICtrlSetColor(-1, 0x5F9EA0) ControlFocus($hGUI, '', $idInput) GUISetState() Local $sOldptz = '-1', $sMotor_A, $sMotor_B, $iIndex, $aDirection = [['w', 'vorwärts'], ['s', 'rückwärts'], ['a', 'vorwärts'], ['d', 'rückwärts']] While GUIGetMsg() <> -3 _GetKeys() _WinAPI_HideCaret($hInput) Switch $ptz Case '' If $sOldptz <> $ptz Then $sOldptz = $ptz GUICtrlSetData($idInput, '') GUICtrlSetData($idLabel_ptz, 'Beide Motoren laufen nicht') ;~ TCPSend($iSocket, $ptzstop) EndIf Case Else If $sOldptz <> $ptz Then $sOldptz = $ptz GUICtrlSetData($idInput, $ptz) $iIndex = _ArraySearch($aDirection, StringLeft($ptz, 1), 0, 1) $sMotor_A = $iIndex = -1 ? 'nicht' : $aDirection[$iIndex][1] $iIndex = _ArraySearch($aDirection, StringRight($ptz, 1), 2, 3) $sMotor_B = $iIndex = -1 ? 'nicht' : $aDirection[$iIndex][1] GUICtrlSetData($idLabel_ptz, StringFormat('Motor A läuft %s Motor B läuft %s', $sMotor_A, $sMotor_B)) ;~ TCPSend($iSocket, $ptz) EndIf EndSwitch WEnd EndFunc Func _GetKeys() Local Static $w = Asc('W'), $s = Asc('S'), $a = Asc('A'), $d = Asc('D') Local $aKeyboardState, $iKeys = 0 $aKeyboardState = _WinAPI_GetKeyboardState() For $i = 0 To 255 If BitAND($aKeyboardState[$i], 0xF0) Then $iKeys += 1 EndIf Next Switch $iKeys Case 0 $ptz = '' ; keine Taste gedrückt Case 1 Switch True Case BitAND($aKeyboardState[$w], 0xF0) ; w gedrückt $ptz = $ptzdown Case BitAND($aKeyboardState[$s], 0xF0) ; s gedrückt $ptz = $ptzup Case BitAND($aKeyboardState[$a], 0xF0) ; a gedrückt $ptz = $ptzright Case BitAND($aKeyboardState[$d], 0xF0) ; d gedrückt $ptz = $ptzleft Case Else $ptz = '' ; ungültige Taste gedrückt EndSwitch Case 2 Switch True Case BitAND($aKeyboardState[$w], 0xF0) And BitAND($aKeyboardState[$a], 0xF0) ; wa gedrückt $ptz = $ptzdownright Case BitAND($aKeyboardState[$w], 0xF0) And BitAND($aKeyboardState[$d], 0xF0) ; wd gedrückt $ptz = $ptzdownleft Case BitAND($aKeyboardState[$s], 0xF0) And BitAND($aKeyboardState[$a], 0xF0) ; sa gedrückt $ptz = $ptzupright Case BitAND($aKeyboardState[$s], 0xF0) And BitAND($aKeyboardState[$d], 0xF0) ; sd gedrückt $ptz = $ptzupleft Case Else $ptz = '' ; ungültige Taste/n gedrückt EndSwitch Case Else $ptz = '' ; mehr als zwei Tasten gedrückt EndSwitch EndFunc Func _Exit() ;~ TCPSend($iSocket, $ptzstop) ;~ TCPCloseSocket($iSocket) ;~ TCPShutdown() EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: _WinAPI_GetKeyboardState ; Description ...: Returns the status of the 256 virtual keys ; Syntax.........: _WinAPI_GetKeyboardState($iFlag=0) ; Parameters ....: $iFlag - Return Type ; 0 Returns an array[256] ; 1 Returns a string ; Return values .: Success - Array[256] or String containing status of 256 virtual keys ; Failure - False ; Author ........: Eukalyptus ; Modified.......: ; Remarks .......: If the high-order bit is 1, the key is down; otherwise, it is up. ; If the key is a toggle key, for example CAPS LOCK, then the low-order bit is 1 ; when the key is toggled and is 0 if the key is untoggled ; Related .......: _IsPressed ; Link ..........; ; Example .......; ; =============================================================================================================================== Func _WinAPI_GetKeyboardState($iFlag = 0) Local $aDllRet, $lpKeyState = DllStructCreate("byte[256]") $aDllRet = DllCall("User32.dll", "int", "GetKeyboardState", "ptr", DllStructGetPtr($lpKeyState)) If @error Then Return SetError(@error, 0, 0) If $aDllRet[0] = 0 Then Return SetError(1, 0, 0) Else Switch $iFlag Case 0 Local $aReturn[256] For $i = 1 To 256 $aReturn[$i - 1] = DllStructGetData($lpKeyState, 1, $i) Next Return $aReturn Case Else Return DllStructGetData($lpKeyState, 1) EndSwitch EndIf EndFunc ;==>_WinAPI_GetKeyboardState -
Ja, Outlook ersetzt Tabs mit Leerzeichen.
Hier die Antwort, warum das so ist: Beim Versenden werden alle Tabulatorzeichen (Tabstoppzeichen) durch Lehrzeichen ersetzt.
Wie kann man es ändern?
Indem du nicht die Original-Funktion _INetMail aus den Includes benutzt.
In der Funktion _INetExplorerCapable musst du lediglich eine kleine Änderung vornehmen, dann sollte es funktionieren.
AutoIt
Alles anzeigen;~ #include <INet.au3> Func _INetMail($sMailTo, $sMailSubject, $sMailBody) Local $iPrev = Opt("ExpandEnvStrings", 1) Local $sVar, $sDflt = RegRead('HKCU\Software\Clients\Mail', "") If $sDflt = "Windows Live Mail" Then $sVar = RegRead('HKCR\WLMail.Url.Mailto\Shell\open\command', "") Else $sVar = RegRead('HKCR\mailto\shell\open\command', "") EndIf Local $iRet = Run(StringReplace($sVar, '%1', _INetExplorerCapable('mailto:' & $sMailTo & '?subject=' & $sMailSubject & '&body=' & $sMailBody))) ;~ Local $iRet = ConsoleWrite(StringReplace($sVar, '%1', _INetExplorerCapable('mailto:' & $sMailTo & '?subject=' & $sMailSubject & '&body=' & $sMailBody)) & @CRLF) Local $iError = @error, $iExtended = @extended Opt("ExpandEnvStrings", $iPrev) Return SetError($iError, $iExtended, $iRet) EndFunc ;==>_INetMail Func _INetExplorerCapable($sIEString) If StringLen($sIEString) <= 0 Then Return SetError(1, 0, '') Local $s_IEReturn Local $n_IEChar For $i_IECount = 1 To StringLen($sIEString) $n_IEChar = '0x' & Hex(Asc(StringMid($sIEString, $i_IECount, 1)), 2) ;~ If $n_IEChar < 0x21 Or $n_IEChar = 0x25 Or $n_IEChar = 0x2f Or $n_IEChar > 0x7f Then ; <-- hier werden die Zeichen gefiltert/konvertiert! If $n_IEChar <> 0x09 And $n_IEChar < 0x21 Or $n_IEChar = 0x25 Or $n_IEChar = 0x2f Or $n_IEChar > 0x7f Then ; <-- so werden TABS unverändert gesendet! $s_IEReturn = $s_IEReturn & '%' & StringRight($n_IEChar, 2) Else $s_IEReturn = $s_IEReturn & Chr($n_IEChar) EndIf Next Return $s_IEReturn EndFunc ;==>_INetExplorerCapable -
_WinAPI_FrameRect
F = Falsch, R = Richtig, K = Kommentar
F: $tRECT eine $tagRECT-Struktur oder einen Zeige auf diese, welche die logischen Koordinaten der oberen linken und unteren rechten Ecke des Rechtecks enthält
R: $tRECT eine $tagRECT-Struktur oder ein Zeiger (Pointer) auf diese, welche die logischen Koordinaten der oberen linken und unteren rechten Ecke des Rechtecks enthält
F: Verwandte Funktionen
R: Siehe auch|In Beziehung stehend
K: $tagRECT ist keine Funktion!
-
Du schreibst: "in den UDFS (includes) selbst einsehen"
Wie kann ich es implementieren?
Wenn du SciTE4AutoIt3 als Editor verwendest, ist es sehr einfach.
Steht das Caret (Textcursor) direkt vor, nach, oder in einem Funktionsnamen, kannst du Strg + j drücken - das Include, in dem sich diese Funktion befindet, wird in einem neuen Tab geladen und das Caret direkt vor den Funktionsnamen gesetzt - in deinem Fall also _INetMail und _INetExplorerCapable. Das funktioniert also nur bei Funktionen, die in mit Include geladen werden.
Steht das Caret in einer Zeile, in der das "Schlüsselwort" #Include steht, kannst du Alt + i drücken - das Include, wird in einem neuen Tab geladen und das Caret an den Anfang des Scriptes gesetzt.
In der AutoIt-Hilfe findest du im Anhang eine Tabelle mit dem ASCII-Zeichensatz.
-
_WinAPI_MsgBox, _WinAPI_InvalidateRect, _WinAPI_UpdateWindow, _WinAPI_ShowWindow, _WinAPI_GetWindowWidth, _WinAPI_CreateWindowEx, _WinAPI_CreateSolidBrush,_WinAPI_GetWindowText, _WinAPI_FillRect
Diese Examples wurde alle mit der Codepage OEM 866 erstellt... richtig wäre aber 1252 (ANSI), oder besser noch 65001 (UTF-8).
In Zeile 2 steht jeweils der Name der Funktion... der aber bei allen bis auf zwei falsch ist.
CodeRow|Name |Bytes|Twins |Crc32 |Titel in Zeile 2 |OK? |Korrigiert [0]|_WinAPI_MsgBox.au3 | 3883|0, 7 | 0xA5216147|_WinAPI_CreateWindowEx.au3 |NEIN|JA [1]|_WinAPI_InvalidateRect.au3 | 3965|1, 2, 3, 4, 8| 0xCB2589E5|_WinAPI_CreateSolidBrush.au3 |NEIN|JA [2]|_WinAPI_UpdateWindow.au3 | 3965| | 0xCB2589E5|_WinAPI_CreateSolidBrush.au3 |NEIN|JA [3]|_WinAPI_ShowWindow.au3 | 3965| | 0xCB2589E5|_WinAPI_CreateSolidBrush.au3 |NEIN|JA [4]|_WinAPI_GetWindowWidth.au3 | 3965| | 0xCB2589E5|_WinAPI_CreateSolidBrush.au3 |NEIN|JA [5]|_WinAPI_CreateWindowEx.au3 | 3881| | 0x0595D7D5|_WinAPI_CreateWindowEx.au3 |JA |JA [6]|_WinAPI_CreateSolidBrush.au3| 3963| | 0x5BA7A103|_WinAPI_CreateSolidBrush.au3 |JA |JA [7]|_WinAPI_GetWindowText.au3 | 3883| | 0xA5216147|_WinAPI_CreateWindowEx.au3 |NEIN|JA [8]|_WinAPI_FillRect.au3 | 3965| | 0xCB2589E5|_WinAPI_CreateSolidBrush.au3 |NEIN|JADie Files im Anhang sind mit UTF-8 gespeichert. Zudem habe ich den Code entschlackt und noch ein wenig übersichtlicher formatiert.
Mach damit was du willst...

-
Ich stele hier noch den Code rein, wie ich mein Objekt auf ein "richtiges" Fenster überprüfe.
(Wer weis, ob das einmal jemand benötigt)
In deinem Code ist die Variable $g_tStruct nicht deklariert., weshalb das Script mit einer Fehlermeldung abbricht. Damit dein Code funktioniert, muss die DllStruct aber auch die aktuellen Maus-Koordinaten enthalten, die du auch an keiner Stelle setzt. Zudem liefert dein Code nicht immer nur ein Window-Handle... welches davon ist das richtige, wenn es mehrere sind?
Beispiel: SciTE
$hWnd = 0x00AE0D8C $sWinTitle = Source
$hWnd = 0x00611584 $sWinTitle = M:\GetWindowInformation.au3 - SciTE [2 von 2]
Das geht aber auch kürzer...
AutoIt
Alles anzeigen;-- TIME_STAMP 2018-01-10 16:43:22 v 0.1 #Region ;************ Includes ************ #Include <WindowsConstants.au3> #include <WinAPI.au3> #EndRegion ;************ Includes ************ Global $g_tStruct = DllStructCreate($tagPOINT) ; Erstellt eine Struktur, welche den zu prüfenden Punkt definiert _GetWindowInformation() Func _GetWindowInformation() ;Get the information of the current window Position() ; Aktualisiert die X und Y Elemente mit den X und Y Co-Koordinaten der Maus Local $hWnd = _WinAPI_WindowFromPoint($g_tStruct) Local $hParent = _WinAPI_GetAncestor($hWnd, $GA_PARENT) Local $hRoot = _WinAPI_GetAncestor($hWnd, $GA_ROOT) Local $hRotOwner = _WinAPI_GetAncestor($hWnd, $GA_ROOTOWNER) #cs Das hat deine "reparierte" Funktion geliefert... $hWnd = 0x00AE0D8C $sWinTitle = Source $hWnd = 0x00611584 $sWinTitle = M:\GetWindowInformation.au3 - SciTE [2 von 2] #ce ConsoleWrite('==========================================================================================================================================================' & @CRLF) ConsoleWrite(StringFormat('+ $hParent = %-18s ClassName = %-32s WinTitle = %s\r', $hParent, _GetClassName($hParent), WinGetTitle($hParent))) ; Dein 1. Treffer: 0x00AE0D8C ConsoleWrite(StringFormat('> $hRoot = %-18s ClassName = %-32s WinTitle = %s\r', $hRoot, _GetClassName($hRoot), WinGetTitle($hRoot))) ; Dein 2. Treffer: 0x00611584 ConsoleWrite(StringFormat('- $hRotOwner = %-18s ClassName = %-32s WinTitle = %s\r', $hRotOwner, _GetClassName($hRotOwner), WinGetTitle($hRotOwner))) ; Dein 2. Treffer: 0x00611584 ConsoleWrite('==========================================================================================================================================================' & @CRLF) EndFunc ;==>_GetWindowInformation Func _GetClassName($hWnd) Return _WinAPI_GetClassName($hWnd) EndFunc Func Position() DllStructSetData($g_tStruct, "x", MouseGetPos(0)) DllStructSetData($g_tStruct, "y", MouseGetPos(1)) EndFunc ;==>Position -
Woran kann es liegen, dass ich Tabulatoren bei der automatisierten Erstellung im Mail vermisse?
Weil sie ausgefiltert werden...
Ich habe die Funktionen _INetMail() und _INetExplorerCapable(), die von _INetMail() aufgerufen wird, mal eine wenig umgestrickt und Run() durch ConsoleWrite() ersetzt... so kannst du sehen, was gesendet wird...
AutoIt
Alles anzeigen;-- TIME_STAMP 2018-01-10 15:24:20 v 0.1 Local $sMailTo = 'Merkel@Germany.de' Local $sMailSubject = 'Hey Merkel, du Ferkel - deine Zukunft musst du nun ohne mich gestalten!' Local $sMailBody = 'Habe im Lotto gewonnen... bin weg... für immer! ;-)' _INetMail($sMailTo, $sMailSubject, $sMailBody) Func _INetMail($sMailTo, $sMailSubject, $sMailBody) Local $iPrev = Opt("ExpandEnvStrings", 1) Local $sVar, $sDflt = RegRead('HKCU\Software\Clients\Mail', "") If $sDflt = "Windows Live Mail" Then $sVar = RegRead('HKCR\WLMail.Url.Mailto\Shell\open\command', "") Else $sVar = RegRead('HKCR\mailto\shell\open\command', "") EndIf ;~ Local $iRet = Run(StringReplace($sVar, '%1', _INetExplorerCapable('mailto:' & $sMailTo & '?subject=' & $sMailSubject & '&body=' & $sMailBody))) Local $iRet = ConsoleWrite(StringReplace($sVar, '%1', _INetExplorerCapable('mailto:' & $sMailTo & '?subject=' & $sMailSubject & '&body=' & $sMailBody)) & @CRLF) Local $iError = @error, $iExtended = @extended Opt("ExpandEnvStrings", $iPrev) Return SetError($iError, $iExtended, $iRet) EndFunc ;==>_INetMail Func _INetExplorerCapable($sIEString) If StringLen($sIEString) <= 0 Then Return SetError(1, 0, '') Local $s_IEReturn Local $n_IEChar For $i_IECount = 1 To StringLen($sIEString) $n_IEChar = '0x' & Hex(Asc(StringMid($sIEString, $i_IECount, 1)), 2) If $n_IEChar < 0x21 Or $n_IEChar = 0x25 Or $n_IEChar = 0x2f Or $n_IEChar > 0x7f Then ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< hier werden die Zeichen gefiltert! $s_IEReturn = $s_IEReturn & '%' & StringRight($n_IEChar, 2) Else $s_IEReturn = $s_IEReturn & Chr($n_IEChar) EndIf Next Return $s_IEReturn EndFunc ;==>_INetExplorerCapable -
-
Hier noch ein paar Funktionen, die hilfreich sein könnten, die gewünschten Fenster zu finden...
_WinAPI_GetAncestor()
_WinAPI_GetClassName() ; ein Button ist z. B. "Static"
_WinAPI_GetWindowLong() ; $GWL_STYLE, $GWL_EXSTYLE
_WinAPI_IsChild()
_WinAPI_GetTopWindow()
_WinAPI_EnumWindowsTop()
_WinAPI_EnumWindows()_WinAPI_EnumChildWindows()
_WinAPI_EnumProcessWindows()
und noch viele mehr... im Anhang noch ein Script mit Demo, dass dir sicher auch nützliche Infos liefert...
-
Mir ist gerade aufgefallen, dass bei Farben denen eine Variable zugewiesen ist (z. B. $COLOR_RED) es nicht funktioniert.
... , dass bei Variablen, denen eine Farbe zugewiesen ist...

Dazu müsste der Wert der Variable ermittelt werden... und das könnte evtl. schwierig werden, wenn das Script nicht läuft.

-
Habe dein Script geändert... die Funktion _Scrollbars_WM_TOUCH... teste es und falls es immer noch irgendwo hakt, dann poste bitte den Inhalt von _Memo().
Jetzt ist zusätzlich zum noch bestehenden Problem nochmal ein altes Problem aufgetaucht i.S. WM_TOUCH: ...
Schaue dir mal die Funktion GUIGetCursorInfo() an... ich denke die suchst du.
Beim Tablet-Scrollen aufwärts (Finger geht nach oben) - also wenn korrekt gescrollt wird - ist $iDirectionY immer 1. In die andere Richtung - wenn das Fenster gar nicht gescrollt wird - ist $iDirectionY immer 0.
Es wird immer die richtige y-Koordinate $iY ausgegeben.
Weil du die beiden Variablen in deiner ...Taster.au3 in Zeile 245 und 268 explizit auf 1 setzt...
ACHTUNG: Hier ist in der ersten Zeile ein > statt einem =
Ja, guter Mann... da muss auch ein > hin!

-
Code
#36 Show Func Description command.name.36.*=Show Func Description command.36.*=dofile f:\AutoIt\AutoIt3_LuaScripts\ShowFuncDescript.lua command.mode.36.*=subsystem:lua # Ctrl+Alt+F funktioniert nicht? - obwohl ich nirgends sehen kann, dass die Kombi belegt ist! #~ command.shortcut.36.*=Ctrl+Alt+F # Ctrl+Alt+W geht! command.shortcut.36.*=Ctrl+Alt+W -
Wenn in der ersten Zeile des Scripts ein TimeStamp steht und die Funktionsdeklaration mit einer Leerzeile getrennt, darunter steht, wird der TimeStamp mit ausgegeben, wenn die Datei mit UTF-8 (ohne BOM) gespeichert wurde... mit BOM nicht... und die Leerzeile zwischen TimeStamp und Funktionsdeklaration wird verschluckt.
UTF-8 (ohne BOM)
;-- TIME_STAMP 2017-08-13 09:18:44
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetGateway
Ausgabe:
;-- TIME_STAMP 2017-08-13 09:18:44
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetGatewayUTF-8 (mit BOM)
;-- TIME_STAMP 2017-09-03 20:35:21 v 1.0
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetLocalIP
Ausgabe:
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetLocalIP
Hm, bei mir funktioniert Show Func Description nicht mit Ctrl+Alt+F... obwohl es im Extras-Menü angezeigt wird... wenn ich die Funktion aus dem Menü auswähle, dann geht es.
-
Es gibt pro Monat 5-10 x folgende Angaben:
437 X 9.13 €-Cent = 39,8981 €
251 X 9.13 €-Cent = 22,9163 €
394 X 4.50 €-Cent = 17,7300 €
39,8981 € + 22,9163 €+ 17,73 € = 80,5444 €
Std. = h, Minute = n, Sekunde = s
17,68 € * 100 = 1768 €-Cent
1 h = 60 n = 3600 s
1768 €-Cent / 3600 s = 0,4911111111111111 €-Cent / 1 s
9,13 €-Cent = ? s
9,13 €-Cent / 0,4911111111111111 €-Cent = 18,59049773755656 s
437 * 18,59049773755656 s = 8124,047511312217 s = 135,4007918552036 n = 2,256679864253394 h
0,256679864253394 h * 60 = 15,40079185520364 n
0,400791855203640 n * 60 = 24,04751131221840 s
Ergebnis: 437 X 9.13 €-Cent = 39,8981 € = 02h:15n:24s
===================================
4,50 €-Cent = ? s
4,50 €-Cent / 0,4911111111111111 €-Cent = 9,16289592760181 s
394 * 9,16289592760181 s = 3610,180995475113 s = 60,16968325791855 n = 1,002828054298643 h
0,002828054298643 h * 60 = 0,16968325791858 n
0,169683257918580 n * 60 = 10,18099547511480 s
Ergebnis: 394 X 4.50 €-Cent = 17,7300 € = 01h:00n:10s
===================================