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

Beiträge von DerSchatten

  • Listenfeld mittels klick Überschrift sortieren

    • DerSchatten
    • 17. Juni 2016 um 15:29

    Funkt leider nicht.

    C
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIListview.au3>
    
    
    Global $sDBFile = @ScriptDir & '\produkte.txt'
    Global $sHeader = 'Produkt-Bezeichnung|Produkt-ID|Version|Dat.Inst.|Lokation'
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $bSortSense = False
    
    
    $Form1 = GUICreate("Installierte Produkte - Windows 7 32bit", 965, 250)
    
    
    Global $idListView = GUICtrlCreateListView($sHeader, 0, 0, 965, 250)
    Global $hListView = GUICtrlGetHandle($idListView)
    
    
    _GUICtrlListView_SetColumnWidth($idListView, 0, 330)
    _GUICtrlListView_SetColumnWidth($idListView, 1, 50)
    _GUICtrlListView_SetColumnWidth($idListView, 2, 50)
    _GUICtrlListView_SetColumnWidth($idListView, 3, 50)
    _GUICtrlListView_SetColumnWidth($idListView, 4, 400)
    
    
    _GUICtrlListView_RegisterSortCallBack($idListView)
    
    
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")
    
    
    If FileExists($sDBFile) Then Load()
    
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
    
    
    		Case $idListView
    			Switch $iCode
    				Case $LVN_COLUMNCLICK ; A column was clicked
    				_GUICtrlListView_SimpleSort($hWndListView, $g_bSortSense, DllStructGetData($tNMHDR, "SubItem"))
    			EndSwitch
    
    
       EndSwitch
    WEnd
    
    
    Func Load()
    	Local $hFile, $sContent, $aNewItems
    	$hFile = FileOpen($sDBFile, 0)
    	If $hFile <> -1 Then
    		$sContent = FileRead($hFile)
    		FileClose($hFile) ; Datei schließen
    		$sContent = StringTrimRight($sContent, 2)
    		$aNewItems = StringSplit($sContent, @CRLF, 1)
    		If Not IsArray($aNewItems) Then Return
    		_GUICtrlListView_BeginUpdate($hListView)
    		For $i = 1 To $aNewItems[0]
    			GUICtrlCreateListViewItem($aNewItems[$i], $idListView)
    		Next
    		_GUICtrlListView_EndUpdate($hListView)
    	EndIf
    EndFunc
    
    
    Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    	#forceref $hWnd, $iMsg, $wParam
    	Local $tNMHDR = DllStructCreate($tagNMLISTVIEW, $lParam)
    	Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    	Local $iCode = DllStructGetData($tNMHDR, "Code")
    	Static Local $g_bSortSense = True
    	If (_WinAPI_GetClassName($hWndFrom) = "SysListView32") and ($iCode = $LVN_COLUMNCLICK) Then
    		_GUICtrlListView_SimpleSort($hWndFrom, $g_bSortSense, DllStructGetData($tNMHDR, "SubItem"))
    	EndIf
    	Return $GUI_RUNDEFMSG
    EndFunc
    Alles anzeigen

    Line 35

    Switch $iCode
    Switch ^ ERROR

    Error: Variable used without being declared

  • Listenfeld mittels klick Überschrift sortieren

    • DerSchatten
    • 17. Juni 2016 um 14:22

    geht das nicht einfacher?

  • Listenfeld mittels klick Überschrift sortieren

    • DerSchatten
    • 17. Juni 2016 um 11:28

    Ich möchte gerne ein Listenfeld mittels den Spaltenüberschriften sortieren.

    Dazu habe ich die Funktion _GUICtrlListView_SimpleSort gefunden: https://www.autoitscript.com/autoit3/docs/l…_SimpleSort.htm

    Wäre diese Funktion: _WM_NOTIFY genau das?
    Mir ist nur nicht ganz klar wie die aufgerufen wird?

  • ControlSend auf Pulldown-Feld

    • DerSchatten
    • 20. Mai 2016 um 15:50
    Code
    Local $anmeldungbhagneu = WinWaitActive("Helpdesk Anmeldung", "", 10)
    ControlCommand ($anmeldungbhagneu, "", "[CLASS:WindowsForms10.COMBOBOX.app.0.1d22306_r12_ad1; INSTANCE:1]", "SelectString", $serverbhagneu)

    Mit ControlCommand reagiert das Feld leider überhaupt nicht.

  • ControlSend auf Pulldown-Feld

    • DerSchatten
    • 19. Mai 2016 um 13:18

    Ich versuche gerade mittels ControlSend ein PullDown Menü zu "befüllen"

    Allerdings haut das nicht ganz hin.
    Beim Starten wird zwar auf den korrekten Eintrag gewechselt (so hat es zumindest den Anschein), wird jedoch sofort wieder auf den Ursprungswert zurückgestellt.

    Code
    Local $programmbhagneu = WinWaitActive("Test", "", 10)
    ControlSend($programmbhagneu, "", "[CLASS:WindowsForms10.COMBOBOX.app.0.1d22306_r12_ad1; INSTANCE:1]", $serverbhagneu)

    Ich vermute mal die Anwendung hat sich die letzte Einstellung gemerkt und beharrt darauf diese auch beizubehalten bis nicht direkt auf das Feld geklickt wird.

    Gibt's da vielleicht einen anderen Weg um den Eintrag zu wählen? Es wird nur zwischen zwei Einträgen in dem Menü gewechselt.

  • FileCopy zu Windows Verzeichnis

    • DerSchatten
    • 25. März 2015 um 14:13

    Folgendes Problem:

    Ich möchte gerne Dateien von einem Netzwerk in ein lokales Verzeichnis in C:\Programme kopieren.
    Das ganze betrifft ein Firmennetzwerk.

    Der besagte Benutzer besitzt Administratorrechte.
    Wenn ich nun versuche die Datei direkt von dem netzlaufwerk in den ordner zu kopieren erhalte ich die Fehlermeldung das die gesuchte resource nicht verfügbar ist.
    Ok, denke ich mir liegt an irgendwelchen Rechten.

    Nun kann ich die Datei über Umwege (zuerst nach C: Temp und anschließend nach C:Programme verschieben. das funktioniert auch, allerdings erscheint dazwischen der Hinweis, das dafür Administrator Berechtigungen erforderlich sind und man mittels der Schaltfläche "Fortsetzen" bestätigen soll. Dann ist die Datei kopiert.

    Wenn ich das nun mittels FileCopy versuche landet die Datei im TEMP-Verzeichnis, aber nicht mehr weiter im Programme Ordner.
    Ich vermute mal das liegt daran weil hier auf eine Bestätigung gewartet wird. Diese wird aber nicht angezeigt bei einem FileCopy.

    Was kann ich da tun?

    Wenn ich dem Script ein #RequireAdmin hinzufüge, erhalten die Dateien nach dem kopieren ein Schloss im Symbol. Das sollte nicht sein.

    Code
    #Include <File.au3>
    #Include <Array.au3>
    
    
    #RequireAdmin
    $pfadsrc = "T:\SC\Softphone neu\MTM\NgASP\"
    $pfaddst = "C:\Program Files\MTM\NgASP\"
    
    
    Local $datei[3]
    $datei[0] = "AgentSoftPhone.Config.ini"
    $datei[1] = "AgentSoftPhone.exe"
    $datei[2] = "UniLib.dll"
    
    
    While 1
     If FileExists($pfaddst) Then
      If FileGetSize ($pfadsrc & $datei[1] <> FileGetSize ($pfaddst & $datei[1])) Or FileGetTime ($pfadsrc & $datei[1],0,1) <> FileGetTime ($pfaddst & $datei[1],0,1) Then
       If WinExists ("AgentSoftPhone") Then
        $hinweis1 = msgbox (49, "Fehler!", "Bitte SoftPhone beenden und 'OK' klicken!")
        If $hinweis1 == 2 Then Exit
       Else
        For $i = 0 To UBound($datei) -1
         FileCopy ($pfadsrc & $datei[$i], @TempDir, $FC_OVERWRITE)
         FileMove (@TempDir & "\" & $datei[$i], $pfaddst, $FC_OVERWRITE)
        Next
        $hinweis2 = msgbox (65, "Hinweis!", "SoftPhone wurde aktuallisiert!" & @CRLF & "'OK' klicken um SoftPhone zu starten.")
        If $hinweis2 == 1 Then Run($pfaddst & $datei[1])
        Exit
       EndIf
      Else
       msgbox (64, "Hinweis!", "SoftPhone ist aktuell!")
       Exit
      EndIf
     Else
      msgbox (48, "Fehler!", "Verzeichnis '" & $pfaddst & "' konnte nicht gefunden werden!")
     EndIf
    WEnd
    Alles anzeigen
  • GUI sperren/entsperren wärend MSGBOX

    • DerSchatten
    • 11. Februar 2015 um 23:21

    Ich möchte gerne das wärend eine MSGbox angezeigt wird das HauptGUI nicht anklickbar ist. So wie es auch in den meisten Anwendungen ist wenn ein Dialog eingeblendet wird.

    Das habe ich so gelöst:

    Code
    GUISetState(@SW_DISABLE)
    msgbox(48, "Fehler!", "Kennwort falsch!")
    GUISetState(@SW_ENABLE)

    Wenn das GUI allerdings wieder ENABLED wird verschwindet es in den Desktophintergrund. Das ist natürlich nicht so schön.

    Was könnte man da tun das es im Vordergrund bleibt? (Allerdings nicht fixiert im Vordergrund)

  • freien laufwerksbuchstaben ermitteln

    • DerSchatten
    • 10. Februar 2015 um 21:09

    Und wenn es nicht gefunden wird?
    Dann läuft es ewig, oder?

    Oder checkt er nur ein mal alle vorhandenen verbundenen Laufwerke durch?

    Ich habe das jetzt so versucht:

    Code
    Func _getDriveLabel()
     $searchName = "PRIVAT"
     $aDrives = DriveGetDrive("All")
     For $i = 1 to $aDrives[0]
      If DriveGetLabel($aDrives[$i])= $searchName Then
       ExitLoop
      EndIf
     Next
     Return StringUpper($aDrives[$i])
    EndFunc

    wenn das Laufwerk vohanden ist funktioniert es. Aber wenn nicht bricht das Script ab.

  • freien laufwerksbuchstaben ermitteln

    • DerSchatten
    • 10. Februar 2015 um 20:22

    Super, danke dir.
    Die Schleife läuft aber auch wenn das Laufwerk gefunden wurde endlos weiter, oder?

    Läßt sich das ganze auch in eine Funktion packen?
    Damit ich damit Abfragen kann.

  • freien laufwerksbuchstaben ermitteln

    • DerSchatten
    • 10. Februar 2015 um 19:20

    Kann mit dabei jemand helfen?
    Das besagte Laufwerk nennt sich PRIVAT

  • ControlClick auf Text in Listenfeld

    • DerSchatten
    • 10. Februar 2015 um 14:56

    Ich bräuchte mal eure Hilfe.

    Und zwar möchte ich eine Anwendung starten und mittels ControlClick-Anweisung dort in einem TreeView eine Auswahl (Text) anklicken.
    Dieser besagte Text scheint allerdings nur als Visible Text auf.

    Gibt es da eine Möglichkeit irgendwie hinzukommen.

    Hier mal ein Auszug von Window Info:

    Spoiler anzeigen


    >>>> Window <<<<
    Title: Active Directory Explorer - Sysinternals: https://autoit.de/www.sysinternals.com
    Class: Active Directory Explorer Main
    Position: -1286, 261
    Size: 565, 504
    Style: 0x94CF085C
    ExStyle: 0x00010100
    Handle: 0x000D12F0

    >>>> Control <<<<
    Class: SysTreeView32
    Instance: 1
    ClassnameNN: SysTreeView321
    Name:
    Advanced (Class): [CLASS:SysTreeView32; INSTANCE:1]
    ID: 1002
    Text: Tree1
    Position: 0, 60
    Size: 245, 363
    ControlClick Coords: 18, 27
    Style: 0x5001102B
    ExStyle: 0x00000204
    Handle: 0x003F1862

    >>>> Mouse <<<<
    Position: -1260, 398
    Cursor ID: 0
    Color: 0xFFFFFF

    >>>> StatusBar <<<<
    1: NAC P

    >>>> ToolsBar <<<<

    >>>> Visible Text <<<<
    Tree1
    List1
    NAC P
    Path:
    NAC P

    >>>> Hidden Text <<<<

    dabei geht es exakt um den Eintrag "NAC P"

    Soweit bin ich schon gekommen:

    Code
    Run ("ADExplorer.exe", "")
    Local $hWnd = WinWait("Active Directory Explorer - Sysinternals: www.sysinternals.com")
    Send ("{DOWN}{DOWN}")
    ControlClick ($hWnd, "", "[CLASSNN:SysTreeView321;Text:NAC P]")
    ControlClick ($hWnd, "", "[CLASSNN:SysTreeView321;Text:NAC P]")

    Leider läßt sich diese Auswahl weder mit RETURN noch mit einer anderen Taste auswählen. Es funktioniert nur ein Doppelklick.

    Im Anhang noch einen Screenshot dazu.

  • freien laufwerksbuchstaben ermitteln

    • DerSchatten
    • 4. Februar 2015 um 23:55

    Könnte man jetzt trotzdem noch irgendwie prüfen ob ein Laufwerk existiert mit einem Bestimmten Namen?
    Ich möchte gerne wenn ich das AutoIt Programm geschlossen habe und erneut öffne, prüfen ob dieses Laufwerk bereits verbunden ist.

  • freien laufwerksbuchstaben ermitteln

    • DerSchatten
    • 4. Februar 2015 um 23:30

    Super, danke!

  • freien laufwerksbuchstaben ermitteln

    • DerSchatten
    • 4. Februar 2015 um 21:23

    Wie kann ich mit Autoit den ersten freien Laufwerksbuchstaben ermitteln?

    Oder falls das nicht so einfach möglich ist, kann ich abfragen welchen Laufwerksbuchstaben ein Medium mit einem bestimmten Namen hat?

  • mehrere Verzeichnisse löschen

    • DerSchatten
    • 23. Juni 2013 um 16:22

    Auweia... Naja, man wird alt :)
    Das mit den Zeichen hab ich nun so gelöst: Local $Verzeichnis = _FileListToArray($Pfad, '2013-?????', 2)

    Sollte hinhaun, oder?

  • mehrere Verzeichnisse löschen

    • DerSchatten
    • 23. Juni 2013 um 15:33

    Ich suche eine Möglichkeit mehrere Verzeichnisse in einem Unterverzeichnis zu löschen.

    Dabei bin ich so vorgegangen:

    Code
    #include <Array.au3> 
    #Include <File.au3>
    
    
    Local $Pfad = "F:\Pictures\test\" 
    Local $Verzeichnis = _FileListToArray($Pfad, '2013-*', 2)
    
    
    ;MsgBox(0, 0, _ArrayDisplay($Verzeichnis))
    
    
    For $i = 0 To UBound($Verzeichnis) - 1 
    DirRemove($Verzeichnis[$i], 1) 
    Next
    Alles anzeigen

    Irgendwas passt da aber nicht.
    ArrayDisplay zeigt mir jedoch alle Verzeichnisse an.

    Un noch eine Frage, wie gebe ich an das nur Verzeichnisse gefunden werden die mit 2013- beginnen und exakt 10 Zeichen lang sind?

  • 100 Dateien aus ordner veschieben

    • DerSchatten
    • 10. Mai 2012 um 12:10

    Habe jetzt mal versucht ob ich es selbst hinbekommen und bin soweit zufrieden damit.

    Jetzt habe ich nur ein kleines Problem das er mir trotz DirRemove den ausgewählten Ordner nicht löscht.

    Hat jemand eine Idee wo da der Fehler liegt?

    [autoit]


    Global $quelle= FileSelectFolder("", "D:\DATEN\download") & "\"
    If $quelle = "" Then Exit
    $ziel = "D:\DATEN\download\test\"
    $suche = FileFindFirstFile($quelle & "*.*")
    $a = 0
    $c = 0
    If $suche = -1 Then
    Exit
    EndIf
    While 1
    $a += 1
    DirCreate($ziel & $a)
    If @error Or $a > 19 Then ExitLoop
    For $c = 1 To 100
    $datei = FileFindNextFile($suche)
    If not @extended Then
    FileMove($quelle & $datei, $ziel & $a & "\" & $datei)
    EndIf
    Next
    WEnd
    msgbox(1, "test", $quelle)
    DirRemove($quelle, 1)
    FileClose($suche)

    [/autoit]
  • 100 Dateien aus ordner veschieben

    • DerSchatten
    • 9. Mai 2012 um 11:24

    Hm, da passt noche etwas nicht.

    Der erste erstellte Ordner beinhaltet nur 99 Dateien.

    Und die Ordner sollten mit 1 beginnen.

  • 100 Dateien aus ordner veschieben

    • DerSchatten
    • 26. April 2012 um 09:58

    Ok, das mit den strings sollte ich hinbekommen.

    Aber inwiefern hilft mir @extended hier weiter?

  • 100 Dateien aus ordner veschieben

    • DerSchatten
    • 25. April 2012 um 14:51

    Ich habs jetzt soweit hinbekommen:

    [autoit]


    $quelle = "D:\DATEN\download\0-9\"
    $ziel = "D:\DATEN\download\test\"
    $suche = FileFindFirstFile($quelle & "*.*")
    $a = 0
    $c = 0
    If $suche = -1 Then
    Exit
    EndIf
    While 1
    $a += 1
    DirCreate($ziel & $a)
    If @error Or $a > 9 Then ExitLoop
    For $c = 1 To 100
    $datei = FileFindNextFile($suche)
    If not @extended Then
    FileMove($quelle & $datei, $ziel & $a & "\" & $datei)
    EndIf
    Next
    WEnd
    FileClose($suche)

    [/autoit]

    Jetzt hätte ich gern noch folgendes:

    .) Es sollen nur soviele Ordner erstellt werden wie nötigt.
    .) Die Ordner sollen mit führender Null 2-Stellig erstellt werden.

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™