1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • Skript erstellt keine neuen Dateien wenn es als Autorun ausgeführt wird(genügend Rechte sind vorhanden)

    • BugFix
    • 23. August 2017 um 15:16
    Zitat von BehindSouls

    normalerweise deklariere ich den LOG Pfad immer am anfang

    Spricht doch eindeutig für Opt('MustDeclareVars', 1) :rolleyes:
    Kann ich nur empfehlen, vermeidet gerade in großen Skripten Konfusionen.

  • Ping überwachen

    • BugFix
    • 23. August 2017 um 09:31
    Zitat von nwmbd

    Das Programm sollte zusätzlich Prozesse überwachen. (zB firefox.de) Damit diese Einträge niemand ändern kann, ist es hier nicht ratsam dies in einer Datei abzulegen, sollte wohl im Programm hinterlegt werden.

    Sowas fix zu programmieren ist eigentlich unschön. Wie wäre es denn, alle gewünschten Infos als Parameter zu übergeben.
    Aufruf könnte dann so erfolgen:
    "mein_programm.exe 'proc=firefox.exe,notepad.exe,calc.exe;ping=google.de,autoit.de'"

  • "Support Mail GUI"

    • BugFix
    • 22. August 2017 um 10:01

    Das kannst du selbst: Startpost - Thema bearbeiten - als Erledigt markieren (hab's mal für dich getan)

  • JSON-UDF

    • BugFix
    • 21. August 2017 um 22:32

    Gefällt mir gut :thumbup:
    Seitdem ich angefangen hatte mich intensiver mit dem Editor Sublime Text zu beschäftigen, hatte ich auch mit JSON-Dateien zu tun, die die Basis für viele Einstellungen und PlugIns dieses Editors darstellen. Und das ist wirklich eine feine Sache. Ich hatte schon damit geliebäugelt, verstärkt JSON für meine AutoIt-Skripte zu verwenden, aber eine vernünftige Schnittstelle fehlte.
    Soweit ich das bisher sehe, könnte diese UDF die Lücke bestens ausfüllen.
    Danke @AspirinJunkie

  • Zeitstempel setzten beim Öffen & schliessen eines Programmes

    • BugFix
    • 18. August 2017 um 11:58

    Dann erstelle für jeden User eine Log-Datei:

    AutoIt
    OnAutoItExitRegister("_WriteLog")
    
    
    Global $sLogFile = @ScriptDir & '\Time\' & @UserName & '.log'
    Global $iProcTime = ''
    Global $sProcess = 'notepad.exe'
    
    
    AdlibRegister('_AddTime', 1000)
    ;HotKeySet('{ESC}', '_Exit')
    While Sleep(1000)
    WEnd
    
    
    ;Func _Exit()
    ;	If ProcessExists('firefox.exe') Then Return
    ;	IniWrite($sIniFile,'Protocol', 'Time', $iProcTime)
    ;	Exit
    ;EndFunc
    
    
    Func _AddTime()
    	If ProcessExists($sProcess) Then
    		$iProcTime += 1
    ;~ 		ToolTip(_FormatTime($iProcTime))
    	EndIf
    EndFunc
    
    
    Func _WriteLog()
    	Local $fH = FileOpen($sLogFile, 1+8)
    	FileWrite($fH, StringFormat('%s.$s.%s %s: %s%s', @MDAY, @MON, @YEAR, $sProcess, _FormatTime($iProcTime), @CRLF))
    	FileClose($fH)
    EndFunc
    
    
    Func _FormatTime($iSec)
    	Local $iHour, $iMin
    	$iHour = Int($iSec / 3600)
    	$iSec = Mod($iSec, 3600)
    	$iMin = Int($iSec / 60)
    	$iSec = Mod($iSec, 60)
    	Return StringFormat('%02i:%02i:%02i', $iHour, $iMin, $iSec)
    EndFunc   ;==>_FormatTime
    Alles anzeigen
  • DllStructGetData durch Punkt-Notation ersetzen ein Risiko?

    • BugFix
    • 17. August 2017 um 21:21
    Zitat von GtaSpider

    und wenn du den Index aus einer Variable ausließt musst du zwei Klammern darum setzten (ist wohl ein Bug)

    Ich halte das nicht für einen Bug.
    Das ist vergleichbar mit jeder anderen Funktion aus AutoIt, die ein Array als Ergebnis liefert. Möchte man dort in einem Atemzug auf einen Wert zugreifen muß man vor dem Zugriff den Aufruf auch extra einklammern und dann den Indexaufruf anhängen: Wert = (Func_liefert_Array)[Index].
    Das ist zwar syntaktisch nicht identisch, ich könnte mir aber vorstellen, dass dieselbe Logik dahinter steckt.

  • SciTE - "SciTE Jump" - AutoStart, AutoArrange

    • BugFix
    • 29. Juli 2017 um 15:06

    Hi,
    wenn ihr guinness "SciTE Jump" benutzt, stört euch vielleicht auch, dass das Fenster als eigenständige Anwendung erscheint und nicht an SciTE andockt.
    Ich habe jetzt eine kleine Anwendung geschrieben, die überwacht ob SciTE mit/ohne "SciTE Jump" läuft und entsprechend die Fenster nebeneinander anordnet.
    "SciTE Jump" kann links oder rechts neben SciTE angeordnet werden, die gewünschte Fensterbreite ist voreinstellbar, ebenso kann gewählt werden, dass "SciTE Jump" automatisch bei Start von SciTE mitgestartet wird.
    Geregelt wird das praktischerweise über Einträge in "SciTEUser.properties"

    #~ Settings für "SciTE Jump"
    #~ Automatisch mit SciTE starten 0/1 (ohne Angabe: 0)
    scite.jump.autostart=1
    #~ Breite des "SciTE Jump" Fensters (ohne Angabe: 360)
    scite.jump.width=
    #~ Position des "SciTE Jump" Fensters (left/right, ohne Angabe: right)
    scite.jump.pos=

    Das Skript kompilieren und über Windows-Autostart mit ausführen.
    Viel Spaß damit.

    ArrangeJump.au3
    AutoIt
    ;-- TIME_STAMP   2017-07-29 14:42:50   v 0.1
    
    
    #cs   Properties           Values
    scite.jump.autostart=      no value == 0 (Default) /or 1
    scite.jump.width=          no value == 360 (Default) /or your value
    scite.jump.pos=            no value == right (Default) /or left
    #ce
    
    
    Opt("TrayIconHide", 1)
    
    
    
    
    Global $SciteDefaultHome = StringRegExpReplace(RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\DefaultIcon', ''), '(.+)(Icons.+$)', '$1SciTE')
    
    
    Global $iTBLeft, $iTBTop, $iTBRight, $iTBBottom, $aTB = _GetTaskbarPosition()
    Global $iTBWidth = 0, $iTBHeight = 0, $iLeft = 0, $iTop = 0
    $iTBLeft   = $aTB[0]
    $iTBTop    = $aTB[1]
    $iTBRight  = $aTB[2]
    $iTBBottom = $aTB[3]
    
    
    If $iTBLeft = 0 And $iTBTop = 0 Then
    	If $iTBRight < $iTBBottom Then
    		$iTBWidth = $iTBRight
    		$iLeft = $iTBWidth
    	Else
    		$iTBHeight = $iTBBottom
    		$iTop = $iTBHeight
    	EndIf
    ElseIf $iTBTop <> 0 Then
    	$iTBHeight = $iTBBottom - $iTBTop
    Else
    	$iTBWidth = $iTBRight - $iTBLeft
    EndIf
    
    
    Global $iWidth = @DesktopWidth - $iTBWidth, $iHeight = @DesktopHeight - $iTBHeight
    Global $hWndSciTE, $aJump, $hWndJump, $bSciTERuns = False, $bJumpRuns = False, $bArranged = False
    Global $iSciTEState = 0 ; 0=closed/ 1=currently started/ 2=running
    
    
    
    
    While True
    	; Fenster Handle SciTE
    	$hWndSciTE = WinGetHandle('[CLASS:SciTEWindow]')
    	If @error Then $hWndSciTE = 0
    	$bSciTERuns = IsHWnd($hWndSciTE) ? True : False
    
    
    	; Bedingung für Autostart Jump
    	If $iSciTEState = 1 And $bSciTERuns Then $iSciTEState = 2    ; SciTE läuft
    	If $iSciTEState = 0 And $bSciTERuns Then $iSciTEState = 1    ; SciTE wurde soeben gestartet
    	If Not $bSciTERuns Then $iSciTEState = 0                     ; SciTE ist geschlossen
    	If (_GetProperty('scite.jump.autostart', 0) = '1' ? True : False) _
    		And $iSciTEState = 1 Then _
    		ShellExecute($SciteDefaultHome & '\SciTE Jump\SciTE Jump.exe', '', $SciteDefaultHome)
    
    
    	; Fenster Handle Jump
    	$aJump = _GetWindowsByProcess('SciTE Jump.exe')
    	If Not @error Then
    		For $i = 1 To $aJump[0][0]
    			If $aJump[$i][0] = 'SciTE Jump' Then
    				$hWndJump = $aJump[$i][1]
    				ExitLoop
    			EndIf
    		Next
    	Else
    		$hWndJump = 0
    	EndIf
    	$bJumpRuns = IsHWnd($hWndJump) ? True : False
    
    
    	; Fenster anordnen
    	If (Not $bArranged) And $bSciTERuns And $bJumpRuns Then      ; beides offen - noch nicht angeordnet
    		_MoveWindows(2)                                          ; Fenster anordnen
    		$bArranged = True                                        ; Variable für angeordnet setzen
    	ElseIf $bArranged And $bSciTERuns And (Not $bJumpRuns) Then  ; Jump wurde geschlossen, $bArranged auf False
    		_MoveWindows(1)                                          ; SciTE wieder auf FullScreen setzen
    		$bArranged = False                                       ; Variable für nicht angeordnet setzen
    	EndIf
    
    
    	Sleep(500)
    WEnd
    
    
    
    
    Func _MoveWindows($iFlag)
    	Local $iWidthJump = _GetProperty('scite.jump.width', 360)
    	Local $sPosJump = _GetProperty('scite.jump.pos', 'right')
    	Switch $iFlag
    		Case 1
    			; SciTE wieder auf Fullscreen
    			WinMove($hWndSciTE, '', $iLeft, $iTop, $iWidth, $iHeight)
    		Case 2
    			; Jump auf Breite aus Proprties setzen und neben SciTE an Position aus Proprties setzen
    			If $sPosJump = 'left' Then
    				WinMove($hWndJump, '', $iLeft, $iTop, $iWidthJump, $iHeight)
    				WinMove($hWndSciTE, '', $iLeft+$iWidthJump, $iTop, $iWidth-$iWidthJump, $iHeight)
    			Else
    				WinMove($hWndSciTE, '', $iLeft, $iTop, $iWidth-$iWidthJump, $iHeight)
    				WinMove($hWndJump, '', $iLeft+$iWidth-$iWidthJump, $iTop, $iWidthJump, $iHeight)
    			EndIf
    	EndSwitch
    EndFunc  ;==>_MoveWindows
    
    
    
    
    Func _GetTaskbarPosition()
        Local $tRect = DllStructCreate("long;long;long;long"), $hWnd, $ret
        $ret = DllCall("user32.dll", 'long', "FindWindow", 'str', "Shell_traywnd", 'str', "")
        $hWnd = $ret[0]
        DllCall("User32.dll", "int", "GetWindowRect", "hwnd", $hWnd, "ptr", DllStructGetPtr($tRect))
    	Local $aRet[4] = [DllStructGetData($tRect, 1),DllStructGetData($tRect, 2), _
    	                  DllStructGetData($tRect, 3),DllStructGetData($tRect, 4)]
    	Return $aRet
    EndFunc  ;==>_GetTaskbarPosition
    
    
    
    
    Func _GetProperty($sProperty, $sDefault='')
    	Local $sPathAU3Prop = StringTrimRight(@AutoItExe, 11) & "SciTE\properties\au3.properties" ; C:\Program Files (x86)\AutoIt3\SciTE\properties\au3.properties
    	Local $sPathUserProp = @LocalAppDataDir & "\AutoIt v3\SciTE\SciTEUser.properties"         ; C:\Users\[USER]\AppData\Local\AutoIt v3\SciTE\SciTEUser.properties
    	Local $sRead = '', $sValueReturn = $sDefault, $aMatch
    	Local $sPattern = $sProperty & "=([^\r\n]+)"
    	If FileExists($sPathUserProp) Then $sRead = FileRead($sPathUserProp)
    	$aMatch = StringRegExp($sRead, $sPattern, 1)
    	If @error Then
    		If FileExists($sPathAU3Prop) Then $sRead = FileRead($sPathAU3Prop)
    		$aMatch = StringRegExp($sRead, $sPattern, 1)
    		If Not @error Then $sValueReturn = $aMatch[0]
    	Else
    		$sValueReturn = $aMatch[0]
    	EndIf
    	Return $sValueReturn
    EndFunc  ;==>_GetProperty
    
    
    
    
    Func _GetWindowsByProcess($vProcess) ; Name or PID
    	Local $aWnd = WinList(), $aRet[1][2], $aProc
    	If Not ProcessExists($vProcess) Then Return SetError(2,0,$aRet)
    	If Not IsNumber($vProcess) Then
    		$aProc = ProcessList($vProcess)
    		If Not @error Then
    			If $aProc[0][0] > 0 Then $vProcess = $aProc[1][1]
    		EndIf
    	EndIf
    	For $i = 1 To $aWnd[0][0]
    		If WinGetProcess($aWnd[$i][0]) = $vProcess Then
    			If BitAND(WinGetState($aWnd[$i][1]), 2) Then
    				$aRet[0][0] += 1
    				ReDim $aRet[$aRet[0][0] + 1][2]
    				$aRet[$aRet[0][0]][0] = $aWnd[$i][0]
    				$aRet[$aRet[0][0]][1] = $aWnd[$i][1]
    			EndIf
    		EndIf
    	Next
    	If $aRet[0][0] = 0 Then Return SetError(1,0,$aRet)
    	Return $aRet
    EndFunc  ;==>_GetWindowsByProcess
    Alles anzeigen

    Dateien

    ArrangeJump.au3 5,59 kB – 186 Downloads
  • Über Script Maustastendruck senden

    • BugFix
    • 28. Juli 2017 um 10:24

    Ich vermute, die relevante Dll ist die HIDComm.dll.
    Im Moment habe ich nicht die Zeit das tiefer zu ergründen, aber falls jemand anders nachsehen will, hier mal die Funktionsliste der Dll

    Spoiler anzeigen
    Code
    File: HIDComm.dll
    
    
    Function Name                                                                                                                       Address     Relative Address Ordinal
    public: __thiscall CHIDComm::CHIDComm(class CHIDComm const &)                                                                       0x10001020  0x00001020       1 (0x1)
    public: __thiscall CHIDComm::CHIDComm(void)                                                                                         0x10001130  0x00001130       2 (0x2)
    public: __thiscall CHIDCommSTD::CHIDCommSTD(class CHIDCommSTD const &)                                                              0x10001730  0x00001730       3 (0x3)
    public: __thiscall CHIDCommSTD::CHIDCommSTD(void)                                                                                   0x100018a0  0x000018a0       4 (0x4)
    public: virtual __thiscall CHIDComm::~CHIDComm(void)                                                                                0x10001170  0x00001170       5 (0x5)
    public: virtual __thiscall CHIDCommSTD::~CHIDCommSTD(void)                                                                          0x10001900  0x00001900       6 (0x6)
    public: class CHIDComm & __thiscall CHIDComm::operator=(class CHIDComm const &)                                                     0x10001060  0x00001060       7 (0x7)
    public: class CHIDCommSTD & __thiscall CHIDCommSTD::operator=(class CHIDCommSTD const &)                                            0x100017d0  0x000017d0       8 (0x8)
    const CHIDComm::`vftable'                                                                                                           0x10003144  0x00003144       9 (0x9)
    const CHIDCommSTD::`vftable'                                                                                                        0x10003168  0x00003168       10 (0xa)
    public: virtual long __thiscall CHIDComm::Close(void)                                                                               0x10001330  0x00001330       11 (0xb)
    public: virtual long __thiscall CHIDCommSTD::Close(void)                                                                            0x10001ab0  0x00001ab0       12 (0xc)
    public: void __thiscall CHIDComm::GetDevicePath(wchar_t *)                                                                          0x10001710  0x00001710       13 (0xd)
    public: virtual bool __thiscall CHIDComm::GetHIDAttCap(struct CHIDComm::_HID_ATTRIBUTES_CAPABILITES *)                              0x10001660  0x00001660       14 (0xe)
    public: virtual bool __thiscall CHIDComm::GetHIDAttCap(wchar_t const *,struct CHIDComm::_HID_ATTRIBUTES_CAPABILITES *)              0x10001560  0x00001560       15 (0xf)
    public: unsigned long __thiscall CHIDComm::GetInReportLength(void)                                                                  0x10001680  0x00001680       16 (0x10)
    public: unsigned long __thiscall CHIDComm::GetOutReportLength(void)                                                                 0x100016a0  0x000016a0       17 (0x11)
    public: bool __thiscall CHIDComm::IsOpen(void)const                                                                                 0x10001010  0x00001010       18 (0x12)
    public: virtual long __thiscall CHIDComm::MakeHIDReport(void const *,unsigned int,struct CHIDComm::_HID_REPORT *,unsigned char)     0x100016c0  0x000016c0       19 (0x13)
    public: virtual bool __thiscall CHIDCommSTD::OnData(unsigned char *,unsigned long)                                                  0x10001b10  0x00001b10       20 (0x14)
    public: virtual long __thiscall CHIDComm::Open(wchar_t const *)                                                                     0x100011b0  0x000011b0       21 (0x15)
    public: virtual long __thiscall CHIDCommSTD::Open(wchar_t const *)                                                                  0x10001a20  0x00001a20       22 (0x16)
    public: virtual long __thiscall CHIDComm::Read(void *,unsigned int,unsigned long *,struct _OVERLAPPED *,unsigned long)              0x10001470  0x00001470       23 (0x17)
    public: virtual long __thiscall CHIDCommSTD::Read(void *,unsigned int,unsigned long *,struct _OVERLAPPED *,unsigned long)           0x10001b70  0x00001b70       24 (0x18)
    protected: static unsigned long __stdcall CHIDCommSTD::ThreadProc(void *)                                                           0x10001960  0x00001960       25 (0x19)
    protected: virtual unsigned long __thiscall CHIDCommSTD::ThreadProc(void)                                                           0x10001970  0x00001970       26 (0x1a)
    public: virtual long __thiscall CHIDComm::Write(void const *,unsigned int,unsigned long *,struct _OVERLAPPED *,unsigned long)       0x10001370  0x00001370       27 (0x1b)
    public: virtual long __thiscall CHIDCommSTD::Write(void const *,unsigned int,unsigned long *,struct _OVERLAPPED *,unsigned long)    0x10001b20  0x00001b20       28 (0x1c)
    Alles anzeigen


    Die Kenntnis der Funktionen und Parametertypen allein reicht aber leider nicht, man muss ja wissen, welche Werte erforderlich sind und in welchem Zusammenhang die Funktionsaufrufe zum von dir gewünschten Ergebnis führen. Deshalb wäre eine Dokumentation nützlich. Vielleicht kannst du die beim Hersteller anfragen?

  • Über Script Maustastendruck senden

    • BugFix
    • 28. Juli 2017 um 08:41
    Zitat von Sascha123456

    (zb rechtsklick oder Taste 11 der maus usw...die Maus zuhause hat 15 Tasten)

    Ich gehe mal davon aus, dass für diese Maus extra Treiber installiert wurden.
    Du müsstest also direkt die Treiber-Dll aufrufen mit der entsprechenden Funktion für die gewünschte Maustaste. Ist machbar, wenn du eine Doku zur Dll auftreiben kannst - erfahrungsgemäß ist das aber leider sehr unwahrscheinlich.
    Schau aber zumindest mal nach, welche Dll das ist und google fleißig, eventuell hast du ja doch Glück.

  • Genial einfaches Tool zur Web Recherche - Smartclip

    • BugFix
    • 25. Juli 2017 um 09:53

    @Tuxedo:
    Schau dir mal mein SciTE-Plugin für TimeStamp/Versionsverwaltung an.

  • Skript direkt mit der Beta Version von SciTE öffnen

    • BugFix
    • 23. Juli 2017 um 10:54
    Zitat von autoiter

    Wird also bei dir die SciTE-Version aus dem Beta Ordner geöffnet?

    In den Beta-Ordner von AutoIt gehört keine separate SciTE-Installation! Es gibt für Stable und Beta nur eine SciTE-Installation (im Pfad AutoIt3).
    Da liegt dann sicher dein Problem. Du hast ein SciTE zu viel.

  • Skript direkt mit der Beta Version von SciTE öffnen

    • BugFix
    • 23. Juli 2017 um 10:17

    Du schmeißt da was durcheinander.
    Es gibt keine SciTE-Beta.
    Was du meinst ist die AutoIt-Beta und entsprechend aus SciTE heraus:
    Run-Stable F5
    Run-Beta Alt+F5

    Das funktioniert natürlich nur, wenn du auch die Beta ordentlich installiert hast. Vermutlich ist da bei dir was schief gelaufen. Einfach nochmal deinstallieren und neu installieren.

  • Genial einfaches Tool zur Web Recherche - Smartclip

    • BugFix
    • 21. Juli 2017 um 09:22

    Der Grundgedanke zum Skript ist eigentlich die Verkörperung von AutoIt --> Automatisiere Es!
    Die funktionelle Umsetzung ist soweit dem Ziel entsprechend.
    Es wurde ja schon Einiges gesagt (Notation, Struktur etc.), da möchte ich nicht weiter drauf eingehen.
    Ich habe der Einfachheit halber im Skript meine Anmerkungen
    ; [BF]
    ; Anmerkung
    ;[/BF]
    eingefügt.

    Spoiler anzeigen
    AutoIt
    If _Singleton("Smartclip", 1) = 0 Then
    	MsgBox(4144, "Warnung", "Script wird beendet da schon eine" & @CRLF & "Instanz davon aktiv ist" & @CRLF & "Erkennbar am grünen Kreuz im Systemtray")
    	Exit
    EndIf
    
    
    ; [BF]
    ; Variablen sollte man immer deklarieren, besserer Stil und vermeidet Probleme.
    ; Erzwingen mit: Opt('MustDeclareVars', 1)
    ; hier: Global $Fehler, $cURLFehler -- über Notation ($sFehler statt $Fehler) wurde schon gesprochen, gehe ich nicht weiter drauf ein
    ; [/BF]
    If Not FileExists("curl.exe") or Not FileExists("curl-ca-bundle.crt") Then
    	$Fehler = "Datei curl.exe oder"&@LF
    	$Fehler &= "Datei curl-ca-bundle.crt"&@LF
    	$Fehler &= "wurde nicht gefunden - Name falsch?"&@LF
    	$Fehler &= "Mehr Infos im Handbuch unter"&@LF&"cURL-Fehler"
    
    
    	SplashTextOn("Fehler", $Fehler, 500, 220 , MouseGetPos(0)-250, MouseGetPos(1)-110, 32,"Georgia", 20, 600)
    	$cURLFehler = TimerInit()
    
    
    	While TimerDiff($cURLFehler) < 7000
    		Sleep(100)
    	WEnd
    	Exit
    Endif
    
    
    TraySetIcon("GrünesKreuz.ico")
    
    
    #cs
    	Version 1.70
    	Erstellt unter autoit Portable 3.3.12.0 am 21.Juli 2017
    	Author: Tuxedo auf Autoit.de
    	F1 - zeigt die verfügbaren Tastenkombination für 4 Sekunden an.
    	Ausführliche Anleitung in der beiligenden Smartclip_Handbuch.rtf
    	Das Programm funktioniert sehr einfach, es können Text-Abschnitte Hyper-Links und Grafiken(allerdings nur solche
    	die einen Link besitzen und vom Typ GIF JPG PNG sind) kopiert und wieder eingefügt werden.
    	Im gesamten reagiert das Programm auf Veränderungen im Clipboard - Zwischenablage und auf CTRL+c und CTRL+v
    
    
    	Da es Seiten gibt die beim Bilder kopieren Probleme machen, habe ich zusätzlich eine Meldung eingebaut die
    	erscheint wenn keine Bild-Kopie möglich ist und gleichzeitig wird im gespeicherten Clipboardeintrag statt
    	des Bildes ein Hinweis und der Link zum Bild eingefügt, damit nach dem Einfügen auch sieht wo das Bild sein sollte.
    	Dann kann es einfach manuell im Browser geladen und händisch kopiert werden, oder man macht es einfach so wie man es
    	im Browser ohne das Tool machen würde(Grafik kopieren+einfügen oder Bild aufrufen und Drag and Drop).
    
    
    	Die Code-Teile um das Bild ins Clipboard zu bringen stammen vom User "UEZ" auf Autoit.de Herzlichen Dank an "UEZ"
    	weitere Hilfe von @Alpines @autoiter und @Musashi alle auf autoit.de zuhause.
    #ce
    
    
    
    
    #include <Clipboard.au3>
    #include <Gdiplus.au3>
    
    
    ; [BF]
    ; HotkeySet würde ich vermeiden.
    ; Ich würde die Hotkeys mit GUISetAccelerators() erstellen. Dazu einfach eine unsichtbare GUI (z.B. 1*1px groß) verwenden.
    ; Verhindert mögliche Konflikte mit Hotkeys anderer Programme
    ; [/BF]
    HotKeySet("{F1}", "F_Hilfe")
    HotKeySet("{F2}", "F_Ende")
    HotKeySet("{F3}", "F_DelArray")
    HotKeySet("^!p", "F_Pause")
    HotKeySet("^c", "F_Kopieren")
    HotKeySet("^v", "F_Einfuegen")
    
    
    
    
    $Anzahl = 20; Standardwert für mögliche ClipBoard Kopien
    If @Compiled = True Then
    	$Anzahl = Number(StringRight(@ScriptName, 6) - StringRight(@ScriptName, 4))
    	If @error Then $Anzahl = Null
    	If $Anzahl < 5 Or $Anzahl > 50 Then $Anzahl = 20;Grenzwert mögliche Clipboard-Kopien nur für die EXE-Version gültig
    EndIf
    
    
    
    
    Dim $Clip[$Anzahl];Array zum Speichern der Clipinhalte
    $Cstep = 0;Integer Wert Zähler für kopierte Clips
    $Vstep = 0;Integer Wert Zähler für eingefügte Clips
    Dim $TimerKurz, $TimerLang, $TimerExtraLang;Double für Zahlen mit Kommastellen
    $Aktiv = True;Boolscher WErt
    $NoImageDelete = True;Boolscher Wert
    $hUser32 = DllOpen("user32.dll");Handle für die _IsPressed Funktion
    
    
    F_Hilfe()
    
    
    
    
    ClipPut("")
    While 1
    	While $Aktiv = False
    		ToolTip("Smartclip wird pausiert", MouseGetPos(0) + 100, MouseGetPos(1) - 30, "Toggle Pause mit ALT+p")
    		Sleep(500)
    	WEnd
    
    
    ; [/BF]
    ; Hier fragst du _IsPressed bool'sch ab (Is -- Is Not), an anderen Stellen werden bool'sche Variablen mit "$bVar = True/False" geprüft. Könnte man vereinheitlichen.
    ; [/BF]
    	If (ClipGet() <> "" And Not _IsPressed("11", $hUser32)) Then F_LinkCopy()
    	If _IsPressed("11", $hUser32) And Not ClipGet() = "" Then F_BildCopy()
    
    
    ; [BF]
    ; zu den Timern:
    ; Der Sinn soll ja sein, dass der User Zeit hat zu Lesen und diese variiert je nach Info.
    ; Ich hatte vor vielen Jahren mal eine Funktion erstellt, die ToolTip nach Zeit ODER bei Mausbewegung schließt.
    ; Da kann der User Lesen und wenn er fertig ist, eine Mausbewegung und der Tip wird beendet - vielleicht ist das für dich interessant.
    ; Findest du hier: https://autoit.de/index.php/Thread/3294-ToolTip-beenden-mit-Mausbewegung-bzw-nach-Zeitablauf/?postID=23314#post23314
    ; [/BF]
    	If TimerDiff($TimerKurz) > 1200 And TimerDiff($TimerKurz) < 1700 Then SplashOff()
    	If TimerDiff($TimerLang) > 2000 And TimerDiff($TimerLang) < 2500 Then SplashOff()
    	If TimerDiff($TimerExtraLang) > 4000 And TimerDiff($TimerExtraLang) < 4500 Then SplashOff()
    	Sleep(20)
    WEnd
    
    
    
    
    Func F_LinkCopy()
    	If $Cstep > UBound($Clip) - 1 Then
    		SplashTextOn("Warnung", '"Keine Clips mehr verfügbar' & @CRLF & 'Weitermachen mit "EINFÜGEN"', 250, 120, MouseGetPos(0), MouseGetPos(1), 16, "Arial", 14, 400)
    		$TimerLang = TimerInit()
    		ClipPut("")
    		Return
    	EndIf
    
    
    	$Clip[$Cstep] = ClipGet()
    
    
    	SplashTextOn("Titel", "Clip " & $Cstep & " wurde gespeichert", 270, 50, MouseGetPos(0), MouseGetPos(1), 17, "Arial", 14, 400)
    	$TimerKurz = TimerInit()
    
    
    	$Cstep += 1
    	ClipPut("")
    EndFunc   ;==>F_LinkCopy
    
    
    
    
    Func F_BildCopy()
    	Local $Url
    	$NoImageDelete = True;Schalter als Entscheidungshilfe ob ein Clip gelöscht wird falls keine er Bilddaten enthält
    	If $Cstep > UBound($Clip) - 1 Then
    
    
    		SplashTextOn("Warnung", '"Keine Clips mehr verfügbar' & @CRLF & 'Weitermachen mit "EINFÜGEN"', 250, 120, MouseGetPos(0), MouseGetPos(1), 16, "Arial", 14, 400)
    		$TimerLang = TimerInit()
    
    
    		ClipPut("")
    		Return
    	EndIf
    
    
    	If Stringleft(ClipGet(),4) <> "http" Then
    		Local $Bild = FileOpen(ClipGet(),16)
    		$Clip[$Cstep] = FileRead($Bild)
    		FileClose($Bild)
    	Else
    
    
    	$Url = ClipGet()
    
    
    	#Region BildladeBlock
    	RunWait(@ComSpec & " /c """ & '"' & @ScriptDir & '"' & "\curl.exe " & $Url & " >> " & '"' & @ScriptDir & '"' & "\Bild""", "", @SW_HIDE)
    
    
    	$Clip[$Cstep] = Binary(FileRead(@ScriptDir & "\Bild"))
    	Sleep(200)
    	FileDelete(@ScriptDir & "\Bild")
    	Endif
    	#EndRegion BildladeBlock
    
    
    	If StringLeft($Clip[$Cstep], 10) = "0x89504E47" Then $NoImageDelete = False;0x89504E47 = .PNG
    	If StringLeft($Clip[$Cstep], 10) = "0xFFD8FFE0" Then $NoImageDelete = False;0xFFD8FFE0 = .JPG
    	If StringLeft($Clip[$Cstep], 8) = "0x474946" Then $NoImageDelete = False;0x474946 = .GIF
    	If StringLeft($Clip[$Cstep],8) = "0X49492A" Then $NoImageDelete = False;0x49492A = .TIF
    	;If StringLeft($Clip[$Cstep], 8) = "0x1F8B08" Then $NoImageDelete = False;0x1F8B08 = .ICO
    
    
    	If $NoImageDelete = True Then $Clip[$Cstep] = ""
    	If $Clip[$Cstep] = "" Then
    		MsgBox(4096, "Meldung", "Download-Fehler" & @CRLF & "Das Bild muss händisch geladen werden")
    		$Clip[$Cstep] = 'Folgendes Bild muss von Hand nachgeladen werden' & @CRLF & 'Am Besten per "Grafik kopieren" oder "Drag and Drop"' & @CRLF & $Url
    	EndIf
    
    
    	SplashTextOn("Titel", "Clip " & $Cstep & " wurde gespeichert", 270, 50, MouseGetPos(0), MouseGetPos(1), 17, "Arial", 14, 400)
    	$TimerKurz = TimerInit()
    
    
    	$Cstep += 1
    	ClipPut("")
    EndFunc   ;==>F_BildCopy
    
    
    
    
    Func F_Kopieren()
    	If $Cstep > UBound($Clip) - 1 Then
    
    
    		SplashTextOn("Warnung", '"Keine Clips mehr verfügbar' & @CRLF & 'Weitermachen mit "EINFÜGEN"', 250, 120, MouseGetPos(0), MouseGetPos(1), 16, "Arial", 16, 700)
    		$TimerLang = TimerInit()
    
    
    		ClipPut("")
    		Sleep(50)
    		Return
    	EndIf
    	HotKeySet("^c")
    
    
    ; [BF]
    ; Bei Send() wird mir immer mulmig.
    ; Ich würde mal probieren, ob man evtl. mit _SendMessage() eine Möglichkeit findet STRG+C auszulösen (nur so ein Gedanke).
    ; [/BF]
    	Send("^c")
    
    
    ; [BF]
    ; Auch das Sleep() ist kein sicherer Kandidat. An irgendeinem Parameter sollte sich festmachen lassen, dass die richtege Funktion aufgerufen wird.
    ; Das "Sleep" bedeutet ja, dass du auf eine Beendigung von Irgendwas warten musst. - Das sollte man ergründen.
    ; [/BF]
    	Sleep(100);Diese Zeile ist sehr wichtig, sonst wird ständig F_BildCopy statt F_Kopieren aufgerufen
    
    
    	If ClipGet() <> "" Then;Da ich hier ändern musste kann jetzt der gleiche Einrtag mehrmals kopiert werden
    		$Clip[$Cstep] = ClipGet()
    
    
    		SplashTextOn("Titel", "Clip " & $Cstep & " wurde gespeichert", 270, 50, MouseGetPos(0), MouseGetPos(1), 17, "Arial", 14, 400)
    		$TimerKurz = TimerInit()
    
    
    		$Cstep += 1
    	EndIf
    	ClipPut("")
    	;Sleep(50)
    	HotKeySet("^c", "F_Kopieren")
    EndFunc   ;==>F_Kopieren
    
    
    
    
    Func F_Einfuegen()
    	HotKeySet("^v")
    	If $Vstep >= $Cstep Then
    		$Vstep = 0
    		$Cstep = 0
    
    
    		SplashTextOn("Titel", "Alles eingefügt + Reset" & @CRLF & "Script wieder kopierbereit", 270, 120, MouseGetPos(0), MouseGetPos(1), 16, "Arial", 16, 700)
    		$TimerLang = TimerInit()
    
    
    		ClipPut("")
    		HotKeySet("^v", "F_Einfuegen")
    		Return
    	EndIf
    
    
    
    
    	If StringLeft($Clip[$Vstep], 10) = "0x89504E47" Then Return F_BildEinfuegen();0x89504E47 = .PNG
    	If StringLeft($Clip[$Vstep], 10) = "0xFFD8FFE0" Then Return F_BildEinfuegen();0xFFD8FFE0 = .JPG
    	If StringLeft($Clip[$Vstep], 8) = "0x474946" Then Return F_BildEinfuegen();0x474946 = .GIF
    	If StringLeft($Clip[$Vstep],8) = "0x49492A" Then Return F_BildEinfuegen();0x49492A = .TIF
    	;If StringLeft($Clip[$Vstep], 8) = "0x1F8B08" Then Return F_BildEinfuegen();0x1F8B08 = .ICO
    
    
    	ClipPut($Clip[$Vstep])
    	Send("^v")
    
    
    	SplashTextOn("Titel", "Clip " & $Vstep & " von " & $Cstep - 1 & " wurde eingefügt ", 270, 50, MouseGetPos(0), MouseGetPos(1), 17, "Arial", 14, 400)
    	$TimerKurz = TimerInit()
    
    
    	$Clip[$Vstep] = ""
    	ClipPut("")
    	$Vstep += 1
    	HotKeySet("^v", "F_Einfuegen")
    EndFunc   ;==>F_Einfuegen
    
    
    
    
    
    
    Func F_BildEinfuegen()
    	HotKeySet("^v")
    
    
    	;<== UEZ
    	_GDIPlus_Startup();dieser ganze Block stammt von UEZ
    	$hBild = _GDIPlus_BitmapCreateFromMemory($Clip[$Vstep], True) ;erstellt dir ein GDI Bitmap vom InetRead.
    	$hClipboard_Bild = _WinAPI_CopyImage($hBild, 0, 0, 0, BitOR($LR_COPYDELETEORG, $LR_COPYRETURNORG))
    
    
    	_ClipBoard_Open(0)
    	_ClipBoard_Empty()
    	_ClipBoard_SetDataEx($hClipboard_Bild, $CF_BITMAP)
    	_ClipBoard_Close()
    
    
    	_WinAPI_DeleteObject($hBild)
    	_WinAPI_DeleteObject($hClipboard_Bild)
    
    
    	_GDIPlus_Shutdown()
    	;==> UEZ
    
    
    	Send("^v")
    	Sleep(500)
    	If $Vstep >= $Cstep Then
    		$Vstep = 0
    		$Cstep = 0
    
    
    		SplashTextOn("Titel", "Alles eingefügt + Reset" & @CRLF & "Script wieder kopierbereit", 250, 120, MouseGetPos(0), MouseGetPos(1), 16, "Arial", 16, 700)
    		$TimerLang = TimerInit()
    
    
    		ClipPut("")
    		HotKeySet("^v", "F_Einfuegen")
    		Return
    	EndIf
    
    
    	HotKeySet("^v", "F_Einfuegen")
    
    
    	SplashTextOn("Titel", "Clip " & $Vstep & " von " & $Cstep - 1 & " wurde eingefügt ", 270, 50, MouseGetPos(0), MouseGetPos(1), 17, "Arial", 14, 400)
    	$TimerKurz = TimerInit()
    
    
    	$Clip[$Vstep] = ""
    	ClipPut("")
    	$Vstep += 1
    EndFunc   ;==>F_BildEinfuegen
    
    
    
    
    Func F_DelArray()
    	SplashTextOn("Titel", "Reset wird durchgeführt", 250, 50, MouseGetPos(0), MouseGetPos(1), 16, "Arial", 14, 400)
    	$TimerLang = TimerInit()
    
    
    	For $i = 0 To UBound($Clip) - 1
    		$Clip[$i] = ""
    	Next
    
    
    	$Cstep = 0
    	$Vstep = 0
    	ClipPut("")
    EndFunc   ;==>F_DelArray
    
    
    
    
    Func F_Pause()
    	ClipPut("")
    	ToolTip("")
    	SplashOff()
    	$Aktiv = Not $Aktiv
    
    
    	If $Aktiv = True Then
    		HotKeySet("^c", "F_Kopieren")
    		HotKeySet("^v", "F_Einfuegen")
    	Else
    		HotKeySet("^c")
    		HotKeySet("^v")
    	EndIf
    EndFunc   ;==>F_Pause
    
    
    
    
    Func F_Hilfe()
    	SplashTextOn("Titel", "F1 - Hilfe anzeigen" & @CRLF & "F2 - Programm Beenden" & @CRLF & "F3 - Reset Daten Löschen" & @CRLF & "CTRL+ALT+p - Pause" & @CRLF & "Ctrl+c - Kopieren" & @CRLF & "CTRL+v - Einfügen", 300, 150, MouseGetPos(0), MouseGetPos(1), 37, "arial", 14, 600)
    	$TimerExtraLang = TimerInit()
    EndFunc   ;==>F_Hilfe
    
    
    
    
    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
    
    
    
    
    ; #FUNCTION# ====================================================================================================================
    ; Author ........: Valik
    ; Modified.......:
    ; ===============================================================================================================================
    Func _Singleton($sOccurenceName, $iFlag = 0)
    	Local Const $ERROR_ALREADY_EXISTS = 183
    	Local Const $SECURITY_DESCRIPTOR_REVISION = 1
    	Local $tSecurityAttributes = 0
    
    
    	If BitAND($iFlag, 2) Then
    		; The size of SECURITY_DESCRIPTOR is 20 bytes.  We just
    		; need a block of memory the right size, we aren't going to
    		; access any members directly so it's not important what
    		; the members are, just that the total size is correct.
    		Local $tSecurityDescriptor = DllStructCreate("byte;byte;word;ptr[4]")
    		; Initialize the security descriptor.
    		Local $aRet = DllCall("advapi32.dll", "bool", "InitializeSecurityDescriptor", _
    				"struct*", $tSecurityDescriptor, "dword", $SECURITY_DESCRIPTOR_REVISION)
    		If @error Then Return SetError(@error, @extended, 0)
    		If $aRet[0] Then
    			; Add the NULL DACL specifying access to everybody.
    			$aRet = DllCall("advapi32.dll", "bool", "SetSecurityDescriptorDacl", _
    					"struct*", $tSecurityDescriptor, "bool", 1, "ptr", 0, "bool", 0)
    			If @error Then Return SetError(@error, @extended, 0)
    			If $aRet[0] Then
    				; Create a SECURITY_ATTRIBUTES structure.
    				$tSecurityAttributes = DllStructCreate($tagSECURITY_ATTRIBUTES)
    				; Assign the members.
    				DllStructSetData($tSecurityAttributes, 1, DllStructGetSize($tSecurityAttributes))
    				DllStructSetData($tSecurityAttributes, 2, DllStructGetPtr($tSecurityDescriptor))
    				DllStructSetData($tSecurityAttributes, 3, 0)
    			EndIf
    		EndIf
    	EndIf
    
    
    	Local $aHandle = DllCall("kernel32.dll", "handle", "CreateMutexW", "struct*", $tSecurityAttributes, "bool", 1, "wstr", $sOccurenceName)
    	If @error Then Return SetError(@error, @extended, 0)
    	Local $aLastError = DllCall("kernel32.dll", "dword", "GetLastError")
    	If @error Then Return SetError(@error, @extended, 0)
    	If $aLastError[0] = $ERROR_ALREADY_EXISTS Then
    		If BitAND($iFlag, 1) Then
    			DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $aHandle[0])
    			If @error Then Return SetError(@error, @extended, 0)
    			Return SetError($aLastError[0], $aLastError[0], 0)
    		Else
    			Exit -1
    		EndIf
    	EndIf
    	Return $aHandle[0]
    EndFunc   ;==>_Singleton
    
    
    
    
    Func F_Ende()
    	DllClose($hUser32)
    	Exit
    EndFunc   ;==>F_Ende
    Alles anzeigen
  • ShellExecute: Fehler beim Öffnen einer PDF

    • BugFix
    • 18. Juli 2017 um 10:00

    Es gibt den Parameter "WorkingDir". Der ist bei solchen Problemen recht hilfreich. Dort setzt du das Programmverzeichnis deines Standard-PDF-Programms (kannst du aus der Registry auslesen) und dann sollte es auch klappen.

  • Listview

    • BugFix
    • 17. Juli 2017 um 19:14

    Du kannst auch einen "kreativen Workaround" nutzen: Verwende in den Item ein Image (nur 1px breit in Hintergrundfarbe mit der gewünschten Höhe) um die Zeilenhöhe anzupassen:

    AutoIt
    #include <WinAPI.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>
    
    
    
    
    Func _TestLV($iRowHeight=16, $iBGColor=0xFFFFFF)
    	Local $hGui = GUICreate('')
    	Local $iStylesEx = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
    	Local $cLV = GuiCtrlCreateListView('', 10, 10, 350, 300, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    	Local $hLV = GUICtrlGetHandle($cLV)
            _GUICtrlListView_SetExtendedListViewStyle($hLV, $iStylesEx)
    
    
    
    
    	Local $hImageList = _GUIImageList_Create(1, $iRowHeight)
    	_GUIImageList_Add($hImageList, _WinAPI_CreateSolidBitmap($hLV, $iBGColor, 1, $iRowHeight))
    	_GUICtrlListView_SetImageList($hLV, $hImageList, 1)
    
    
    	_GUICtrlListView_AddColumn($hLV, "Items", 120)
    	For $i = 1 To 10
    		_GUICtrlListView_AddItem($hLV, "Item " & $i, 0)
    	Next
    
    
    	GUISetState(@SW_SHOW)
    
    
    	Do
    	Until GUIGetMsg() = -3
    EndFunc
    
    
    _TestLV(25) ; 1px breites Bitmap in Hintergrundfarbe wird mit eingezeichnet, Höhe variabel
    Alles anzeigen
  • Treeview füllen und nutzen

    • BugFix
    • 17. Juli 2017 um 09:27
    Zitat von mumpel

    Der Kode Form Designer ist schlecht.

    Würde ich so nicht unterschreiben. Er ist ein gutes Werkzeug um Anfängern zu Helfen, grafische Elemente anzuordnen. Je vertrauter man mit AutoIt ist, desto weniger nutzt man Koda.
    Wenn du fit bist, machst du die Anordnung eh im Kopf. Geht schneller und ist genauer (man weiß dann halt, dass ein Label vor einem Input 3 px tiefer sitzen muss um vertikal mittig vorm Input zu sein).
    Aber wenn du Koda nimmst, werden alle deine Settings auch im Code abgelegt. Speichere vor dem Einfügen in SciTE als "Koda-Form". Du darfst dann aber innerhalb des Bereiches:
    #Region ### START Koda GUI section ### Form=
    ...
    ...
    #EndRegion ### END Koda GUI section ###
    nach dem Einfügen in SciTe nichts per Hand verändern, sondern die Form neu laden und in Koda anpassen.

  • Clipboard mit Grafik-Kopie ausstatten

    • BugFix
    • 15. Juli 2017 um 10:59
    Zitat von alpines

    Welches OS + Browser verwendest du?

    Win 7 Pro x64 - Chrome

  • Clipboard mit Grafik-Kopie ausstatten

    • BugFix
    • 15. Juli 2017 um 10:32
    Zitat von autoiter

    Ich glaube eher an lokale Probleme. Schlechtes Internet oder so.

    Vermutlich irgendsowas undefinierbares...
    Das Zertifikat von AutoIt zickt bei mir auch an manchen Tagen, da bekomme ich ständig eine Sicherheitswarnung bei jedem Seitenaufruf in der Domain. Und dann ist wieder monatelang alles in Butter.

  • SmartWatch - Probleme

    • BugFix
    • 15. Juli 2017 um 10:22

    Hi,
    ich habe mir eine Otium Gear S (DZ09) zugelegt (Kauf beim China-Mann für ca. 25 €).
    Das Teil ist erstaunlich sauber verarbeitet, hatte ich bei dem Preis nicht erwartet. Dass man für die Smartwatch eine eigene SIM-Karte einlegen kann, ist sicher ein nettes Feature - war für mich aber nicht relevant, ebensowenig wie die integrierte 1,3 MP Kamera. Ich wollte in erster Linie eine Uhr. Zweitens wollte ich Benachrichtigungen vom Smartphone erhalten (neue Mail/WhatsApp/verpasster Anruf etc. pp.).

    - Versuch 1 -
    BTNotification-App installiert und aktiviert
    Koppeln über Bluetooth - OK
    gekoppelte Profile: "Anruf Audio" und "Stereo Audio"
    Ergebnis:
    Alle Anrufe (Klingelton UND Gespräch selbst) landeten jetzt auf der Watch und wurden über deren Lautsprecher ausgegeben. :Face:
    Benachrichtigungen werden nicht durchgereicht. :S


    Gestern wurde von LG endlich Android 7.0 für mein Smartphone bereitgestellt - frisch installiert und:
    - Versuch 2 -
    Koppeln über Bluetooth - OK
    gekoppelte Profile: "Anruf Audio" und "Stereo Audio" und zusätzlich gibt es jetzt: "Inhalt" Zugriff auf Kontakte und Anruflisten
    Ergebnis:
    Alle Anrufe (Klingelton UND Gespräch selbst) landeten weiterhin auf der Watch und wurden über deren Lautsprecher ausgegeben.
    Benachrichtigungen werden durchgereicht. :rolleyes:

    Ich habe dann mal probiert, die Profile einzeln zu-/abzuschalten. Ohne "Anruf Audio" bekomme ich keine Benachrichtigungen. Schalte ich es ein, bekomme ich Nachrichten und kann nicht mehr vernünftig telefonieren.
    Wobei nach jedem neuen Verbinden von Smartphone und Watch automatisch die Profile aktiviert werden.

    Meine Frage:
    Hat jemand Erfahrung und kann mir einen Tipp geben, wie ich es erreiche die Smartwatch dazu zu bewegen nur Notifications entgegenzunehmen und ansonsten eine brave Uhr zu sein?

    Grundsätzlich bin ich bei dem Preis auch mit der reinen Uhr-Funktion zufrieden, da das Teil doch optisch recht ansprechend ist. Aber für "nur" Uhr wäre es eigentlich etwas too much.

  • Treeview füllen und nutzen

    • BugFix
    • 14. Juli 2017 um 08:34

    Schau dir mal in der Hilfe die Befehle zur Treeview-UDF (GuiTreeView.au3) an. Dort sind auch ausreichend Beispiele zum Erstellen, Befüllen, etc. vorhanden.
    Erstelle ein lauffähiges Bsp., an dem du uns dann deine Probleme zeigst.
    Du findest die UDF-Hilfe auch online (https://www.autoitscript.com/autoit3/docs/libfunctions.htm), die TreeView-Funktionen beginnen alle mit: _GuiCtrlTreeView_

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™