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

  • Gemountete USB-Laufwerke mit Lw-Buchstaben und Bezeichnung

    • BugFix
    • 12. Januar 2008 um 17:26

    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.

  • Gemountete USB-Laufwerke mit Lw-Buchstaben und Bezeichnung

    • BugFix
    • 12. Januar 2008 um 17:10

    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]

    ;===============================================================================
    ;
    ; 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

    [/autoit]

    Dateien

    _GetMountedUSB_Drives.au3 2,19 kB – 483 Downloads
  • Probleme mit Variablen in Funktion "FileExists"

    • BugFix
    • 12. Januar 2008 um 11:55

    Hi,
    es kann durchaus passieren (warum weiß ich auch nicht ;)), dass:

    [autoit]

    If FileExists(@MyDocumentsDir)

    [/autoit]

    ein anderes Ergebnis liefert als

    [autoit]

    $path = @MyDocumentsDir
    If FileExists($path)

    [/autoit]


    Möglicherweise ist die Makro-Auflösung innerhalb eines Funktionsaufrufes nicht immer zuverlässig.

  • UDF _FileFindChar

    • BugFix
    • 12. Januar 2008 um 00:45
    Zitat von FireFlyer

    krass seit wann machst du das????


    ;) Mit AutoIt arbeite ich seit Ende 2005. Mit Programmierung ganz allgemein schon seit mehr als 20 Jahren :rofl:
    Naja - meinen Namenszusatz habe ich auch nicht ganz umsonst, wie du auch an den Fkt. in meiner Sig. siehst. :P

  • UDF _FileFindChar

    • BugFix
    • 12. Januar 2008 um 00:25

    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=' ')
    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

    [/autoit]
  • UDF _FileFindChar

    • BugFix
    • 11. Januar 2008 um 23:41

    Es ist sehr umständlich und langsam.
    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:

    [autoit]

    Func _CountChar($FILE, $CHAR=' ')
    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

    [/autoit]
  • Welches Programm für bzw. gegen Spyware

    • BugFix
    • 11. Januar 2008 um 00:50

    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) :P 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.

  • Neue 3.2.0.0-Hilfe übersetzen

    • BugFix
    • 10. Januar 2008 um 22:10

    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. :P
    Hier mal ein Tipp von mir, für ein Wörterbuch, das mich noch nie im Stich gelassen hat: LingoPad. :rock:

  • 7zip & @MyDocumentsdir ?

    • BugFix
    • 8. Januar 2008 um 17:34

    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.

  • Script nacht Ausführen löschen lassen

    • BugFix
    • 8. Januar 2008 um 15:00

    SuFu hilft: http://www.autoit.de/index.php?form=Search&searchID=9253&highlight=selfdelete

  • Fritz!box mit AutoIt zurücksetzen ??? Hilfe ???

    • BugFix
    • 8. Januar 2008 um 10:09

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

    [/autoit] [autoit][/autoit] [autoit]

    _IEFormElementSetValue($oPass, $pass)
    _IEAction($oBtnLogin, 'click')
    _WaitMenu()

    [/autoit] [autoit][/autoit] [autoit]

    Func _WaitMenu()
    $n = 0
    Do
    Sleep(200)
    $txt = _IEPropertyGet($oIE, "statustext")
    If $txt = 'Fertig' Then $n += 1
    Until $n = 2
    Sleep(1500)
    EndFunc

    [/autoit]


    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.

  • endlosschleife einfügen bitte!!

    • BugFix
    • 7. Januar 2008 um 20:12

    Ach dein Firefox heißt "Penner" - :rofl:
    Naja, bischen langsam ist der Fuchs ja. :D

  • endlosschleife einfügen bitte!!

    • BugFix
    • 7. Januar 2008 um 20:07

    Dann schmiert dein PC ab, weil du 100.000 Instanzen von Firefox startest :P

  • endlosschleife einfügen bitte!!

    • BugFix
    • 7. Januar 2008 um 20:03

    Und was soll in der Endlosschleife passieren? Worauf wartet diese, was ist das Abbruchkriterium?
    *Kristallkugel-reib*
    Eine Endlosschleife ist z.B.

    [autoit]

    While 1
    ; irgendwas oder auch nix ;)
    WEnd

    [/autoit]
  • "Use GUICtrlDelete to delete item" Fehlermeldung

    • BugFix
    • 6. Januar 2008 um 22:27

    Ja, für Standard-Controls kannst du die UDF-Func nicht immer verwenden.

  • langes Fenster in ein Bild capturen

    • BugFix
    • 6. Januar 2008 um 18:05
    Zitat

    schon mal an einen pdf-writer gedacht ?


    Man, der Kerl hat schon wieder Recht - richtig unheimlich :rofl:

    Ich habe z.B. auf meinem Schlepptop PDFCreator als Standard-Drucker und bei allen Geschäftsabwicklungen übers Internet, "drucke" ich entsprechende Seiten als PDF-File aus.

  • Alle Dateien älter als 14Tage löschen

    • BugFix
    • 6. Januar 2008 um 17:27

    Wo der ExBerliner Recht hat, hat er Recht :).
    Ich hoffe ihr könnt bei einem alten Mann etwas Nachsicht üben. :D

  • Adresse (Ort und Straße) einlesen

    • BugFix
    • 6. Januar 2008 um 17:23

    Ich versteh nicht, warum du Strasse und Stadt in unterschiedlichen Arrays führen willst. Zusammengehörige Daten sollten auch zusammen gespeichert werden.

    Wenn du einzelne Arraydaten anzeigen möchtest, mußt du die Elemente einzeln ansprechen.

    [autoit]

    For $i = 0 To UBound($array) -1
    MsgBox(0, '', 'Wert an Position ' & $i & ': ' & $array[$i])
    Next

    [/autoit]


    Ein 2D-Array mit 2 Spalten gibst du so wieder:

    [autoit]

    For $i = 0 To UBound($array) -1
    MsgBox(0, '', 'Wert an Position ' & $i & ', Spalte 1: ' & $array[$i][0] & @CRLF & _
    'Wert an Position ' & $i & ', Spalte 2: ' & $array[$i][1])
    Next

    [/autoit]

    Hilfe zu Arrays findest du hier

  • Adresse (Ort und Straße) einlesen

    • BugFix
    • 6. Januar 2008 um 14:52

    Irgendwo ein Schreibfehler?
    Ich hatte zum Test ein Array erstellt, also nach dem Schritt _FileReadToArray() begonnen.
    Da klappte es tadellos.

    Hier mal mein funktionierendes Muster:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $aRecords[4] = [ _
    0, _
    'BLA/KAT1/Firma1/Strasse1/Ort1 Bemerkung1 * zeit *', _
    'BLUB/KAT2/Firma2/Strasse2/Ort2 Bemerkung2 * zeit *', _
    'BLI/KAT3/Firma3/Strasse3/Ort3 Bemerkung3 * zeit *']
    Dim $var
    ;~ If Not _FileReadToArray("test.txt",$aRecords) Then Exit MsgBox(4096,"Fehler", "Konnte Datei nicht in Array einlesen! error: " & @error)
    ;~ Dim $aAdresse[$aRecords[0]][2]
    Dim $aAdresse[3][2]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($aRecords) -1
    $var = StringSplit($aRecords[$i], '/')
    If Not @error Then
    $aAdresse[$i-1][0] = $var[4] ; Strasse
    $aAdresse[$i-1][1] = StringTrimRight($var[5], StringLen($var[5])-StringInStr($var[5], '*')+1 ) ; Ort + Bemerkung
    EndIf
    Next
    _ArrayDisplay($aAdresse)

    [/autoit]
  • in einer list automatisch nach unten scrollen

    • BugFix
    • 6. Januar 2008 um 14:47

    Mit

    [autoit]

    _GUICtrlListBox_SetCaretIndex ($hListBox, $Index_des_Eintrags)

    [/autoit]

    Für diese Dinge benötigst du zwingend die GUIListBox.au3 - Funktionen.

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™