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. Bitnugger

Beiträge von Bitnugger

  • Scite Speicherfehler

    • Bitnugger
    • 21. April 2017 um 23:50
    Zitat von pltnpcs

    Bevor ich meinen 'Pc neugestartet habe, habe ich natürlich wie immer gespeichert und nach dem Restart sah mein Skript dann so aus,

    Ich kann dir kaum glauben, dass du dein Script gespeichert hast, bevor du deinen PC einen Neustart machen lassen hast - und auch SciTE beim Speichern der Datei keinen Fehler gemeldet hat.

    Die Datei ist mit Null-Bytes gefüllt, was darauf hindeutet:

    • dass die Festplatte/Partition defekt ist - in dem Fall sollten aber noch mehr Dateien defekt sein - vorsichtshalber mit CHKDSK überprüfen (z. B.: CHKDSK C: /F /X)
    • dass die Datei im Schreibmodus geöffnet wurde (bereits vorhandener Inhalt wird mit Null-Bytes überschrieben), dann aber keine neuen Daten in die Datei geschrieben wurden
    • dass du deinen PC keinen Neustart hast machen lassen, sondern ihn abgewürgt hast, womit dann auch Punkt 2 geklärt wäre
    Zitat von pltnpcs

    ohne dass ich etwas ändern konnte:

    Sicher konntest du... du hast es nur nicht getan!

    Zitat von pltnpcs

    Weiß jemand was das ist und wie ich meinen Skript wiederherstellen kann?

    Aus der Ferne schwer zu sagen, woran es nun wirklich lag, dass die Datei nicht korrekt gespeichert wurde. Überprüfe deine Festplatten und schaue in die Ereignisanzeige, was dort an Fehlern gemeldet wurde. Ein Wiederherstellen der Datei ist nicht möglich, denn sie wurde ja nicht gelöscht - der verloren gegangene Inhalt existiert nicht mehr!

    Zitat von pltnpcs

    Habe nämlich schon ziemlich lange an dem Projekt gearbeitet

    Schau mal hier: TimeStamp - erweitert zu kleiner Versionsverwaltung für .au3 und .lua
    In dem Fall hättest du jetzt noch eine Kopie deines Scriptes...

  • Warten bis eine Taste gedrückt wird

    • Bitnugger
    • 20. April 2017 um 22:27

    Ja ok, ich gelobe, mich zu bessern... :thumbup: ( :P )

  • erste schritte

    • Bitnugger
    • 20. April 2017 um 20:56
    Zitat von Kanashius

    Das sendet den klick, bis er nicht mehr fehlschlägt (also der nein-button existiert).

    Falls das Fenster aber nicht wie erwartet erscheint, weil der Installer z. B. wegen eines Fehlers abgestürzt ist, hast du hier eine Endlosschleife...

    Dann lieber ein wenig mehr ausholen... so vielleicht:

    AutoIt
    Local $iTimeOut
    While NOT ControlClick("7-Zip 16.04", "&Nein", "Button2")
    	Sleep(10)
    	$iTimeOut += 1
    	If $iTimeOut < 10000 Then ContinueLoop
    	Switch MsgBox(262452, '7z-Installer', 'Bei der Installation von 7z ist ein Fehler aufgetreten - der 7z-Installer scheint nicht mehr zu reagieren - willst du noch länger auf eine Rückmeldung warten?')
    		Case 6 ;Yes
    			$iTimeOut = 0
    		Case 7 ;No
    			ExitLoop
    	EndSwitch
    WEnd
    Alles anzeigen
  • Warten bis eine Taste gedrückt wird

    • Bitnugger
    • 20. April 2017 um 17:25
    Zitat von autoiter

    Mach es besser...

    Mit einer Do-Schleife wird die Funktion Sleep(250) in jedem Fall zumindest 1x ausgeführt, auch wenn die entsprechende Taste bereits gedrückt ist.

    Folglich ist in diesem Fall die While-Schleife die bessere Wahl... :D

    AutoIt
    #include <Misc.au3>
    
    
    Global $g_hDLL = DllOpen("user32.dll")
    
    
    ; Warten, wenn die Taste "ESC" NICHT gedrückt ist...
    ConsoleWrite('Press ESC to continue...' & @CRLF)
    While Not _IsPressed("1B", $g_hDLL)
    	Sleep(250)
    WEnd
    ConsoleWrite('ESC was pressed...' & @CRLF)
    
    
    DllClose($g_hDLL)
    Exit
    Alles anzeigen
  • bildersuche

    • Bitnugger
    • 20. April 2017 um 03:03

    a) https://www.autoitscript.com/autoit3/docs/l…tToArrayRec.htm

    b) gelöst - Rekursive Suche nach Dateien, dabei explizit mehrere (Unter)Verzeichnisse aus dem Suchpfad ausklammern

    c) Ich benutze dafür je nach Situation auch gerne das Tool Everything. Dazu gibt es auch ein Command-line Interface (es.exe).

    Vorteil dabei ist, dass Everything beim Start eine Datenbank anlegt und eine Suche (auf allen Partitionen) dadurch im schlimmsten Fall nur wenige Sekunden dauert. Everything kann auch im lokalen Netzwerk suchen und man kann auch einen ETP-Server nutzen.

    Hier ein Bsp.:

    Bash
    C:\WINDOWS\system32>es -h
    -r Search the database using a basic POSIX regular expression.
    -i Does a case sensitive search.
    -w Does a whole word search.
    -p Does a full path search.
    -h --help Display this help.
    -n <num> Limit the amount of results shown to <num>.
    -s Sort by full path.
    
    
    C:\WINDOWS\system32>es -w "f:\Eigene Dateien\Pictures\Fun\*aa*.jpg" & es "f:\Eigene Dateien\Pictures\Fun\*d*.png"
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\50-50 bed.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\Bed on shock absorbers.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\Computer workstation toilet.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\dental glass.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\haare_sex28f2p.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\i-cam.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Janehiiiuuuaaah!.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\measuring belt.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\monkey ladder.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\Two sinks carafe.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - JPG\Waarom hebben ze er niet eerder aan gedacht\Wulfman.jpg
    F:\Eigene Dateien\Pictures\Fun\Fun - PNG\Baldrian.png
    F:\Eigene Dateien\Pictures\Fun\Fun - PNG\bilder-raetsel-rebus-003(Schreibtischstuhllehne).png
    F:\Eigene Dateien\Pictures\Fun\Fun - PNG\der-user-unter-mir-will-ein-kind-von-dir.png
    F:\Eigene Dateien\Pictures\Fun\Fun - PNG\Devil-Fuck.png
    F:\Eigene Dateien\Pictures\Fun\Fun - PNG\happybirthday.png
    F:\Eigene Dateien\Pictures\Fun\Fun - PNG\Linux-Befehl-sudo.png
    F:\Eigene Dateien\Pictures\Fun\Fun - Linux\Linux-Geeks-Chicks-Ladies.png
    F:\Eigene Dateien\Pictures\Fun\Fun - PNG\ubs_ossi_failed.png
    F:\Eigene Dateien\Pictures\Fun\Fun - Linux\ubuntu-bedeutung.png
    F:\Eigene Dateien\Pictures\Fun\Fun - PNG\Womans_World.png
    Alles anzeigen


    Wenn du zu a), b) oder c) Hilfe brauchst, dann gib Bescheid.

  • ChooseIconDialog

    • Bitnugger
    • 19. April 2017 um 04:23
    Zitat von chip

    Dann hast du wohl sehr viel weiße Icons und solltest dein Windows wohl neu installieren

    Die shell32.dll hat 327 Icon groups. In den meisten Icon groups befinden sich ca. 7-9 Icons (in einigen auch deutlich mehr oder weniger) in unterschiedlicher Größe, die sich teils auch im Aussehen unterscheiden.

    Rechnen wir mal:
    327 * 7 = 2289
    327 * 8 = 2616


    Das kannst du mit dem Resource Hacker leicht selbst überprüfen.

    Hier als Bsp. ein Bild mit den Icons, die in der explorer.exe zu finden sind: https://autoit.de/index.php/Attachment/84410-ExtractIcon-png

  • ChooseIconDialog

    • Bitnugger
    • 18. April 2017 um 20:42
    Zitat von chip

    z.b Bei shell32.dll werden nur die Icons bis ID 327 angezeigt.

    Die shell32.dll hat bei mir (Win 10) 327 Icon groups und insgesamt 2417 Icons!

    @NO1 :-) findet mit seiner Vorgehensweise von jeder Icon group ergo nur das erste Icon. :D Wirklich alle Icons findest du mit den _WinAPI_*Resource* - Funktionen - die ich auch (s. weiter unten) in meinem Tool verwende. In der AutoIt-Hilfe gibt es ein paar Beispiele dazu - z. B. bei: _WinAPI_BeginUpdateResource.

    Ich wollte bereits vorgestern einen Kommentar zu deinem Tool schreiben, habe mir dann aber gedacht, dass ich - besser als einen langen Roman zu schreiben - dein Tool meinem Wissenstand entsprechend korrigiere/optimiere, da du so viel mehr davon hast. Morgen werde ich es wohl fertig haben... denn heute richte ich erst mal meinen neuer Mini-Server ein... das hat Vorrang. :)

    Ich bin seit ein paar Tagen nebenher damit zugange ein Tool zu schreiben, dass alle Icons aus *.exe, *.dll, *.ico, *.icl und auch assoziierende, z. B. *.au3, anzeigen und diese dann auch in beliebigen Formaten (*.ico, *.icl, *.png, *.gif, *.bmp, *.jpg, ...) extrahieren kann. Schiebe es die Tage dann hier hoch... zuerst aber muss ich hier noch einen anderen User beglücken, der schon etwas länger auf sein Tool von mir wartet. :saint:

  • Teamspeak 3 UDF

    • Bitnugger
    • 14. April 2017 um 15:06

    Im blauen Forum funktioniert der Download-Link noch...

    https://www.autoitscript.com/forum/topic/11…eamspeak-3-udf/

    Im Anhang noch eine Version aus meinem Archiv, die an 4 Stellen geändert/erweitert/korrigiert wurde.

    Dateien

    ts3.au3 153,76 kB – 244 Downloads
  • Object Fehlermeldung

    • Bitnugger
    • 13. April 2017 um 05:35

    @autoiter

    AutoIt
    Local $oIEEvents = ObjEvent($oHTML, "_$oHTML_Event", "")
    	If @error Then Return SetError(2, 0, $sHTMLData)

    Welche Events von welchem Interface willst du denn wo hiermit abfangen?

    Schau mal hier...

    _HTML_StripTags
    AutoIt
    ;-- TIME_STAMP   2017-04-13 11:37:19   v 0.1
    
    
    #Region    ;************ Includes ************
    ;~ #include <Array.au3>;~~~
    ;~ #include <File.au3>;~~~
    ;~ #include <String.au3>;~~~
    ;~ #include <Date.au3>;~~~
    ;~ #include <Math.au3>;~~~
    ;~ #include <MsgBoxConstants.au3>;~~~
    #EndRegion ;************ Includes ************
    
    
    Global $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
    
    
    _Test()
    
    
    Func _Test()
    	Local $sStrip, $oHTML = ObjCreate("AUTOIT")
    
    
    	$sStrip = _HTML_StripTags("<h2></h2>")
    	_PrintMsg($sStrip)
    
    
    	$sStrip = _HTML_StripTags("<html><h2>sdfsd sdfsdf sdf sdf sdf</h2></html>")
    	_PrintMsg($sStrip)
    EndFunc   ;==>_Test
    
    
    Func _HTML_StripTags($sHTMLData)
    	If $sHTMLData = "" Then Return SetError(1, 0, '$sHTMLData = ""')
    
    
    	Local $oHTML = ObjCreate("HTMLFILE")
    	If @error Then Return SetError(2, 0, 'ObjCreate failed!')
    
    
    	With $oHTML
    		.Open()
    		.Write($sHTMLData)
    
    
    		Return (IsObj(.Body) ? .Body.InnerText & .Close() : SetError(3, 0, 'No HTML Body found!' & .Close()))
    	EndWith
    EndFunc   ;==>_HTML_StripTags
    
    
    Func _ErrFunc($oError)
    	; Do anything here.
    
    
    	ConsoleWrite(@ScriptName & " (" & $oError.scriptline & ") : ==> COM Error intercepted!" & _
    			StringFormat('\n' & StringReplace('@@@@@@@@@', '@', '-\t%20s %s\n'), _
    			"err.number         :", _Hex($oError.number), _
    			"err.source         :", $oError.source, _
    			"err.helpfile       :", $oError.helpfile, _
    			"err.helpcontext    :", $oError.helpcontext, _
    			"err.lastdllerror   :", $oError.lastdllerror, _
    			"err.scriptline     :", $oError.scriptline, _
    			"err.retcode        :", _Hex($oError.retcode), _
    			"err.description    :", $oError.description, _
    			"err.windescription :", $oError.windescription))
    
    
    	Return SetError(1, 0, "COM Error intercepted!")
    EndFunc   ;==>_ErrFunc
    
    
    Func _PrintMsg($sMsg, $iError = @error)
    	If $iError Then
    		MsgBox(0, @ScriptName, "Error: " & $iError & @CRLF & @CRLF & $sMsg)
    	Else
    		ConsoleWrite('$sStrip = ' & $sMsg & @CRLF)
    	EndIf
    EndFunc   ;==>_PrintMsg
    
    
    Func _Hex($vExpression, $iLength = 8)
    	Return '0x' & Hex($vExpression, $iLength)
    EndFunc   ;==>_Hex
    Alles anzeigen
  • _FileWriteFromArray komisches verhalten

    • Bitnugger
    • 12. April 2017 um 19:39
    Zitat von Nachid

    Die Daten werden direkt mit FileReadLine gelesen (ich habe hier kein FileOpen verwendet).

    Ohne File-Handle wird die Datei als UTF-8 behandelt.

    If :Glaskugel: (FileReadLine) = $bBadCoise Then $sUseThisFunc = _FileReadToArray

    Schau mal hier...

    _Example
    AutoIt
    ;-- TIME_STAMP   2017-04-12 19:19:51   v 0.1
    
    
    #include <File.au3>
    #include <WinAPIMisc.au3>
    
    
    _Example()
    
    
    Func _Example()
    	Local $iRet, $iErr, $aArray, $hFile, $sFile = @ScriptDir & "\Example.csv"
    
    
    	If Not FileExists($sFile) Then RunWait(@ComSpec & " /c " & "echo 1,2,3,a,b,c,ä,ö,ü,Ä,Ö,Ü,ß>" & $sFile, "", @SW_HIDE)
    	; mit Codepage 850 (OEM) gespeichert...
    	; 1,2,3,a,b,c,ä,ö,ü,Ä,Ö,Ü,ß
    
    
    	; ************************************************************************
    	; Daten einlesen - mit Handle, wenn sie NICHT als UTF-8 vorliegen
    	; ************************************************************************
    	$hFile = FileOpen($sFile, BitOR($FO_READ, $FO_ANSI))
    	If $hFile = -1 Then Exit -1 + ConsoleWrite('! FileOpen error: ' & $sFile & @CRLF)
    	$iRet = _FileReadToArray($hFile, $aArray, 0, ',')
    	$iErr = @error
    	FileClose($hFile)
    	If $iRet = 0 Then Exit $iErr + ConsoleWrite('! _FileReadToArray error: ' & $sFile & @CRLF)
    	; ergibt mit $FO_ANSI dann...
    	; 1|2|3|a|b|c|„|”||Ž|™|š|á
    	_ArrayDisplay($aArray, '$aArray - $FO_ANSI (OEM 850)')
    
    
    	; ************************************************************************
    	; Daten von OEM 850 nach ANSI umwandeln
    	; ************************************************************************
    	For $i = 0 To UBound($aArray) -1 Step 1
    		For $j = 0 To UBound($aArray, 2) -1 Step 1
    			$aArray[$i][$j] = _WinAPI_OemToChar($aArray[$i][$j])
    		Next
    	Next
    	; ergibt dann...
    	; 1|2|3|a|b|c|ä|ö|ü|Ä|Ö|Ü|ß
    	_ArrayDisplay($aArray, '$aArray - OEM 850 > ANSI')
    
    
    	; ************************************************************************
    	; Daten bearbeiten
    	; ************************************************************************
    	$aArray[0][0] = Random(1,9,1)
    	$aArray[0][1] = Random(1,9,1)
    	$aArray[0][2] = Random(1,9,1)
    	; ...
    
    
    	; ************************************************************************
    	; Daten von ANSI nach OEM 850 umwandeln
    	; ************************************************************************
    	For $i = 0 To UBound($aArray) -1 Step 1
    		For $j = 0 To UBound($aArray, 2) -1 Step 1
    			; _WinAPI_CharToOem() ruft die Dll-Funktion "CharToOemW" auf und übergibt einen "wstr"
    			; Wir brauchen aber...
    			; _CharToOem ...      ruft die Dll-Funktion "CharToOem"  auf und übergibt einen "str"
    			$aArray[$i][$j] = _CharToOem($aArray[$i][$j])
    		Next
    	Next
    	_ArrayDisplay($aArray, '$aArray - ANSI > OEM 850')
    
    
    	; ************************************************************************
    	; Daten speichern
    	; ************************************************************************
    	$hFile = FileOpen($sFile, BitOR($FO_ANSI, $FO_OVERWRITE))
    	_FileWriteFromArray($hFile, $aArray, Default, Default, ",")
    	FileClose($hFile)
    EndFunc   ;==>_Example
    
    
    
    
    ; #FUNCTION# ====================================================================================================================
    ; Author.........: Yashied
    ; Modified.......: JPM
    ; ===============================================================================================================================
    ;~ Func _WinAPI_CharToOem($sStr)
    ;~ 	Local $aRet = DllCall('user32.dll', 'bool', 'CharToOemW', 'wstr', $sStr, 'wstr', '')
    ;~ 	If @error Or Not $aRet[0] Then Return SetError(@error + 10, @extended, '')
    
    
    ;~ 	Return $aRet[2]
    ;~ EndFunc   ;==>_WinAPI_CharToOem
    
    
    Func _CharToOem($sStr)
    	Local $aRet = DllCall('user32.dll', 'bool', 'CharToOem', 'str', $sStr, 'str', '')
    	If @error Or Not $aRet[0] Then Return SetError(@error + 10, @extended, '')
    
    
    	Return $aRet[2]
    EndFunc   ;==>_CharToOem
    Alles anzeigen
  • mp3 Dateien nach Spotify Playlist sortieren

    • Bitnugger
    • 11. April 2017 um 20:08

    Kannst du das nicht mithilfe der API machen?

    https://developer.spotify.com/web-api/get-a-…sers-playlists/

  • StringInsert Wie führt man 2 Strings zusammen?

    • Bitnugger
    • 6. April 2017 um 18:02

    :D

    AutoIt
    #include <String.au3>
    
    
    Local $sString1 = "Eine Frau beansprucht die gleichen Rechte wie ein Mann."
    Local $sString2 = "die intelligent ist,"
    Local $sString3 = " Eine Frau, "
    Local $sString4 = " verzichtet darauf."
    Local $sString5 = ", die glaubt intelligent zu sein,"
    
    
    ConsoleWrite ($sString1 & @CRLF)
    $sString1 = _StringInsert($sString1, $sString5, StringInStr($sString1, ' ', 0, 2) -1)
    ConsoleWrite ($sString1 & @CRLF)
    $sString1 &= $sString3 & $sString2 & $sString4
    ConsoleWrite ($sString1 & @CRLF)
    Alles anzeigen
  • Den im Input eingegebenen Text als Hotkey verwenden

    • Bitnugger
    • 5. April 2017 um 20:44

    Schämen sollten sich lediglich jene Leute, die seit mehreren Jahren rege mit AutoIt haniteren und trotzdem einen derart chaotischen Stil an den Tag legen, bei dem jeder normal denkende Mensch nur ungläubig die Augen verdreht! Ob ein Script des Fragestellers nötig ist, um seine Frage ohne Mehraufwand zufriedenstellend zu beantworten, liegt vor allem an der Formulierung seiner Frage. Wenn jemand nicht nur ab und zu mal ein paar Zeilen mit AutoIt coden will, sondern definitiv tiefer in die Materie einsteigen will, sollte er/sie eh weniger Fragen stellen und sich dafür lieber die Tutorials und die Beispiele aus der Hilfe, vor allem aber die hier von den Usern angebotenen Scripte, genauer ansehen - denn genau da steckt die Erfahrung und Kompetenz vieler Jahre harter Arbeit drin!

  • Probleme mit der MondernMenu UDF

    • Bitnugger
    • 5. April 2017 um 16:45

    Bitte schön...

    Dateien

    ModernMenuLib_with_Tray_Fixed.zip 45,74 kB – 417 Downloads
  • Probleme mit der MondernMenu UDF

    • Bitnugger
    • 5. April 2017 um 15:35
    Zitat von NO1 :-)

    aber warum meckert denn die Check.exe rum, es wird doch abgefragt ob die $Events deklariert sind?

    Au3Check wird ausgeführt BEVOR das Script gestartet wird!

    Das Dumme dabei ist, dass Au3Check lediglich nach Deklarationen im Script sucht und in deinem Fall dann sieht, dass versucht wird, diverse Konstanten mehrmals zu deklarieren.

    Zitat von NO1 :-)

    Wie soll ich das umschreiben?

    Du musst lediglich die angemeckerten Deklarationen auskommentieren... hier ein Beispiel:

    Diese Zeilen...

    AutoIt
    If Not IsDeclared("SRCCOPY")				Then Global Const $SRCCOPY = 0x00CC0020

    so auskommentieren... in SciTE kannst du das mit Numpad + - machen... oder du löscht diese Zeilen einfach komplett.

    AutoIt
    ;~ If Not IsDeclared("SRCCOPY")				Then Global Const $SRCCOPY = 0x00CC0020
  • ExtractAssociatedIcon, ExtractIconExW, ExtractIcon mit Autoit3

    • Bitnugger
    • 5. April 2017 um 09:08

    Nun habe ich lediglich noch das Problem, dass ich Icons mit nur zwei Farben nicht speichern kann... der Rest ist quasi nur noch Fleißarbeit.

    _ExtractIcon.pngExplorer.png

  • _String_MultiReplace UDF

    • Bitnugger
    • 5. April 2017 um 01:20

    Oder willst du es noch kürzer? :D

    Spoiler anzeigen
    AutoIt
    ;-- TIME_STAMP   2017-04-05 01:16:45
    
    
    Global $g_sNewString = _String_MultiReplace('Huhu Huhu duda', 'u|H|a| ', 'i|L|X')
    ConsoleWrite('> $g_sNewString = "' & $g_sNewString & '"' & @CRLF & '! Es wurden ' & @extended & ' Zeichen ersetzt!' & @CRLF)
    
    
    Global $g_aSearch = ['u', 'ck', 'wer', 'K', 'eni'], $g_aReplace = ['i', 'chen', 'was', 'M', 'elien']
    ConsoleWrite('> $sNewString = "' & _String_MultiReplace('Kuckuck, wer da?', $g_aSearch, $g_aReplace) & '"' & @CRLF & '! Es wurden ' & @extended & ' Zeichen ersetzt!' & @CRLF)
    
    
    Func _String_MultiReplace($sString, $vSearch, $vReplace, $sSearchSeparator = "|", $sReplaceSeparator = "|")
    	Local $aSearch = _CheckParams($vSearch, $sSearchSeparator), $aReplace = _CheckParams($vReplace, $sReplaceSeparator), $iReplace = 0
    	If UBound($aReplace) < UBound($aSearch) Then ReDim $aReplace[UBound($aSearch)]
    	ConsoleWrite(StringFormat('+ %-11s = "%s"\n', '$sString', $sString))
    	For $i = 0 To UBound($aSearch) -1 Step 1
    		$sString = StringReplace($sString, $aSearch[$i], $aReplace[$i])
    		$iReplace += @extended * StringLen($aSearch[$i])
    		ConsoleWrite(StringFormat('- %-11s = %-36s %s %-20s %-20s %-20s $iReplace = %5i\n', '$sString', '"'&$sString&'"', 'Replace ', '"' & $aSearch[$i] & '"', ' <-> ', '"' & $aReplace[$i] & '"', $iReplace))
    	Next
    	Return SetExtended($iReplace, $sString)
    EndFunc
    
    
    Func _CheckParams(ByRef $vParam, ByRef $sSeparator)
    	Local $aParam[1]
    	If IsArray($vParam) Then Return $vParam
    	$aParam = StringSplit($vParam, $sSeparator, 2)
    	If @error Then $aParam[0] = $vParam
    	Return $aParam
    EndFunc
    Alles anzeigen
  • Probleme mit der MondernMenu UDF

    • Bitnugger
    • 5. April 2017 um 00:06
    Zitat von NO1 :-)

    Ist da ein Fehler im Skript oder liegt es an SciTE?

    Keines von beidem... es liegt daran, dass die Au3Check.exe von SciTE ausgeführt wird, bevor das Script gestartet wird - und die meckert hier rum!

    Deaktivieren kannst du den Au3Check, wenn du diese Zeile an den Anfang des Scripts einfügst...

    AutoIt
    #AutoIt3Wrapper_Run_AU3Check=N


    Besser wäre jedoch, wenn man das ganze Script bzw. die UDF so umschreibt, dass es auch mit Au3Check läuft!

  • Den im Input eingegebenen Text als Hotkey verwenden

    • Bitnugger
    • 4. April 2017 um 23:35

    Gucks du hier: https://www.autoitscript.com/forum/topic/90598-hotkeyinput-udf/

    Gucks du hier: https://www.autoitscript.com/forum/topic/96…sctls_hotkey32/

  • Button Hintergrund ändern UND Icon einfügen?

    • Bitnugger
    • 4. April 2017 um 19:47
    Zitat von eukalyptus

    _WinAPI_ExtFloodFill($tDrawItem.hDC, 0, 0, 0)

    Wie ich gerade festgestellt habe, zeigt diese Funktion keine Wirkung in deinem Script.

    So funktioniert es aber...

    Spoiler anzeigen
    AutoIt
    ;-- TIME_STAMP   2017-04-04 21:34:08
    
    
    #Region    ;************ Includes ************
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiButton.au3>
    #include <WinAPIShellEx.au3>
    #include <WinAPIGdi.au3>
    #EndRegion ;************ Includes ************
    
    
    Global $GUI = GUICreate("", 150, 160, -1, -1)
    GUISetBkColor(0x0)
    
    
    Global $hIcon = _WinAPI_ShellExtractIcon("shell32.dll", 170, 48, 48)
    Global $idButton_Refresh = GUICtrlCreateButton("", 20, 20, 60, 60)
    Global Const $hBrush1 = _WinAPI_CreateBrushIndirect($BS_SOLID, 0xFF0000), $hBrush2 = _WinAPI_CreateBrushIndirect($BS_SOLID, 0x00FF00), $hBrush3 = _WinAPI_CreateBrushIndirect($BS_SOLID, 0x0000FF)
    GUICtrlSetStyle($idButton_Refresh, BitOR($WS_TABSTOP, $BS_CENTER, $BS_NOTIFY, $BS_OWNERDRAW))
    
    
    GUIStartGroup()
    Global $idRadio_ExtFloodFill = GUICtrlCreateRadio("_WinAPI_ExtFloodFill", 20, 120, 160, 20)
    Global $idRadio_FillRect     = GUICtrlCreateRadio("_WinAPI_FillRect", 20, 140, 160, 20)
    GUICtrlSetState($idRadio_FillRect, $GUI_CHECKED)
    
    
    GUIRegisterMsg($WM_DRAWITEM, "WM_DRAWITEM")
    GUISetState(@SW_SHOW, $GUI)
    
    
    ConsoleWrite('$BST_PUSHED = ' & $BST_PUSHED & @CRLF)
    While 1
    
    
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			_WinAPI_DestroyIcon($hIcon)
    			Exit
    		Case $idButton_Refresh
    	EndSwitch
    
    
    WEnd
    
    
    _WinAPI_DeleteObject($hBrush1)
    _WinAPI_DeleteObject($hBrush2)
    _WinAPI_DeleteObject($hBrush3)
    
    
    Func WM_DRAWITEM($hWnd, $iMsg, $wParam, $lParam)
    	#forceref $iMsg, $wParam, $lParam
    	Local $iFill, $tPoint, $tDrawItem = DllStructCreate("uint CtlType; uint CtlID; uint ItemID; uint ItemAction; uint ItemState; hwnd hWndItem; hwnd hDC; int Left; int Top; int Right; int Bottom; ptr ItemData;", $lParam)
    	Local Const $ODT_BUTTON = 4
    	Local Static $iInit = 0, $hBrush = ''
    
    
    	Switch $tDrawItem.CtlType
    		Case 4 ;ODT_BUTTON
    			Switch $tDrawItem.CtlID
    				Case $idButton_Refresh
    					; Button - nicht gedrückt = $hBrush1 (rot), gedrückt = $hBrush2 (grün), Button inaktiv = $hBrush3 (blau)
    
    
    					Switch True
    						Case BitAnd($tDrawItem.ItemState, 0x11) = 0x11
    							If $iInit > 1 Then ConsoleWrite('+ $idButton_Refresh is pressed...  $tDrawItem.ItemState = 0x' & Hex($tDrawItem.ItemState) & ' _GUICtrlButton_GetState = 0x' & Hex(_GUICtrlButton_GetState($idButton_Refresh)) & @CRLF)
    							$hBrush = $hBrush2
    							$iFill = 0x0FF0000
    							$tDrawItem.Left += 5
    							$tDrawItem.Top += 5
    						Case BitAnd($tDrawItem.ItemState, 0x10) = 0x10
    							If $iInit > 1 Then ConsoleWrite('! $idButton_Refresh is released... $tDrawItem.ItemState = 0x' & Hex($tDrawItem.ItemState) & ' _GUICtrlButton_GetState = 0x' & Hex(_GUICtrlButton_GetState($idButton_Refresh)) & @CRLF)
    							$hBrush = $hBrush1
    							$iFill = 0x00FF00
    						Case Else
    							ConsoleWrite('> Button Focus lost...             $tDrawItem.ItemState = 0x' & Hex($tDrawItem.ItemState) & ' _GUICtrlButton_GetState = 0x' & Hex(_GUICtrlButton_GetState($idButton_Refresh)) & @CRLF)
    							$hBrush = $hBrush3
    							$iFill = 0x0000FF
    					EndSwitch
    					$iInit += 1
    
    
    					Switch _IsChecked($idRadio_FillRect)
    						Case True
    							; So funktioniert es!
    							ConsoleWrite('- _WinAPI_FillRect...' & @CRLF)
    							$tRECT = _WinAPI_GetClientRect($tDrawItem.hWndItem)
    							_WinAPI_FillRect($tDrawItem.hDC, $tRECT, $hBrush)
    						Case Else
    							; So funktioniert es NICHT!
    							ConsoleWrite('- _WinAPI_ExtFloodFill...' & @CRLF)
    							_WinAPI_ExtFloodFill($tDrawItem.hDC, 0, 0, $iFill, $FLOODFILLBORDER)
    					EndSwitch
    
    
    					_WinAPI_DrawIconEx($tDrawItem.hDC, $tDrawItem.Left, $tDrawItem.Top, $hIcon, $tDrawItem.Right - $tDrawItem.Left, $tDrawItem.Bottom - $tDrawItem.Top)
    					Return 1
    			EndSwitch
    	EndSwitch
    
    
    	$tDrawItem = 0
    	Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_DRAWITEM
    
    
    Func _IsChecked($idControlID)
        Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
    EndFunc   ;==>_IsChecked
    Alles anzeigen

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™