Wo du Recht hast, hast du Recht ;-).
Beiträge von BugFix
-
-
Da in der Signatur viel zu wenig Platz ist 8), nutze ich einfach mal diesen Platz dafür und brauche nur noch einen Link hierher.
Meine UDFLeider sind alle Links zu den UDF geschrottet - bitte die Forensuche bemühen.Funktioniert inzwischen wieder._ArraySort_2ary_Array2DSortByLen _Array2DDblDel _Array2DDelete _Array2DEmptyDel _Array2DSearch _Array2DInsert _Array2DSplit_Array2DJoin _Array2DMirror _SubArray2DGetEntry _SubArray2DSetEntry _FileWriteFromArray2D_FileReadToArray2DEdit: Mit der Version 3.2.12.0 gab es kleine Syntaxänderungen, die in den Einzelfunktionen nicht angepaßt sind. Bitte die Funktionssammlung verwenden.
Und hier nun eine Übersicht der wesentlichen meiner Machwerke
Ich habe mal grob in Themengebiete gruppiert.Edit 18.08.2013: Nach weiteren 2 Jahren mal wieder aktualisiert
GUI
• DockIt Link
• 'Fenster' - Auflistung in Menüleiste Link
• GuiMenu - Neue Funktionen (..._ColumnsCreate, ..._JustifyRight) Link
• MouseHotKey - Beispiel Link
• PixelSearch von rechts nach links Link
• Recent File List Link
• TextMeter Link
• ToolTip, beenden mit Mausbewegung bzw. nach Zeitablauf LinkGUI-Control
• Button - "Schwebend", Skriptbeispiel Link
• Button - Transparente GIF als Button, UDF Link
• ComboBox - wirkliche Suchfunktion Link
• GDI+ Kreis mit Mittelpunktkoordinaten zeichnen Link
• GroupEx - Group-Control, Farbig, Textausrichtung Link
• Input - grauer Infotext, auch mit Fokus Link
• IntelliSenseBox Link
• Internes Control - Status setzen Link
• ListBoxClear-Funktion für GUIListBox.au3 Link
• ListView - SubItem einzeln färben/formatieren Link
• ListView - Editieren aller SubItems Link
• ListView - Eintrag verschieben Link
• Listview - _GUICtrlListView_MoveItem - markierten Eintrag im Listview auf/ab verschieben Link
• Listview - Spalten fixieren Link
• ListView - Suche Link
• Listview - OwnLVSelection - UDF für eigene Färbung der Selektion in Listviews Link
• Listview - _GuiCtrlListView_SetFocusSelected - ListviewItem per Skript markieren, wie angeklickt Link
• OwnContext UDF - Eigenes Kontext-Menü Link
• SplashImage / -Text, randlos, formatierbar Link
• Text auf GUI in jedem gewünschten Winkel Link
• Transparente GIF als Button nutzen Link
• Transparenz bei MouseOver switchen Link
• TreeViewEx.au3 - zusätzliche Treeview Funktionen Link
• TreeView: ein Level Ausklappen Link• _GetUniCodeSymbol - Symbolbeschreibung und Symbolanzeige für ein paar gängige Unicode-Symbole Link
• Doppelklick für (fast) jedes Control Link
• Doppelklick als Event abfragen Link
• Lautstärkeregelung (eigene) einblendbar Link
• Picture als Button animiert Link
• QR-Code Creator Link
• Spielkarten Skriptbeispiel Link
• Thumbshot für Bookmarks Link
• Tool: Formatierung Controls Link
• Webcam LinkARRAY
• ArrayMore.au3 Link
• Sub-Array - Werte direkt lesen/schreiben Link
• Symbiose: Array + Structure = StrucList ; Zugriff kpl. assoziativ Link
• Test Array erstellen LinkDATEI BEARBEITUNG
• _GetFolderLocalized - Ordnernamen lokalisiert Link
• _Multi_FileListToArray - _FileListToArray extended Link
• Alias Pfadname Link
• Auflistung Datei/Ordner Rekursiv per Objekt Link
• Bild- (Film-) Dateien umbenennen in Reihenfolge der Erstellung Link
• Dateien / Ordner rekursiv lesen Link
• Dateisuche Rekursiv per Objekt Link
• Dateisuche in Ordner und allen Unterordnern - eine weitere Variante Link
• Dateiinfo Erweitert (eine Datei od. alle eines Ordners) Link
• Download per Objekt Link
• Ordner in einer bestimmten Verzeichnisebenentiefe relativ zum Startordner ermitteln Link
• Pfad - _FilePathListToArray Link
• Programmpfad des Default-Browsers ermitteln Link
• Ressourcencontainer Link
• String ist Pfad? Link
• Verwaltung Hardlinks Link
• ZIP - Systemintegrierte Funktion nutzen LinkOBJEKT
• Array Alternativen - UDF Link
• Excel - ExcelMore.au3 Link
• Excel - Skriptbsp.: Diagramm in Excel Link
• Excel - Tabellenblatt lesen Link
• Explorer - Kontextmenü Link
• Registry-Funktionen per Objekt Link
• System.Collection.SortedList Link
• Scripting.Dictionary Link
• Scripting.Dictionary - UDF Link
• Scripting.FileSystemObject Link
• Word - Dokumente zusammenfügen Link
• WScript.Shell LinkSONSTIGES
• 2D-Dll Link
• _GetSystemMetrics (kpl. in einem Aufruf) Link
• _RandomDistance() - Mit Zufallswert auf den ersten Wert einer Gruppe zugreifen Link
• _RegReadBinary() Link
• Anwendungspfad anhand der PID ermitteln Link
• Auto-Ersetzen u. Input-Check mit Hook Link
• Autostart Laufwerke Link
• Basic-AutoIt-Object - Objekte sind auch nur Arrays Link
• Bildschirmschoner entfernen Link
• Bit-Operationen Link
• BDE Konfiguration Link
• CD/DVD-Laufwerke erkennen (open-close) Link
• Console, Eigene Link
• Datum/Zeit - CountDown Link
• Datum/Zeit - Kalender-Ctrl Link
• Datum/Zeit - Maske Monatskalender Link
• Datum/Zeit - Sommerzeit Link
• Datum/Zeit - Werktage Link
• Datum/Zeit - Wochentag-/Feiertagsermittlung Link
• Farbraumumrechner Link
• Farbtabelle: HEX-Code Link
• Formatierung Zahlenwerte Link
• Fremddateien "includen" (ohne FileInstall) Link
• IE - Hilfe bei Arbeit mit IE.au3 Link
• Install-Script-Generator Link
• Kontextmenüeintrag (Dateiexplorer) - Infos markierte Dateien in Zwischenablage kopieren Link
• IRC - Basis-Client für IRC-Chat Link
• IRC - Neue Funktionen für IRC.au3 Link
• LuaInline - Lua Code in AutoIt-Skripten ausführen Link
• MakroBox Link
• Mathe - gr. gem. Teiler / kl. gem. Vielfaches Link
• Mathe - Primfaktorzerlegung, Radikal eines Integer Link
• Min() / Max() - erweiterte Funktionen Link
• MS System-Error-Codes Link
• MsgBox - alle Parameter auf einen Blick Link
• Netzwerkadapter - _GetAllNetworkAdapter() Link
• Netzwerkadapter - Konfiguration Link
• Netzwerkadapter - vom Netz trennen Link
• Notepad++ statt SciTE Link
• Number() - Fehlerhafte Rückgabe behoben mit _Number() Link
• Outlook Journaleintragstyp benutzerdefiniert Link
• Prozeßvergleich Link
• Schnittmengen und Differenzmengen ermitteln Link
• SciTE - Abkürzungen: Schlüsselwörter Link
• SciTE - Abkürzungen verwalten Link
• SciTE - AddOn: OwnHotKeys Link ersetzt: Link
• SciTE - Interface: Kommunikation AutoIt <-> SciTE Link
• SciTE - Kontinuierlicher Kommentarmodus für AutoIt Link
• SciTE - Markierten Bereich paarig einfassen + Arraydeklaration mit Wertzuweisung und Scopeauswahl Link
• SciTE - Pfad der in SciTe offenen Datei in die Zwischenablage kopieren Link
• SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable Link
• SciTE - Vereinfachten UDF-Header aus Funktionsdeklaration (aktuelle Zeile) erstellen Link
• SciTE - Versionsverwaltung Skripte Link
• Splash - GUI Generator Link
• Standard-Editor Notepad ersetzen Link
• String - _StringSplitOnce Link
• String - Ausgabestring Längengruppiert für bis zu 10 Werte Link
• String - Bearbeitung mit Python-Syntax Link
• String - Splitten nach Zeichenzahl Link
• String - Suche LIKE Link
• Systemordner Inhalte Link
• Taskbar Eigenschaften Link
• TaskManager sperren Link
• Tierstimmenrätsel (Spiel für Kinder) Link
• TimerDiff() - extended Link
• USB - Drives - Manage per devcon.exe Link
• USB - Gemountete Laufwerke mit Lw-Buchstaben und Bezeichnung Link
• Variablen - Deklaration automatisiert - Opt("MustDeclareVars", 1) Link
• Variablen - _InList(), mehrfache ODER-Verknüpfung Link
• Variablen - Tausender Gruppierung in Stringausgabe Link
• Variablen - Ungenutzte ermitteln Link
• Virtuelles (partielles) Laufwerk Erstellen/Löschen Link -
Die Funktionen wurden dir benannt, jetzt ist es an dir anzufangen.
Kommst du dann nicht weiter, kannst du uns deinen Code posten und wir werden dir weiterhelfen.
Aber mach erst mal den Anfang ;). -
Ich hatte mal ein Array-Tutorial gemacht, findest du hier.
-
Hi,
sicher nichts großes - aber von Zeit zu Zeit recht nützlich :D.
Mit _RegReadBinary($KEY, $VALUE [, $Bin2Str=1]) wird ein Registryschlüssel vom Typ REG_BINARY ausgelesen und in einen String gewandelt zurückgegeben (wahlweise auch binäre Rückgabe).
Die Syntax und Fehlermeldungen sind analog zur Funktion RegRead().Edit 26.12.2009:
- Angepaßt an aktuelle AutoItversion.
- Fehlerausgabe geändert (1 und @error-Wert)
- Schlüssel die nicht vom Typ REG_BINARY sind werden normal gelesenSpoiler anzeigen
[autoit];===============================================================================
[/autoit]
; Function Name...._RegReadBinary($KEY, $VALUE [, $Bin2Str=1])
; Description......Liest einen Registryschlüssel aus
; Schlüssel vom Typ REG_BINARY können wahlweise als
; ASCII-String zurückgegeben werden.
; Parameter(s).....$KEY Registryschlüssel
; $VALUE Registrywert
; $Bin2Str 0 = Value wird normal gelesen
; 1 = Binärwert wird in ASCII-String gewandelt (Standard)
; Return Value(s)..Erfolg: der Registrywert
; Fehler: 1 set @error:
; 1 Schlüssel kann nicht geöffnet werden
; 2 Hauptschlüssel kann nicht geöffnet werden
; 3 Fernzugriff auf die Registry nicht möglich
; 4 Key oder Value nicht übergeben
; -1 Wert kann nicht geöffnet werden
; -2 Typ des Wertes wird nicht unterstützt
; Author(s)........BugFix ([email='bugfix@autoit.de'][/email])
; AutoIt ver.......3.3.2.0
;===============================================================================
Func _RegReadBinary($KEY, $VALUE, $Bin2Str=1)
If $KEY = '' Or $VALUE = '' Then Return SetError(4,0,1)
If $Bin2Str <> 1 Then $Bin2Str = 0
Local $reg = RegRead($KEY, $VALUE)
Local $err = @error, $ext = @extended
If $err Then Return SetError($err,0,1)
If $ext <> 3 Or $Bin2Str = 0 Then Return $reg
Local $val = ''
$reg = StringTrimLeft($reg, 2)
For $i = 1 To StringLen($reg) - 2 Step 2
$tmp = BinaryToString('0x' & StringMid($reg, $i, 2))
If $tmp <> "" Then
$val = $val & $tmp
EndIf
Next
Return $val
EndFunc ;==>_RegReadBinaryDL bisher: 46
-
Zeichenkettenverknüpfung in AutoIt mit "&".
[autoit]
Bsp.$var = 'BlaBla'
[/autoit]
$var = $var & 'Blub'
; neuer Wert von $var jetzt: 'BlaBlaBlub' -
Nein, denn DriveGetLabel() bringt keine oder nicht dieselbe Bezeichnung, wie in der Registry abgelegt.
Bei all meinen Sticks (6: MicroX, PConKey etc.) bekomme ich mit DriveGetLabel() keine Information. -
Hi,
mit der Funktion _GetMountedUSB_Drives() lassen sich für alle USB-Sticks (und alle als "removable" angemeldeten USB-Festplatten) Laufwerksbuchstabe und Bezeichnung zurückgeben.
Das steht natürlich nie zusammen in der Registry, sondern kann nur über 3 Abfragen zugeordnet werden ;).Spoiler anzeigen
[autoit];===============================================================================
[/autoit]
;
; Function Name: _GetMountedUSB_Drives
; Description:: Ermittelt aktuell gemountete USB-Laufwerke
; Parameter(s): None
; Requirement(s): #include <string.au3>
; Return Value(s): 2D-Array
; Array[0][0] = Anzahl gemounteter USB-Laufwerke
; Array[n][0] = Laufwerk - Buchstabe
; Array[n][1] = Bezeichnung
; Note: Erkennt alle gemounteten USB-Sticks,
; USB-Festplatten werden erkannt, wenn sie als "Wechseldatenträger"
; im System registriert sind.
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;
;===============================================================================
#include <string.au3>
Func _GetMountedUSB_Drives()
Local $aUSB_Drives[1][2]=[[0]]
$var = DriveGetDrive( "Removable" )
For $i = 1 To UBound($var) -1
$reg = RegRead('HKLM\SYSTEM\MountedDevices', '\DosDevices\' & $var[$i])
$val = ''
For $k = 1 To StringLen($reg) - 2 Step 2
$tmp = _HexToString(StringMid($reg, $k, 2))
If $tmp <> "" Then
$val = $val & $tmp
EndIf
Next
$prefix = StringSplit($val, '#')
If StringRight($prefix[3], 2) == 'RM' Then
$prefix = StringTrimRight($prefix[3], 3)
For $l= 1 to 100
$val = RegEnumKey('HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR', $l)
If @error <> 0 then ExitLoop
For $n = 1 To 20
$sub = RegEnumKey('HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR\' & $val, $n)
If @error <> 0 then ExitLoop
If RegRead('HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR\' & $val & '\' & $sub, 'ParentIdPrefix') == $prefix Then
If DriveGetFileSystem($var[$i] & '\') Then
ReDim $aUSB_Drives[UBound($aUSB_Drives)+1][2]
$aUSB_Drives[0][0] += 1
$aUSB_Drives[UBound($aUSB_Drives)-1][0] = StringUpper($var[$i])
$aUSB_Drives[UBound($aUSB_Drives)-1][1] = _
RegRead('HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR\' & $val & '\' & $sub, 'FriendlyName')
ExitLoop
EndIf
EndIf
Next
Next
EndIf
Next
Return $aUSB_Drives
EndFunc ;_GetMountedUSB_Drives -
Hi,
[autoit]
es kann durchaus passieren (warum weiß ich auch nicht ;)), dass:If FileExists(@MyDocumentsDir)
[/autoit]ein anderes Ergebnis liefert als
[autoit]$path = @MyDocumentsDir
[/autoit]
If FileExists($path)
Möglicherweise ist die Makro-Auflösung innerhalb eines Funktionsaufrufes nicht immer zuverlässig. -
krass seit wann machst du das????
Mit AutoIt arbeite ich seit Ende 2005. Mit Programmierung ganz allgemein schon seit mehr als 20 Jahren
Naja - meinen Namenszusatz habe ich auch nicht ganz umsonst, wie du auch an den Fkt. in meiner Sig. siehst. -
Grundlegender Tipp für UDF: Versuche solche Funktionen zu verwenden, dass du keine Includes verwenden mußt.
Bsp. Statt _ArrayAdd() das Array mit ReDim verändern.Hier mal meine Lösung (nur aus dem Kopf, ungetestet), Rückgabe Array. An Array[0] wird die Anzahl der Zeichen zurückgegeben. Jedes folgende Arrayelement enthält eine gefundene Position in der Schreibart: "Dateizeile,Spalte"
Spoiler anzeigen
[autoit]Func _GetPosOfChar($FILE, $CHAR=' ')
[/autoit]
If Not FileExists($FILE) Then Return MsgBox(0, '', 'keine gültige Datei')
Local $arOut[1]=[0]
Local $i = 1
While 1
$tmp = FileReadLine($FILE, $i)
If @error Then ExitLoop
$var = StringSplit($tmp, '')
If Not @error Then
For $k = 1 To UBound($var)-1
If $var[$k] == $CHAR Then
ReDim $arOut[UBound($arOut)+1]
$arOut[UBound($arOut)-1] = $i & ',' & $k
$arOut[0] += 1
EndIf
Next
EndIf
$i += 1
WEnd
Return $arOut
EndFunc -
Es ist sehr umständlich und langsam.
[autoit]
Du hattest doch danach schonmal in der Shoutbox gefragt, oder?
Zumindest kann ich mich an den Tipp von Xeno erinnern, ich habe es hier mal umgesetzt:Func _CountChar($FILE, $CHAR=' ')
[/autoit]
If Not FileExists($FILE) Then Return MsgBox(0, '', 'keine gültige Datei')
Local $fh = FileOpen($FILE, 0)
Local $var = StringReplace(FileRead($fh), $CHAR, $CHAR)
Local $count = @extended
FileClose($fh)
Return $count
EndFunc -
Ich falle sicher etwas aus der Rolle ;), da ich die Meinung vertrete, dass von "allein" nichts auf meinen PC gelangt. Ich muß schon eine "Einladung" aussprechen.
Also ich verwende nur Hardwarefirewall (Router) und so etwa 1-mal im Jahr scanne ich (erfolglos) nach Viren und mache einen Check mit HijackThis.
Wer allerdings keinen Router verwendet (gibts das noch?) sollte schon alle Ports dicht machen, dann kommt man auch nicht um eine Softwarefirewall umhin. Aber ich kann nicht behaupten, dass es da etwas wirklich empfehlenswertes gibt. Symantec-Produkte schaffen mehr Probleme als sie evtl. verhindern (Erfahrung von mir und Bekanntenkreis) und letztendlich ist der "Schutz" hauptsächlich psychologischer Natur.
Der beste Schutz ist dein Kopf - überleg vor jedem Klick, vor dem Öffnen jeder Mail, ob das auch sicher ist. -
Hi,
ich habe beim Reviewen bemerkt, dass teilweise recht ungeeignete Wörterbücher/Übersetzungstools herangezogen werden und häufig dann ausgerechnet die gesuchte Übersetzung wohl nicht dabei ist.
Hier mal ein Tipp von mir, für ein Wörterbuch, das mich noch nie im Stich gelassen hat: LingoPad. -
Stimmt, das Problem ist aber von Windoof hausgemacht. Warum werden überhaupt Ordner- und Dateinamen mit Leerzeichen vom System zugelassen? Das ist doch voll krank!
Und somit werden wir immer wieder auf Probleme stoßen, wenn wir auf derartige Dateien und Ordner stoßen. -
-
Also die Einwahl machst du zu kompliziert :).
Ich habe hier das Bsp. anhand der FritzBox 7141, aber die Menüoberfläche ist bei den FB eigentlich gleich:Spoiler anzeigen
[autoit]#include <ie.au3>
[/autoit] [autoit][/autoit] [autoit]
Global $pass = 'PASSWORT'
Global $oIE = _IECreate('http://fritz.box/')
_WaitMenu()
Global $oFrame = _IEFrameGetCollection ($oIE, 0)
Global $oForm = _IEFormGetCollection($oFrame, 1) ; Referenz auf "uiViewForm"
Global $oPass = _IEFormElementGetCollection($oForm, 0) ; Referenz auf PW-Eingabe
Global $oBtnLogin = _IEFormElementGetCollection($oForm, 1) ; Referenz auf 'Anmelden' Button_IEFormElementSetValue($oPass, $pass)
[/autoit] [autoit][/autoit] [autoit]
_IEAction($oBtnLogin, 'click')
_WaitMenu()Func _WaitMenu()
[/autoit]
$n = 0
Do
Sleep(200)
$txt = _IEPropertyGet($oIE, "statustext")
If $txt = 'Fertig' Then $n += 1
Until $n = 2
Sleep(1500)
EndFunc
Jetzt bist du auf der Menüseite, dort werden zwar Java-Scripte aufgerufen - aber auf den ersten Blick würde ich sagen das ist Tabellenformat. Ich schau es mir mal näher an. Wenn ich Zugriff finde poste ich es.Edit: Da der IE bei jeder Einwahl unterschiedliches Zeitverhalten hat, habe ich mal noch eine Warteroutine eingefügt, damit das Objekt auch sicher geladen ist. Allein die Statusmeldung 'Fertig' reicht dafür leider nicht, da Fertig nür für die zu ladenden Komponenten gilt. Evtl. auszuführende Java-Scripte werden anscheinend nicht berücksichtigt.
-
Ach dein Firefox heißt "Penner" -
Naja, bischen langsam ist der Fuchs ja. -
Dann schmiert dein PC ab, weil du 100.000 Instanzen von Firefox startest
-
Und was soll in der Endlosschleife passieren? Worauf wartet diese, was ist das Abbruchkriterium?
[autoit]
*Kristallkugel-reib*
Eine Endlosschleife ist z.B.While 1
[/autoit]
; irgendwas oder auch nix
WEnd