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

Beiträge von nuts

  • Suche nach Informationen in Dateiform

    • nuts
    • 14. Juli 2009 um 13:49

    Hey,

    ist vielleicht doch nicht ganz das richtige Skript. ?(
    _FileListtoarray untersucht nämlich nicht die Unterordner. Ist das wichtig?

    Den Filter muss man natürlich je nachdem anpassen z.B. für bestimmte .txt Dateien: "*win*.txt" (am besten du erstellst dir einen Testordner und probierst es aus).

  • Pixel und Buchstaben

    • nuts
    • 14. Juli 2009 um 13:14
    [autoit]

    #include <Misc.au3>
    global $dll = DllOpen("user32.dll")
    Global $iCounter = 10

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

    AdlibEnable('_Countdown', 1000)
    While True
    if _IsPressed("6b", $dll) then MsgBox(1, "", $iCounter)
    If $iCounter <= 0 Then ; wenn der Counter Null erreicht hat, dann...
    AdlibDisable() ; die zeitgesteuerte Funktion beenden
    $iCounter = 1 ; den Counter auf 1 setzen, damit diese If...Then-Anweisung nur einmal ausgeführt wird
    MsgBox(0, 'Countdown-Timer', 'Zeit um!') ; Eine Meldung ausgeben
    exit
    EndIf
    WEnd

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

    Func _Countdown()
    $iCounter -= 1 ; den Counterwert um 1 verringern
    EndFunc ;==>_Countdown

    [/autoit]


    Ein einfaches Beispiel sagt mehr als lange Erklärungen.

  • Suche nach Informationen in Dateiform

    • nuts
    • 14. Juli 2009 um 13:04
    Spoiler anzeigen
    [autoit]


    #include <GuiListBox.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>

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

    Local $Ordner = 'C:\Programme'
    HotKeySet("{ENTER}", "_Open_Ordner")

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

    Global $aOrdner = _FileListToArray($Ordner, "*", 2)
    Opt('GUIOnEventMode', 1)

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

    $gui = GUICreate('Schnelle Ordnerauswahl by funkey & nuts', 400, 600, -1, -1)
    GUISetOnEvent(-3, '_Ende')
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    Global $Input = GUICtrlCreateInput('', 10, 10, 380, 20)
    Global $List = GUICtrlCreateList('', 10, 40, 380, 560)
    Global $hList = GUICtrlGetHandle(-1)

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

    For $i = 1 To $aOrdner[0]
    GUICtrlSetData(-1, $aOrdner[$i])
    Next

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

    GUISetState()

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

    While 1
    Sleep(1000)
    WEnd

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

    Func _Check_Eingabe($iwParam)
    switch $iwParam
    case 0x03000003
    _GUICtrlListBox_SetCurSel($hList, _GUICtrlListBox_FindString($hList, GUICtrlRead($Input)))
    EndSwitch
    EndFunc

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

    Func _Open_Ordner()
    If GUICtrlRead($List) <> "" Then ShellExecute($Ordner & '\' & GUICtrlRead($List))
    EndFunc

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

    Func _Ende()
    Exit
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    _Check_Eingabe($iwParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($List) Then $hWndListBox = GUICtrlGetHandle($List)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $List, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK
    _Open_Ordner()
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND (Bugfix - http://www.autoit.de)

    [/autoit]

    Hilft dir das weiter? Musst du nur für Dateien umbauen (ganz oben bei _FileListToArray).

  • Seriennummer Generator - Sicherheit

    • nuts
    • 13. Juli 2009 um 22:23

    Hilft leider auch nicht gegen das Decompilieren. Drauf wollte peethebee unter anderem auch raus oder?

  • fragen um u.a. tasten zu sperren. (ehemalig: Inputbox mit txt datei vergleichen)

    • nuts
    • 13. Juli 2009 um 16:49

    Stimmt :D - war gedanklich beim Inputcontrol.

  • fragen um u.a. tasten zu sperren. (ehemalig: Inputbox mit txt datei vergleichen)

    • nuts
    • 13. Juli 2009 um 15:09

    Du musst den Inhalt der Inputbox auch noch auslesen!

    [autoit]

    #include <IE.au3>
    #include <File.au3>
    #NoTrayIcon

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

    $file = FileOpen(@WindowsDir & "\RichtigeNamen.txt", 0)
    $line = FileReadLine($file, 1) ;liest Zeile 1
    $line2 = FileReadLine($file, 2) ;liest Zeile 2
    $line3 = FileReadLine($file, 3) ;liest Zeile 3
    $name = InputBox("Kommandoeingabe", "Geben Sie ihren Vornamen ein und klicken Sie auf OK.")

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

    If $line or $line2 or $line3 = GUIctrlread($name) Then ;das ist jetzt nur nen beispiel, ich hab nämlich bemerkt dass so jede eingabe geht
    MsgBox(64,"","Guten Tag " &$name& "!" &@CRLF& "Ich hoffe es geht dir gut." )
    Exit
    Else
    MsgBox(16,"Falscher Name!","Dies ist ein falscher Name!!!" & @CRLF & "")
    EndIf

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

    _FileWriteLog(@WindowsDir & "\Namen.log",$name)

    [/autoit]
  • jpgs über lan senden

    • nuts
    • 12. Juli 2009 um 06:55

    und wo ist dein Versuch?

  • "Automatisch" erstellten Button ansprechen - Gute Idee gesucht!

    • nuts
    • 11. Juli 2009 um 17:34

    Hey,

    ich habe folgendes Skript (vereinfacht):

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <WinAPI.au3>
    #include <ButtonConstants.au3>
    #include <Misc.au3>

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

    global $titel = "Notnagel"
    if _Singleton($titel,1) = 0 then exit

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

    Opt("GUICoordMode", 1)
    Global $HA = @DesktopHeight -200
    Global $VA = @DesktopWidth -800

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

    Global $Farbe = 0x00BFFF
    Global $Fokusfarbe = 0x4169E1

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

    #Region HauptGUI
    Global $binfo = "Shutdown|Reboot|Standby|Exit" ;Buttonbeschriftung für jeden Button mit | getrennt eingeben -> Anzahl der Beschriftungen bestimmt gleichzeitig die Anzahl der Buttons
    Global $abfinfo = StringSplit($binfo, '|')
    Global $banzahl = $abfinfo[0]
    Global $babstandleft = 50 ;Abstand links und rechts zur HauptGUI
    Global $babstandtop = 10 ;Abstand zwischen den Buttons
    Global $bwidth = $VA - 2* $babstandleft ;Button Left ausrechnen
    Global $bheight = $HA / $banzahl - $babstandtop* ($banzahl +1) / $banzahl ;Button Höhe in Abhängigkeit zur Auflösung ausrechnen
    Global $HauptGUI = GUICreate("", $VA, $HA, -1, -1, BitOR($WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))

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

    ;Buttons erstellen und Button TOP ausrechnen
    For $i = 1 to $banzahl
    Global $Button = GUICtrlCreateButton($abfinfo[$i], $babstandleft, $i*$babstandtop+ ($i -1)* $bheight, $bwidth, $bheight,$BS_BITMAP )
    GUICtrlSetFont(-1, 20)
    GUICtrlSetBkColor(-1, $Farbe)
    next
    #EndRegion HauptGUI

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

    GUISetState(@SW_SHOW, $HauptGUI)

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

    Global $last_focus = GUICtrlGetHandle(-1)
    GUIRegisterMsg($WM_USER, "MY_WM_USER")

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

    While 1

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

    $msg = GUIGetMsg()
    switch $msg
    case $GUI_EVENT_Close
    Exit
    case 3
    If MsgBox(32 + 4, "Shutdown", "PC wirklich herunterfahren?") = 6 Then Shutdown(1)
    case 4
    If MsgBox(32 + 4, "Reboot", "PC wirklich neu starten?") = 6 Then Shutdown(2)
    case 5
    If MsgBox(32 + 4, "Standby", "PC wirklich in den Standby schicken?") = 6 Then Shutdown(32)
    case 6
    Exit
    EndSwitch
    WEnd

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

    Func MY_WM_USER($hWnd, $msg, $wParam, $lParam)
    Local $Control = WinGetHandle(_WinAPI_GetFocus())
    GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($last_focus), $Farbe)
    GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($Control), $Fokusfarbe)
    $last_focus = $Control
    EndFunc ;==>_HauptReset

    [/autoit]

    Die Buttons sollen also in Abhängigkeit der Auflösung und ihrer Anzahl erstellt werden. (Hintergrund: Das Skript wird auf verschiedenen HTPC's mit völlig unterschiedlicher Auflösung eingesetzt und ich möchte nicht bei jeder Einrichtung im Skript die Controls zurechtrücken).
    Das blöde ist nur, dass die Anzahl der Buttons auch dynamisch ist ... somit muss ich bei jeder Veränderung (z.B. zwischen Button 5 und 6 soll ein weiterer eingefügt werden) die ganze While .. Wend Schleife umschreiben.
    Daher die Frage: Ist es möglich die Buttons irgendwie anders ansprechen? Oder hat jemand ein ganz anderes Konzept?

    Gruß nuts

  • Datei Kopieren und Inhalt der datei ändern

    • nuts
    • 11. Juli 2009 um 13:52
    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    $gui = GUICreate('test', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)
    GUISetState(@SW_SHOW)

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

    Global $path = @ScriptDir
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tis', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) - 1
    $FileName = StringRegExpReplace($aFiles[$i], '.*\\(.+)\..*', '$1')
    _GUICtrlListView_AddItem($hLV, $FileName)

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

    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button ;zeige Pfad an
    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]
    MsgBox(0, ' $aFiles[$index]', $aFiles[$index])

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

    Case $Imagecheck
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    Local $currFilePath = $aFiles[$index]
    $FileNameimage = StringRegExpReplace($aFiles[$index], '.*\\(.+)\..*', '$1')
    FileCopy(@ScriptDir & '\tis\Template.tis', @ScriptDir & '\tis\' & $FileNameimage & '.tis', 1)
    $fopenread = FileOpen(@ScriptDir & '\tis\' & $FileNameimage & '.tis', 0)
    If $fopenread = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead($fopenread)
    MsgBox(1, "", $sFileRead)
    $sReplace = StringReplace($sFileRead, "\\server\share\test", "\\server\app\test")
    FileClose($fopenread)
    $fopenwrite = FileOpen(@ScriptDir & '\tis\' & $FileNameimage & '.tis', 2)
    If $fopenwrite = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    FileWrite($fopenwrite, $sReplace)
    FileClose($fopenwrite)

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

    EndSwitch

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

    WEnd

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1, $iRetType = 0, $sDelim = '0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CR
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir, $sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles, 1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles, 1)
    EndIf
    EndFunc ;==>_GetFilesFolder_Rekursiv

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

    Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1, $Delim = @CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc ;==>_ShowSubFolders

    [/autoit]

    So? Man muss scheinbar zum lesen/schreiben die Datei auch im entsprechenden Modus öffnen. Wirklich toll find ich das jetzt auch noch nicht, sollte aber vorerst mal funktionieren!

    edit \ Naja was heisst "scheinbar" :D - steht ja ganz dick an erster Stelle in der Hilfe 8o
    Obs ohne 2 Zugriffe auf die Datei geht weiss ich nicht.

  • 4 WICHTIGE Fragen

    • nuts
    • 11. Juli 2009 um 13:30

    Zu Bots solltest du dir mal die Forenregeln durchlesen.

    Ansonsten wäre es hilfreich wenn du genau angibst was du machen willst und dazu deinen bisherigen Code postest.
    So versteht mans echt schlecht!

  • Datei Kopieren und Inhalt der datei ändern

    • nuts
    • 10. Juli 2009 um 21:10
    [autoit]

    $filename = "Hallo"

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

    FileCopy(@ScriptDir & '\tis\test.tis', @ScriptDir & '\tis\' & $filename & '.tis', 1)
    $file = FileOpen(@ScriptDir & '\tis\' & $filename & '.tis', 2)
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $sFileRead = FileRead(@ScriptDir & '\tis\' & $filename & '.tis')

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

    FileWrite(@ScriptDir & '\tis\' & $filename & '.tis', "Geht doch!")

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

    FileClose($file)

    [/autoit]

    Funktioniert doch! Ich würde den Fehler also bei der Variablen $filename suchen.

  • Datei Kopieren und Inhalt der datei ändern

    • nuts
    • 10. Juli 2009 um 15:28

    Ähm ja stimmt - hab hier grad kein Autoit und seh den Fehler nicht :(

  • Datei Kopieren und Inhalt der datei ändern

    • nuts
    • 10. Juli 2009 um 15:14

    Ich würde sagen da stimmt was beim Filecopy nicht. Schau dir den Befehl nochmal genau in der Hilfe an.
    So aus dem Kopf: 1 Para. -> der ganze Pfad zur Datei | 2 Para. -> Der Zielordner

  • GUICtrlCreateIcon mit Ini - Problem

    • nuts
    • 9. Juli 2009 um 14:46
    Zitat von syne

    ok thx für die hilfe nuts:)
    ach so: es sind .exe, weil dann das icon der exe übernommen wird..


    Interessant, wie sieht denn dann das ganze Skript aus?

  • Autoitcode leichter wartbar machen...

    • nuts
    • 9. Juli 2009 um 11:57

    Funktioniert so schon. Nur wo liegt der Sinn?
    Nimm doch für die dynamische Speicheradresse einfach eine Variable.

  • GUICtrlCreateIcon mit Ini - Problem

    • nuts
    • 8. Juli 2009 um 23:11

    Hey,

    hab von deinen Skript leider fast nichts verstanden :wacko:
    Nach deiner Beschreibung hab ich mal was gebastelt und wenn die Datenpfade stimmen (wieso sind das .exe bei dir? ?( ) funktionierts auch.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ; die GUI und die Icons:
    $GUI = GUICreate("", @DesktopWidth, 97, -1, 625)
    GUISetBkColor("0x00BB00", $GUI)
    $left = 32
    $src = IniReadSection(@ScriptDir & "\config.ini", "progs")

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

    For $i = 1 To $src[0][0]
    GUICtrlCreateIcon($src[$i][1], $src[$i][0], $left, 24, 32, 32)
    If @error Then MsgBox(0, "", @error)
    $left += 56
    Next

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

    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    switch $msg
    case $GUI_EVENT_CLOSE
    Exit
    endswitch
    WEnd

    [/autoit]
  • _Array2DInsert Problem

    • nuts
    • 8. Juli 2009 um 13:54

    Kleines Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    Dim $ar2D[5][2]

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

    $ar2D[0][0] = 'Zeile1/Spalte1'
    $ar2D[0][1] = 'Zeile1/Spalte2'

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

    $ar2D[1][0] = 'Zeile2/Spalte1'
    $ar2D[1][1] = 'Zeile2/Spalte2'

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

    $ar2D[2][0] = 'Zeile3/Spalte1'
    $ar2D[2][1] = 'Zeile3/Spalte2'

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

    $ar2D[3][0] = 'Zeile4/Spalte1'
    $ar2D[3][1] = 'Zeile4/Spalte2'

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

    $ar2D[4][0] = 'Zeile5/Spalte1'
    $ar2D[4][1] = 'Zeile5/Spalte2'

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

    _ArrayDisplay($ar2D)

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

    _Array2DInsert($ar2D, 3, "hallo welt|alles klar?")

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

    _ArrayDisplay($ar2D)

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;
    ; Function _Array2DInsert(ByRef $avArray, $iElement [, $sValue=''])
    ;
    ; Description Insert an Array element on a given position
    ; Works with any occurences in 2nd Dimension
    ; Works also with 1D-Array
    ;
    ; Parameter $avArray Given Array
    ; $iElement 0-based Array Index, to insert new Element
    ; optional $sValue Value of new Element, parts must be seperate with '|'
    ;
    ; Return Succes the given Array with new Element
    ; Failure 0 and set @error
    ; @error = 1 given array is not array
    ; @error = 2 given parts of Element too less/much
    ; @error = 3 $iElement larger then Ubound
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Func _Array2DInsert(ByRef $avArray, $iElement, $sValue = '')
    If (Not IsArray($avArray)) Then
    SetError(1)
    Return 0
    EndIf
    Local $UBound2nd = UBound($avArray, 2)
    If @error = 2 Then
    Local $arTMP[UBound($avArray) + 1]
    If $iElement > UBound($avArray) Then
    SetError(3)
    Return 0
    EndIf
    For $i = 0 To UBound($arTMP) - 1
    If $i < $iElement Then
    $arTMP[$i] = $avArray[$i]
    ElseIf $i = $iElement Then
    If $i < UBound($avArray) Then
    $arTMP[$i] = $sValue
    $arTMP[$i + 1] = $avArray[$i]
    Else
    $arTMP[$i] = $sValue
    EndIf
    ElseIf ($i > $iElement) And ($i < UBound($avArray)) Then
    $arTMP[$i + 1] = $avArray[$i]
    EndIf
    Next
    Else
    Local $arTMP[UBound($avArray) + 1][$UBound2nd], $arValue
    If $sValue = '' Then
    For $i = 0 To $UBound2nd - 2
    $sValue &= '|'
    Next
    EndIf
    $arValue = StringSplit($sValue, '|')
    If $arValue[0] <> $UBound2nd Then
    SetError(2)
    Return 0
    EndIf
    If $iElement > UBound($avArray) Then
    SetError(3)
    Return 0
    EndIf
    For $i = 0 To UBound($arTMP) - 1
    If $i < $iElement Then
    For $k = 0 To $UBound2nd - 1
    $arTMP[$i][$k] = $avArray[$i][$k]
    Next
    ElseIf $i = $iElement Then
    If $i < UBound($avArray) Then
    For $k = 0 To $UBound2nd - 1
    $arTMP[$i][$k] = $arValue[$k + 1]
    $arTMP[$i + 1][$k] = $avArray[$i][$k]
    Next
    Else
    For $k = 0 To $UBound2nd - 1
    $arTMP[$i][$k] = $arValue[$k + 1]
    Next
    EndIf
    ElseIf ($i > $iElement) And ($i < UBound($avArray)) Then
    For $k = 0 To $UBound2nd - 1
    $arTMP[$i + 1][$k] = $avArray[$i][$k]
    Next
    EndIf
    Next
    EndIf
    $avArray = $arTMP
    EndFunc ;==>_Array2DInsert

    [/autoit]
  • Script soll "weitermachen"

    • nuts
    • 3. Juli 2009 um 19:58

    So sollte es der Aufgabenstellung entsprechen.

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Datei laden", 301, 89, 185, 188)
    $Input1 = GUICtrlCreateInput("", 40, 32, 121, 21)
    $Input2 = GUICtrlCreateInput("", 40, 60, 121, 21)
    $Button1 = GUICtrlCreateButton("Durchsuchen", 176, 32, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("OK", 176, 60, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($Form2)
    ExitLoop
    Case $Button1
    $Datei = FileOpenDialog("Datei öffnen", @ScriptDir, 'Alle Dateien (*.*)')
    If @error Then ContinueCase
    GUICtrlSetData($Input1, StringLeft($Datei, StringInStr($Datei, '\', 0, -1)))
    GUICtrlSetData($Input2, StringTrimLeft($Datei, StringInStr($Datei, '\', 0, -1)))
    Case $Button2
    GUIDelete($Form2)
    ExitLoop
    EndSwitch
    WEnd

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

    MsgBox(0, "", "hallo")

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

    While True
    Sleep(100)
    WEnd

    [/autoit]
  • Listbox als verwaltung

    • nuts
    • 3. Juli 2009 um 01:11

    Hilft dir das weiter? Steckt eigentlich alles drin, zum umbauen und vereinfachen hab ich heute keine Lust mehr - sorry ;)

    Spoiler anzeigen
    [autoit]


    #include <GuiListBox.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

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

    Local $Ordner = 'C:\Programme'
    Local $TempFile = _TempFile()
    Global $aOrdner
    HotKeySet("{ENTER}", "_Open_Ordner")

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

    RunWait(@ComSpec & " /c " & 'dir "'&$Ordner&'" /ad /b > "'&$TempFile&'"', "", @SW_HIDE)
    _FileReadToArray($TempFile, $aOrdner)
    FileDelete($TempFile)

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

    Opt('GUIOnEventMode', 1)

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

    $gui = GUICreate('Schnelle Ordnerauswahl by funkey', 400, 600, -1, -1)
    GUISetOnEvent(-3, '_Ende')
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    Global $Input = GUICtrlCreateInput('', 10, 10, 380, 20)
    Global $List = GUICtrlCreateList('', 10, 40, 380, 560)
    Global $hList = GUICtrlGetHandle(-1)

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

    For $i = 1 To $aOrdner[0]
    GUICtrlSetData(-1, $aOrdner[$i])
    Next

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

    GUISetState()

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

    While 1
    Sleep(100000)
    WEnd

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

    Func _Check_Eingabe($iwParam)
    switch $iwParam
    case 0x03000003
    _GUICtrlListBox_SetCurSel($hList, _GUICtrlListBox_FindString($hList, GUICtrlRead($Input)))
    EndSwitch
    EndFunc

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

    Func _Open_Ordner()
    If GUICtrlRead($List) <> "" Then ShellExecute($Ordner & '\' & GUICtrlRead($List))
    EndFunc

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

    Func _Ende()
    Exit
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    _Check_Eingabe($iwParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($List) Then $hWndListBox = GUICtrlGetHandle($List)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $List, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK ;hier einfach die Konstante für einen einfachen Klick einsetzen - siehe WindowsConstants.au3
    _Open_Ordner()
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND (Bugfix - http://www.autoit.de)

    [/autoit]
  • RegExp??

    • nuts
    • 1. Juli 2009 um 19:56

    Der Hinweis von Alina ist berechtigt.

    So wird das letzte Item im Listview gelöscht (Leerzeichen wurde auch entfernt).

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <String.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    #Region ### START Koda GUI section ### Form=

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

    $Form1 = GUICreate("AD-Computer", 886, 617, 477, 169)

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

    $ListViewserver = GUICtrlCreateListView("Server", 32, 48, 250, 478)
    $ListView1 = GUICtrlGetHandle($ListViewserver)
    $ListViewclient = GUICtrlCreateListView("Client", 296, 48, 250, 478)
    $ListViewmaschiene = GUICtrlCreateListView("Maschiene", 567, 46, 250, 478)
    $Auslesen = GUICtrlCreateButton("Auslesen", 32, 544, 75, 25, 0)
    $Serverexport = GUICtrlCreateButton("Serverexport", 208, 528, 75, 25, 0)
    $Clientexport = GUICtrlCreateButton("Clientexport", 472, 528, 75, 25, 0)
    $Maschineexport = GUICtrlCreateButton("Maschineexport", 744, 528, 75, 25, 0)
    $Countserver = GUICtrlCreateLabel("Countserver", 216, 24, 61, 17)
    $CountClient = GUICtrlCreateLabel("countclient", 484, 23, 56, 17)
    $Countmaschien = GUICtrlCreateLabel("Countmaschien", 736, 24, 77, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Auslesen
    _Load()
    EndSwitch
    WEnd

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

    Func _Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($ListView1) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
    Local $sItem
    $FileOpenDialog = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    Local $hFile = FileOpen($FileOpenDialog, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($ListView1) ; Listview sperren
    FileReadLine($hFile) ;liest Zeile 1 ein - die solle ja weg bleiben
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; jetzt gehts ab Zeile 2 weiter
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    local $string = StringRegExpReplace($sitem, 'CN=(.+?),OU=.+?,OU=.+?,OU=(.+?),.+DC=com (.+)', '$1,$2,$3') ;Der reguläre Ausdruck von Oscar
    GUICtrlCreateListViewItem($string, $ListViewserver) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($ListView1) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    _GUICtrlListView_DeleteItem($ListView1, _GUICtrlListView_GetItemCount($ListView1)-1)
    EndFunc ;==>_Load

    [/autoit]

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™