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

Beiträge von Camulus

  • Kleines Backup-Tool

    • Camulus
    • 30. August 2017 um 10:05

    Es ist fertig...vorerst.
    Vielleicht kannst du das oder Teile davon brauchen.

    https://autoit.de/index.php/Thread/85458-Backup-Tool-chen/

  • Backup Tool(chen)

    • Camulus
    • 30. August 2017 um 10:03

    Hallo,

    da es dieses Tool ohne eure Hilfe vermutlich nicht in dieser Form gäbe, oder zumindest noch nicht teile ich das Ergebnis mit euch.
    Ursprünglich war es für größere Client (Notebook)- Rollouts gedacht um das Userprofil zu sichern und auf dem neuen Notebook wieder herzustellen.

    Mit der Zeit kamen neue Pfade dazu und damit man das nicht immer neu kompilieren muss wuchs die Idee alles dynamisch zu machen mit einer ini.
    Das klappt auch soweit ganz gut und hilft bei Rollouts schon.

    Also wer sowas brauchen kann hier ist es.

    Danke für eure Unterstützung.

    Dateien

    Backup_Restore.zip 1,04 MB – 532 Downloads
  • Kleines Backup-Tool

    • Camulus
    • 28. August 2017 um 20:30

    Hilft dir das?
    https://autoit.de/index.php/Thre…4681#post684681

  • Backup mit 7zip Datei und verzeichnis unterscheiden

    • Camulus
    • 28. August 2017 um 16:32

    Ah ist schon raus das zusätzliche String... dann versuch ich mal mein Glück

  • Backup mit 7zip Datei und verzeichnis unterscheiden

    • Camulus
    • 28. August 2017 um 16:18

    Ok...jetzt habt ihr mich abgehängt.

    Wie sollte es dann aussehen?

  • Backup mit 7zip Datei und verzeichnis unterscheiden

    • Camulus
    • 28. August 2017 um 13:45

    Hallo,

    ich hab ein kleines Tool dass dazu gedacht ist Userprofile zu sichern und auf anderen Geräten wieder herzustellen. Das war auch recht lange im Einsatz aber es kamen immer wieder mal welche dazu, andere weg usw.
    also war die Idee das alles dynamisch zu machen und die zu sichernden Dateien/ Verzeichnisse in einer ini-Datei zu schreiben und da auszulesen.

    Jetzt habe ich aber glaube ich das Problem dass ich nicht zwischen Dateien und Verzeichnissen unterscheiden kann.
    Die Idee war von rechts alles bis zum \ abzuschneiden um das Restore Verzeichnis der jeweiligen Datei zu ermitteln, aber das geht ja dann auch nicht weil ich dann auch die Zielverzeichnisse von den wiederherzustellenden Verzeichnissen abschneide.

    Hat jemand eine zündende Idee?

    Das Script:

    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=backup.ico
    #AutoIt3Wrapper_Outfile=Backup_Restore.exe
    #AutoIt3Wrapper_Res_Description=Backup und Restore Tool
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    
    
    DirCreate(@Scriptdir &"\Data\")
    FileInstall("backup.jpg",@Scriptdir &"\Data\backup.jpg",1)
    FileInstall("backup.ico",@Scriptdir &"\Data\backup.ico",1)
    FileInstall("7za.exe",@Scriptdir &"\7za.exe",1)
    
    
    
    
    #Region ### START Koda GUI section ### Form=c:\autoit\backup restore\backup_restore.kxf
    $Form1_1 = GUICreate("Client Backup", 515, 301, 268, 172,BitOR($WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_POPUP))
    
    
    GUISetBkColor(0xFFFFFF)
    GUISetIcon(@ScriptDir &"\Data\backup.ico", -1)
    $Pic1 = GUICtrlCreatePic(@ScriptDir &"\Data\backup.jpg", 400, 10, 100, 80)
    $btnBackup = GUICtrlCreateButton("Backup", 16, 255, 125, 40, $BS_NOTIFY)
    GUICtrlSetState($btnBackup,$GUI_DISABLE)
    GUICtrlSetFont(-1, 11, 800, 0, "Arial")
    $btnRestore = GUICtrlCreateButton("Restore", 374, 255, 125, 40, $BS_NOTIFY)
    GUICtrlSetState($btnRestore,$GUI_DISABLE)
    GUICtrlSetFont(-1, 11, 800, 0, "Arial")
    $Edit1 = GUICtrlCreateEdit("", 16, 112, 480, 121, $ES_READONLY)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    GUICtrlSetData(-1, StringFormat("Um Backups zu erstellen muss durch das Häkchen unten bestätigt werden dass \r\ndie ini- Datei (backup_restore.ini), im Programmverzeichnis dieses Tools, korrekt \r\nist oder entsprechend angepasst wurde.\r\nWie diese Datei zu editieren ist, ist durch Kommentare in der ini-Datei erklärt.\r\n\r\nDas Zielverzeichnis ist ist Standardmäßig er Programmpfad dieses Tools, kann \r\naber ebenfalls in der ini-Datei angepasst werden.\r\n"))
    $Label1 = GUICtrlCreateLabel("Backup- Restore- Tool", 16, 16, 314, 38, $SS_CENTER)
    GUICtrlSetFont(-1, 22, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0x000000)
    $chk_ini = GUICtrlCreateCheckbox("*.ini Datei korrekt/angepasst.", 168, 255, 180, 17)
    GUICtrlSetFont(-1, 10, 450, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF0000)
    $Label2 = GUICtrlCreateLabel("Infrastruktur-Edition  :o)", 16, 64, 152, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    $Label3 = GUICtrlCreateLabel("Abbrechen oder schliessen mit [ESC]", 168, 280, 178, 17)
    GUICtrlSetState($Label3, $GUI_DISABLE )
    $Progress1 = GUICtrlCreateProgress(16, 234, 480, 17)
    GUICtrlSetState($Progress1, $GUI_HIDE )
    $btn_delete = GUICtrlCreateButton("Backup Dateien löschen und beenden", 16, 255, 483, 45)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetState($btn_delete, $GUI_HIDE )
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    #EndRegion ### END Koda GUI section ###
    
    
    If Not FileExists(@ScriptDir &"\backup_restore.ini") Then
    	MsgBox (16, "ini-Datei nicht gefunden", "backup_restore.ini wurde nicht gefunden, Programm wird beendet!")
    	Exit
    EndIf
    
    
    
    
    Global $qArray = IniReadSection(@ScriptDir &"\backup_restore.ini", "Quellen")
    Global $z_Array = IniReadSection(@ScriptDir &"\backup_restore.ini", "Ziel")
    
    
    
    
    $Elemente=UBound($qArray)
    $xtel = 100/$Elemente
    
    
    
    
    Global $Zielverzeichnis = ($z_Array[1][1] )
    
    
     If $Zielverzeichnis = "@ScriptDir" Then
    	$Zielverzeichnis= StringReplace($Zielverzeichnis,"@ScriptDir",@ScriptDir)
    	$Zielverzeichnis= ($Zielverzeichnis &"Backup\")
    	MsgBox(0,"$Zielverzeichnis",$Zielverzeichnis)
    EndIf
    
    
    If FileExists($Zielverzeichnis) Then
    		GUICtrlSetState($btnRestore,$GUI_ENABLE)
    		GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\nBackup in Zielverzeichnis vorhanden. Restore möglich."))
    EndIf
    
    
    
    
    
    
    HotKeySet("{ESC}", "_Terminate")
    
    
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    	Case $GUI_EVENT_CLOSE
    
    
    	Case $chk_ini
    		GUICtrlSetState($btnBackup,$GUI_ENABLE)
    		GUICtrlSetState($btnRestore,$GUI_ENABLE)
    		GUICtrlSetState($chk_ini,$GUI_DISABLE)
    		GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\nJetzt kann es los gehen :)"))
    
    
    
    
    	Case $btnBackup
    		_Backup()
    
    
    	Case $btnRestore
    		_Restore()
    
    
    	Case $btn_delete
    		DirRemove($Zielverzeichnis,1)
    		GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\nBackup Dateien gelöscht."))
    		Sleep(1000)
    		Exit
    
    
    EndSwitch
    WEnd
    
    
    
    
    
    
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    Func _Backup()
    
    
    			GUICtrlSetState($btnBackup,$GUI_DISABLE)
    			GUICtrlSetState($btnRestore,$GUI_DISABLE)
    			GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\nBitte warten,\r\nBackup wird erstellt."))
    
    
    
    
    $fortschritt = 0
    
    
    	For $i = 1 To $qArray[0][0]
    
    
    				$a_Quelle = ($qArray[$i][1])
    				$Quellverzeichnis = StringReplace($a_Quelle, "*Userprofil*", @UserProfileDir)
    				$Quell_Laufwerk = StringLeft($Quellverzeichnis,3)
    				$Quell_Buchstabe = StringLeft($Quellverzeichnis,1)
    
    
    
    
    				$ZielShare = StringReplace($Quellverzeichnis, ":", "")
    				$strZiel = ( $Zielverzeichnis  & $ZielShare)
    				$Ziel = StringReplace($strZiel, "*Userprofil*", @UserProfileDir)
    				Sleep(1000)
    
    
    
    
    				$fortschritt = $fortschritt + $xtel
    				GUICtrlSetState($Progress1, $GUI_SHOW)
    				GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\n" & $Quellverzeichnis & " wird gesichert."))
    				GUICtrlSetData($Progress1, ($fortschritt))
    
    
    ;~ 				$Str = ("String: " & @ScriptDir &"\"& "7za.exe a  -tzip " &'"'& $Ziel & ".zip"&'"' & " "  &'"'& $Quellverzeichnis &"\*" &'"')
    
    
    				RunWait		(@ScriptDir &"\"& "7za.exe a  -tzip " &'"'& $Ziel & ".zip"&'"' & " "  &'"'& $Quellverzeichnis &"*" &'"',"",@SW_HIDE)
    
    
    	Next
    				GUICtrlSetData($Progress1, 100)
    				Sleep(500)
    				GUICtrlSetColor($Edit1, 0x008000)
    				FileWrite($Zielverzeichnis & "UserProfileDir.txt",@UserProfileDir)
    				GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\nBackup abgeschlossen.\r\n\r\nSchließen mit [ESC]"))
    
    
    	;~ 		GUICtrlSetState($btnBackup,$GUI_ENABLE)
    			GUICtrlSetState($btnRestore,$GUI_ENABLE)
    
    
    EndFunc
    
    
    
    
    
    
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _Restore()
    
    
    			GUICtrlSetState($btnBackup,$GUI_DISABLE)
    			GUICtrlSetState($btnRestore,$GUI_DISABLE)
    			GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\nBitte warten,\r\nRestore wird durchgeführt."))
    
    
    
    
    $fortschritt = 0
    
    
    	For $i = 1 To $qArray[0][0]
    
    
    
    
                    $Backup_pfad= FileRead($Zielverzeichnis & "UserProfileDir.txt")
    
    
    				$a_Quelle = ($qArray[$i][1])
    				$Quellverzeichnis = StringReplace($a_Quelle, "*Userprofil*", $Backup_pfad)
    				$Quell_Buchstabe = StringLeft($Quellverzeichnis,1)
    
    
    				$ZielShare = StringReplace($Quellverzeichnis, ":", "")
    				$Restore_Pfad = StringLeft($Quellverzeichnis,StringInStr($Quellverzeichnis,'\',0,-1))
    				MsgBox(0,"$Restore_Pfad",$Restore_Pfad)
    				$strZiel = ( $Zielverzeichnis & $ZielShare)
    ;~ 				MsgBox(0,"$strZiel",$Zielverzeichnis &"|"& $ZielShare)
    				$Ziel = StringReplace($strZiel, "*Userprofil*", @UserProfileDir)
    				MsgBox(0,"$Ziel",$Ziel)
    
    
    
    
    					Sleep(500)
    					$fortschritt = $fortschritt + $xtel
    					GUICtrlSetState($Progress1, $GUI_SHOW)
    
    
    					$Restore_Str = (@ScriptDir &"7za.exe x " & $Ziel & ".zip" & " "  &"-aoa -o"&'"'&$Restore_Pfad&'"')
    
    
    MsgBox(0,"restore_String", $Restore_Str)
    
    
    					GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\n" & $Quellverzeichnis & " wird wiederhergestellt."))
    					GUICtrlSetData($Progress1, ($fortschritt))
    					RunWait		(@ScriptDir &"\7za.exe x " &'"'& $Ziel &'"'& ".zip" & " "  &"-aoa -o"&'"'&$Restore_Pfad&'"',"",@SW_HIDE )
    
    
    
    
    	Next
    				GUICtrlSetData($Progress1, 100)
    				Sleep(500)
    
    
    				GUICtrlSetColor($Edit1, 0x008000)
    				GUICtrlSetData($Edit1, StringFormat("\r\n\r\n\r\nRestore abgeschlossen."))
    
    
    
    
    
    
    			GUICtrlSetState($btnBackup,$GUI_HIDE)
    			GUICtrlSetState($btnRestore,$GUI_HIDE)
    			GUICtrlSetState($Label3,$GUI_HIDE)
    			GUICtrlSetState($chk_ini,$GUI_HIDE)
    			GUICtrlSetState($btn_delete,$GUI_SHOW )
    
    
    
    
    EndFunc
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Exitus
    Func _Terminate()
        Exit 0
    EndFunc   ;==>_Terminate
    Alles anzeigen


    Die ini Datei

    Code
    #----------------------------------------------------------------------------------------------------------------------
    #		In dieser Datei werden die zu sichernden Pfade festgelegt die mit dem Backup_restore- Tool gesichert werden sollen
    #----------------------------------------------------------------------------------------------------------------------
    
    
    
    
    
    
    #----------------------------------------------------------------------------------------------------------------------
    #		Quellen
    #----------------------------------------------------------------------------------------------------------------------
    
    
    [Quellen]
    
    
    #----------------------------------------------------------------------------------------------------------------------
    #	OHNE abschliessendem Backslash \
    #	in ini Dateien gibt es keine Systemvariablen!
    # 	Ordner im Userprofil bitte so angeben: *Userprofil*\Desktop 
    #----------------------------------------------------------------------------------------------------------------------
    1=*Userprofil*\Pictures
    2=*Userprofil*\Desktop
    3=*Userprofil*\Documents
    4=*Userprofil*\Favorites
    5=*Userprofil*\Contacts
    6=*Userprofil*\Searches
    7=*Userprofil*\AppData\Roaming\Microsoft\Signatures
    8=*Userprofil*\AppData\Roaming\Avaya
    9=*Userprofil*\AppData\Roaming\Microsoft\Templates
    10=*Userprofil*\AppData\Roaming\Microsoft\Outlook
    11=*Userprofil*\AppData\Roaming\Microsoft\Document Building Blocks
    12=*Userprofil*\AppData\Roaming\Microsoft\Sticky Notes
    13=*Userprofil*\AppData\Roaming\Mozilla\Firefox\Profiles
    14=C:\Program Files (x86)\System\-Analyser.mdb
    15=C:\Program Files (x86)\System\Dokumente
    
    
    
    
    #----------------------------------------------------------------------------------------------------------------------
    #		Ziel
    #----------------------------------------------------------------------------------------------------------------------
    [Ziel]
    #----------------------------------------------------------------------------------------------------------------------
    #	OHNE abschliessendem Backslash \
    #	Standardwert ist @ScriptDir, also das Verzeichnis in dem die Backup_restore.exe liegt (USB-Stick o.ä.)
    #----------------------------------------------------------------------------------------------------------------------
    1=@ScriptDir
    Alles anzeigen


    Vermutlich gibt es ne einfache Lösung auf die ich nur nicht komme :whistling:

  • Ideen für dynamisches Nippelboard

    • Camulus
    • 21. März 2017 um 13:12

    Danke das ist tatsächlich leichter einzubauen.

    Das wird ein laaaanges Projekt glaub ich :D

  • Ideen für dynamisches Nippelboard

    • Camulus
    • 21. März 2017 um 11:25

    ;(:S
    Danke ich versuch mal mein Glück :thumbup:

    Wenn ich vollends verwirrt bin melde ich mich :whistling:

  • Ideen für dynamisches Nippelboard

    • Camulus
    • 21. März 2017 um 10:36

    So weiter im text. Also ListView ist das was ich wollte, Danke.
    Schritt zwei wäre die Items zu editieren.
    Ich habe auch von Melba die UDF gefunden. Aber in dem beispiel: GLVEx_Example_3.au3

    passiert eigentlich das was ich mir vorstelle, man kann er Doppelklick in ein Item und es dann bearbeiten.
    Idealerweise geht dann nachher eine GUI auf in der man die Tastekombination eingibt+ Ausgabegerät aber eins nach dem anderen;)

    Das Example von Melba:

    Spoiler anzeigen
    C
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    
    
    #include "GUIListViewEx.au3"
    
    
    Global $iCount_Left = 1, $iCount_Right = 1, $vData, $aRet, $iEditMode = 23
    
    
    ; Create GUI
    $hGUI = GUICreate("LVEx Example 3", 640, 430)
    
    
    ; Create Left ListView
    GUICtrlCreateLabel("Native ListView", 10, 5, 300, 35)
    $cListView_Left = GUICtrlCreateListView("Tom|Dick|Harry", 10, 40, 300, 300, $LVS_SINGLESEL)
    _GUICtrlListView_SetExtendedListViewStyle($cListView_Left, $LVS_EX_FULLROWSELECT)
    _GUICtrlListView_SetColumnWidth($cListView_Left, 0, 93)
    _GUICtrlListView_SetColumnWidth($cListView_Left, 1, 93)
    _GUICtrlListView_SetColumnWidth($cListView_Left, 2, 93)
    _GUICtrlListView_SetInsertMarkColor($cListView_Left, 0)
    
    
    ; Fill ListView with empty items
    For $i = 1 To 20
    	GUICtrlCreateListViewItem("||", $cListView_Left)
    Next
    ; Create array
    $aLV_List_Left = _GUIListViewEx_ReadToArray($cListView_Left, 1) ; Note count element
    
    
    ; Initiate GLVEx - no array passed - count parameter set - default insert mark colour (black) - drag image
    $iLV_Left_Index = _GUIListViewEx_Init($cListView_Left, $aLV_List_Left, 1, 0, True)
    ; All columns editable
    _GUIListViewEx_SetEditStatus($iLV_Left_Index, "*")
    
    
    ; Create Right ListView
    GUICtrlCreateLabel("UDF ListView", 430, 5, 300, 35)
    $hListView_Right = _GUICtrlListView_Create($hGUI, "Peter", 430, 40, 200, 300, BitOR($LVS_DEFAULT, $WS_BORDER))
    _GUICtrlListView_SetExtendedListViewStyle($hListView_Right, $LVS_EX_FULLROWSELECT)
    _GUICtrlListView_SetColumnWidth($hListView_Right, 0, 179)
    _GUICtrlListView_SetInsertMarkColor($hListView_Right, 0)
    
    
    ; Initiate GLVEx - no array passed - no count parameter - default insert mark colour (black) - no drag image
    $iLV_Right_Index = _GUIListViewEx_Init($hListView_Right)
    
    
    ; Create Edit Mode Combos
    GUICtrlCreateLabel("Edit Modes", 330, 50, 60, 20)
    GUICtrlCreateLabel("0" & @CRLF & "1" & @CRLF & "2" & @CRLF & "3", 330, 70, 10, 80)
    GUICtrlCreateLabel(":  Single Edit" & @CRLF & ":  Exit Edge" & @CRLF & ":  Stay Edge" & @CRLF & ":  Loop Edge", 340, 70, 65, 80)
    GUICtrlCreateLabel("Row Mode", 330, 140, 60, 20)
    $cCombo_Row = GUICtrlCreateCombo("", 330, 160, 75, 20, 0x3) ; $CBS_DROPDOWNLIST
    GUICtrlSetData($cCombo_Row, "0|1|2|3", 2)
    GUICtrlCreateLabel("Col Mode", 330, 200, 60, 20)
    $cCombo_Col = GUICtrlCreateCombo("", 330, 220, 75, 20, 0x3) ; $CBS_DROPDOWNLIST
    GUICtrlSetData($cCombo_Col, "0|1|2|3", 3)
    GUICtrlCreateLabel("ESC Mode", 330, 260, 75, 20)
    $cCombo_Reset = GUICtrlCreateCombo("", 330, 280, 75, 20, 0x3) ; $CBS_DROPDOWNLIST
    GUICtrlSetData($cCombo_Reset, "Exit Edit|Reset All", "Exit Edit")
    
    
    ; Create buttons
    $cInsert_Button = GUICtrlCreateButton("Insert", 10, 350, 200, 30)
    $cDelete_Button = GUICtrlCreateButton("Delete", 10, 390, 200, 30)
    $cUp_Button = GUICtrlCreateButton("Move Up", 220, 350, 200, 30)
    $cDown_Button = GUICtrlCreateButton("Move Down", 220, 390, 200, 30)
    $cDisplay_Left_Button = GUICtrlCreateButton("Show Left", 430, 350, 100, 30)
    $cDisplay_Right_Button = GUICtrlCreateButton("Show Right", 530, 350, 100, 30)
    $cExit_Button = GUICtrlCreateButton("Exit", 430, 390, 200, 30)
    
    
    GUISetState()
    
    
    ; Register for editing & dragging
    _GUIListViewEx_MsgRegister()
    
    
    ; Set neither ListView as active
    _GUIListViewEx_SetActive(0)
    
    
    Switch _GUIListViewEx_GetActive()
    	Case 0
    		$sMsg = "No ListView is active"
    	Case 1
    		$sMsg = "The LEFT ListView is active" & @CRLF & "<--------------------------"
    	Case 2
    		$sMsg = "The RIGHT ListView is active" & @CRLF & "---------------------------->"
    EndSwitch
    MsgBox(0, "Active ListView", $sMsg)
    
    
    MsgBox(0, "Info", "The Left ListView has 20 empty rows" & @CRLF & "each of 3 cells which can be edited" & @CRLF & _
    		"Use Ctrl-arrow to move edit from cell to cell" & @CRLF & "<--------------------------")
    
    
    While 1
    	Switch GUIGetMsg()
    		Case $GUI_EVENT_CLOSE, $cExit_Button
    			Exit
    		Case $cInsert_Button
    			; Prepare data  for insertion
    			Switch $aGLVEx_Data[0][1]
    				Case 1
    					; Array format with multi-column native ListView
    					Global $vData[3] = ["Tom " & $iCount_Left, "Dick " & $iCount_Left, "Harry " & $iCount_Left]
    					$iCount_Left += 1
    					_GUIListViewEx_Insert($vData)
    				Case 2
    					; Array format with single-column UDF ListView
    					Global $vData[1] = ["Peter " & $iCount_Right]
    					$iCount_Right += 1
    					_GUIListViewEx_Insert($vData)
    			EndSwitch
    
    
    		Case $cDelete_Button
    			_GUIListViewEx_Delete()
    
    
    		Case $cUp_Button
    			_GUIListViewEx_Up()
    
    
    		Case $cDown_Button
    			_GUIListViewEx_Down()
    
    
    		Case $cDisplay_Left_Button
    			$aLV_List_Left = _GUIListViewEx_ReturnArray($iLV_Left_Index)
    			If Not @error Then
    				_ArrayDisplay($aLV_List_Left, "Returned Left")
    			Else
    				MsgBox(0, "Left", "Empty Array")
    			EndIf
    
    
    		Case $cDisplay_Right_Button
    			$aLV_List_Right = _GUIListViewEx_ReturnArray($iLV_Right_Index)
    			If Not @error Then
    				_ArrayDisplay($aLV_List_Right, "Returned Right")
    			Else
    				MsgBox(0, "Right", "Empty Array")
    			EndIf
    
    
    		Case $cCombo_Row
    			Switch GUICtrlRead($cCombo_Row)
    				Case 0
    					GUICtrlSetData($cCombo_Col, 0)
    				Case Else
    					If GUICtrlRead($cCombo_Col) = 0 Then
    						GUICtrlSetData($cCombo_Col, GUICtrlRead($cCombo_Row))
    					EndIf
    			EndSwitch
    			$iEditMode = Number(GUICtrlRead($cCombo_Row) & GUICtrlRead($cCombo_Col))
    
    
    		Case $cCombo_Col
    			Switch GUICtrlRead($cCombo_Col)
    				Case 0
    					GUICtrlSetData($cCombo_Row, 0)
    				Case Else
    					If GUICtrlRead($cCombo_Row) = 0 Then
    						GUICtrlSetData($cCombo_Row, GUICtrlRead($cCombo_Col))
    					EndIf
    			EndSwitch
    			$iEditMode = Number(GUICtrlRead($cCombo_Row) & GUICtrlRead($cCombo_Col))
    
    
    		Case $cCombo_Reset
    			; Toggle edit mode value to switch ESC modes
    			$iEditMode *= -1
    
    
    	EndSwitch
    
    
    	$vRet = _GUIListViewEx_EventMonitor($iEditMode) ; Use combos to change EditMode
    	If @error Then
    		MsgBox($MB_SYSTEMMODAL, "Error", "Event error: " & @error)
    	EndIf
    	Switch @extended
    		Case 0
    			; No event detected
    		Case 1
    			If $vRet = "" Then
    				MsgBox($MB_SYSTEMMODAL, "Edit", "Edit aborted" & @CRLF)
    			Else
    				_ArrayDisplay($vRet, "ListView " & _GUIListViewEx_GetActive() & " content edited", Default, 8)
    			EndIf
    		Case 2
    			If $vRet = "" Then
    				MsgBox($MB_SYSTEMMODAL, "Header edit", "Header edit aborted" & @CRLF)
    			Else
    				_ArrayDisplay($vRet, "ListView " & _GUIListViewEx_GetActive() & " header edited", Default, 8)
    			EndIf
    		Case 3
    			MsgBox($MB_SYSTEMMODAL, "Sorted", "ListView: " & $vRet & @CRLF)
    		Case 4
    			MsgBox($MB_SYSTEMMODAL, "Dragged", "From : To" & @CRLF & $vRet & @CRLF)
    	EndSwitch
    
    
    WEnd
    Alles anzeigen

    Kann mir mal jemand sagen wo genau es ermöglicht wird Items per Doppelklick zu bearbeiten?
    Ich finde es nicht.


    EDIT: Ok da steht es garnicht;)
    Sondern im GUIListViewEx.au3

  • Ideen für dynamisches Nippelboard

    • Camulus
    • 15. März 2017 um 13:42

    Da taucht schon die erste Hürde auf

    Spoiler anzeigen
    C
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 437, 192, 124)
    $List1 = GUICtrlCreateList("", 40, 32, 545, 305, BitOR($GUI_SS_DEFAULT_LIST,$WS_HSCROLL,$WS_VSCROLL,$WS_TABSTOP))
    $btn_add = GUICtrlCreateButton("Hinzufügen", 48, 344, 115, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $btn_add
    			$FilesOpen= FileOpenDialog("Soundfile(s)auswählen", @HomePath & "\Music\", "Sounds (*.mp3)", $FD_FILEMUSTEXIST + $FD_MULTISELECT)
    If Not @error Then
    ;~ 			MsgBox(0,"",$FilesOpen)
    			GUICtrlSetData($List1,$Filesopen)
    EndIf
    
    
    	EndSwitch
    WEnd
    Alles anzeigen

    also ich hab schon mal mein Listenfeld. Und kann Pfade rein packen. Soweit so gut :huh:
    ich hatte auch schon zwei spalten im Listenfeld so wie es eigentlich geplant ist. Da sollte dann die Tastenkombination eingetragen werden (idealerweise durch die Tastenkombination)
    Aber ich habe noch nicht gefunden wo ich die Breite der Spalten im Listenfeld beeinflussen kann ?( Sonst steht da nämlich nur C:\Username\M
    Und dann schwebt mir vor die einzelnen Files mit einem Doppelklick zu berarbeiten, d.h. die Tastenkombination zuweisen.

    Hat da mal jemand einen Denkanstoss für mich?

  • Ideen für dynamisches Nippelboard

    • Camulus
    • 14. März 2017 um 13:31

    Das Problem hatte ich auch :D
    Aber so heißt es wohl nunmal :klatschen:

    alpines: Gui ist der Plan das wird vermutlich wieder ein langfristiges Projekt. Ich hab wieder so lange nichts gebastelt dass ich wieder völlig raus bin.
    Die Idee von der fertigen Lösung hat mir ganz gut gefallen. Da klickt man sich das alles zusammen.

    Kommen bestimmt noch viele verwirrte Fragen von mir zu ;)

  • Ideen für dynamisches Nippelboard

    • Camulus
    • 14. März 2017 um 08:19

    Hallo da draußen,

    diese Idee entbehrt sich nicht einer gewissen Sinnlosigkeit aber ich hab mir vor Monaten mal ein kleines Nippelboasrd gebastelt.
    Wer mit dem Begriff, so wie ich vorher, nichts anfangen kann: Es ist ein kleines Tool das im Hintergrund läuft und bei einer bestimmten Tastenkombination einen bestimmten Ton (mp3) wiedergibt.
    Mittlerweile habe ich eine relativ ausgereifte Auswahl an Tönen die zu 90% der Gegebenheiten im Büroalltag passen und für Erheiterung sorgen. Sowas wie den Jingle von Jeopardy wenn einer eine Frage stellt. Das "Ja natürlich" aus das Leben des Brain, Spok's "Faszinierend", "Aufs Maul" von Gabba-Gandalf , den ein oder anderen Monolog aus Full Metal Jacket usw.

    Der Code ist relativ einfallslos:

    Spoiler anzeigen
    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=icon.ico
    #AutoIt3Wrapper_Outfile=FunSoundPlayer.exe
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Misc.au3>
    #include <File.au3>
    #include <Sound.au3>
    #include <MsgBoxConstants.au3>
    #include <TrayConstants.au3>
    ;~ FileInstall("Jeopardy.mp3",@ScriptDir & "\Jeopardy.mp3",0)
    ;~ FileInstall("Jeopardy.mp3","C:\tmp\Jeopardy.mp3",0)
    ;~ FileInstall("nircmd.exe",@ScriptDir & "\nircmd.exe",0)
    
    
    ;~ If ProcessExists ("JeopardyPlayer.exe") Then
    ;~ 	ProcessClose ("JeopardyPlayer.exe")
    ;~ 	EndIf
    Local $Sound1, $Sound2, $Sound3, $Sound4, $Sound5, $Sound6, $Sound7, $Sound8, $Sound9, $Sound19
    $Sound1= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound1", "key", "nicht eingetrsgen")
    $Sound2= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound2", "key", "nicht eingetrsgen")
    $Sound3= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound3", "key", "nicht eingetrsgen")
    $Sound4= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound4", "key", "nicht eingetrsgen")
    $Sound5= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound5", "key", "nicht eingetrsgen")
    $Sound6= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound6", "key", "nicht eingetrsgen")
    $Sound7= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound7", "key", "nicht eingetrsgen")
    $Sound8= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound8", "key", "nicht eingetrsgen")
    $Sound9= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound9", "key", "nicht eingetrsgen")
    $Sound10= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound10", "key", "nicht eingetrsgen")
    $Sound11= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound11", "key", "nicht eingetrsgen")
    $Sound12= 	IniRead(@ScriptDir & "\Sounds.ini", "Sound12", "key", "nicht eingetrsgen")
    
    
    
    
    
    
    ;~ FileInstall("nircmdc.exe",@ScriptDir &"\nircmdc.exe",0)
    
    
    Local $aSound1 	= _SoundOpen( @ScriptDir & "\Sound1.mp3" )
    Local $aSound2 	= _SoundOpen( @ScriptDir & "\Sound2.mp3" )
    Local $aSound3 	= _SoundOpen( @ScriptDir & "\Sound3.mp3" )
    Local $aSound4 	= _SoundOpen( @ScriptDir & "\Sound4.mp3" )
    Local $aSound5 	= _SoundOpen( @ScriptDir & "\Sound5.mp3" )
    Local $aSound6 	= _SoundOpen( @ScriptDir & "\Sound6.mp3" )
    Local $aSound7 	= _SoundOpen( @ScriptDir & "\Sound7.mp3" )
    Local $aSound8	= _SoundOpen( @ScriptDir & "\Sound8.mp3" )
    Local $aSound9 	= _SoundOpen( @ScriptDir & "\Sound9.mp3" )
    Local $aSound10 = _SoundOpen( @ScriptDir & "\Sound10.mp3" )
    Local $aSound11 = _SoundOpen( @ScriptDir & "\Sound11.mp3" )
    Local $aSound12 = _SoundOpen( @ScriptDir & "\Sound12.mp3" )
    
    
    ;~ TrayTip("Bedienung","ALT + 1-0",2)
    ;~ TraySetToolTip("Alt+"&@CRLF&"1 = " & $Sound1&@CRLF &"2 = " & $Sound2&@CRLF &"3 = " & $Sound3&@CRLF &"4 = " & $Sound4&@CRLF &"5 = " & $Sound5&@CRLF & "6 = " & $Sound6&@CRLF &"7 = " & $Sound7&@CRLF &"8 = " & $Sound8&@CRLF &"9 = " & $Sound9&@CRLF &"10 = " & $Sound10)
    $Liste=("1=" & $Sound1 & @CRLF & "2=" & $Sound2 & @CRLF &"3=" & $Sound3& @CRLF&"4=" & $Sound4& @CRLF&"5=" & $Sound5& @CRLF&"6=" & $Sound6& @CRLF&"7=" & $Sound7& @CRLF&"8=" & $Sound8& @CRLF&"9=" & $Sound9& @CRLF  &"10=" & $Sound10& @CRLF   &"11=" & $Sound11& @CRLF  &"12=" & $Sound12)
    
    
    
    
    While 1
    
    
    ;~ Sound1
    	If _IsPressed ("11") and _IsPressed ("70") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    			_SoundPlay($aSound1)
    			While _IsPressed ("11")
    				Sleep(250)
    			WEnd
    				_SoundStop($aSound1)
    			Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    ;~ Sound2
    	If _IsPressed ("11") and _IsPressed ("71") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound2)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound2)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    ;~ Sound3
    	If _IsPressed ("11") and _IsPressed ("72") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound3)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound3)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    ;~ Sound4
    	If _IsPressed ("11") and _IsPressed ("73") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound4)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound4)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    ;~ Sound5
    	If _IsPressed ("11") and _IsPressed ("74") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound5)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound5)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    ;~ Sound6
    	If _IsPressed ("11") and _IsPressed ("75") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound6)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound6)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    ;~ Sound7
    	If _IsPressed ("11") and _IsPressed ("76") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound7)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound7)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    ;~ Sound8
    	If _IsPressed ("11") and _IsPressed ("77") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound8)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound8)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    ;~ Sound9
    	If _IsPressed ("11") and _IsPressed ("78") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound9)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound9)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    ;~ Sound10
    	If _IsPressed ("11") and _IsPressed ("79") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound10)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound10)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    	If _IsPressed ("11") and _IsPressed ("7A") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound11)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound10)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    	If _IsPressed ("11") and _IsPressed ("7B") Then ;-7B ist die F12 Taste
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Lautsprecher")
    		_SoundPlay($aSound12)
    		While _IsPressed ("11")
    			Sleep(250)
    		WEnd
    			_SoundStop($aSound10)
    		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    				Sleep(250)
    	EndIf
    
    
    
    
    ;~ Häh
    	If _IsPressed ("11") and _IsPressed ("70") Then ;-7B ist die F12 Taste
    		TrayTip ("Sounds", $Liste,5)
    ;~ 		While _IsPressed ("11")
    ;~ 			Sleep(250)
    ;~ 		WEnd
    ;~ 			_SoundStop($aSound10)
    ;~ 		Run(@ScriptDir & "\nircmd.exe setdefaultsounddevice Headset")
    ;~ 				Sleep(250)
    	EndIf
    
    
    
    
    WEnd
    Alles anzeigen

    Das Problem ist dass die 10 Sounds die ich habe nicht reichen.
    Jetzt könnte man wohl neue Tastenkombinationen eintragen aber das ist ja nicht schön.

    Ich hab auch schon eins runtergeladen wo man die Sound Files in ein Listenfeld "laden" kann und dann die einzelnen Items bearbeiten und eine Tastenkombination und das Ausgabegerät zuweisen kann.
    Das ist soweit ganz schick aber irgendwie läuft das nicht so rund.

    Also war die Idee sowas in der Art selber zu bauen.
    Ich würde gerne die Sounds und die Tastenkombination editierbar gestalten.

    Also dachte ich ich frage mal euch nach zündenden Ideen wie ich das am besten anfange? :rolleyes:8|^^

  • For Schleife verschachteln?

    • Camulus
    • 25. Oktober 2016 um 10:56

    Hi,

    ich hab ein kleines Problemchen mit einer Schleife.
    Das stammt aus diesem Beitrag hier.
    https://autoit.de/index.php/Thre…sten-dynamisch/

    Aber da das generell gelöst ist mach ich mal einen neuen auf.
    Ich denke ich hab das nur falsch zusammen gebaut.

    So sieht das aus:

    Code
    Func _checkDrives()
    ;~ Laufwerke checken
    			$aArray = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", "Groups")
    ;~ MsgBox(0,"","vor ADopen")
    				_AD_Open()
    
    
    					For $i = 1 To $aArray[0][0]
    						$is_member = 0
    						$is_member = _AD_IsMemberOf($aArray[$i][1], @UserName)
    
    
    						If $is_member = 1 Then
    							 $aArray_MAPDRIVE = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", $aArray[$i][1])
    							 _ArrayDisplay ($aArray_MAPDRIVE)
    						EndIf
    					Next
    				_AD_Close()
    
    
    
    
    For $x = 1 To $aArray_MAPDRIVE[0][0]
    	Sleep(500)
    				MsgBox(0,"Schleife", $X,1)
    				$map_details = StringSplit($aArray_MAPDRIVE[$x][1],"|")
    				$map_details[1] = StringReplace($map_details[1], "*USER*", @username)
    
    
    						$Laufwerk =($map_details[2] & ":")
    						$Pfad =($map_details[1])
    
    
    ;~ 			If $Ping > 0 Then
    
    
    				$Status=DriveStatus($Laufwerk)
    ;~ 				MsgBox(0,"",$Status & " " & $Laufwerk,1)
    					If  $Status = "INVALID" Then
    
    
    						$count =0
    							Do
    							_MapDrives($Laufwerk,$Pfad)
    								Sleep(1000)
    									If  @error Then
    										$Error = @error
    										MsgBox(0,"",$Error)
    										$count +=1
    										_WriteLogData("Laufwerk " & $Laufwerk &"  nicht neu verbunden. Fehlversuch:" & $count)
    									Else
    											ExitLoop
    									EndIf
    
    
    							Until $count >= 3
    
    
    								If $count >=3 Then
    									$Error = @error
    	;~ 								_ErrorLog($Error, $Laufwerk)
    								Else
    									$Error = ""
    								EndIf
    
    
    
    
    			EndIf
    
    
    Next
    EndFunc
    Alles anzeigen


    Jetzt bekomme ich zwei mal ein Array angezeigt was auch stimmt weil mein Testuser in zwei Gruppen aus der Netzlaufwerke.ini ist.
    Die MessageBox mit dem Titel Schleife kommt dann auch zweimal was auch richtig ist weil zwei Laufwerke je Gruppe verbunden werden sollen.

    Aber das passt alles nicht immer weil erst zweimal das Array gebildet wird und dann erst die Laufwerke verbunden werden.
    Ich denke die beiden For Schleifen müssten verschachtelt werden, aber das hab ich noch nicht zufriedenstellend gelöst.


    Ich bilde mir ein:
    Wenn der User in 2 Gruppen ist müsste erst das Array gebildet werden (1.Gruppe) dann die Laufwerke verbinden und dann das zweite Array (2.Gruppe) und die zugehörigen Laufwerke

    Die ini Datei ist so aufgebaut

    Code
    [Groups]
    1=GRP_Abteilung_IT
    2=Alle_xyz
    
    
    
    
    
    
    [GRP_Abteilung_IT]
    1=\\domain\dfs\Home$\*USER*|H
    2=\\domain\dfs\software|S
    
    
    [Alle_xyz]
    1=\\domain\dfs\Gruppen|V
    2=\\domain\dfs\Benutzer|W
    Alles anzeigen

    EDIT:
    Ich glaub ich habs.

    Code
    $aArray = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", "Groups")
    				_AD_Open()
    
    
    					For $i = 1 To $aArray[0][0]
    						$is_member = 0
    						$is_member = _AD_IsMemberOf($aArray[$i][1], @UserName)
    
    
    						If $is_member = 1 Then
    							 $aArray_MAPDRIVE = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", $aArray[$i][1])
    ;~
    								For $x = 1 To $aArray_MAPDRIVE[0][0]
    
    
    											$map_details = StringSplit($aArray_MAPDRIVE[$x][1],"|")
    											$map_details[1] = StringReplace($map_details[1], "*USER*", @username)
    
    
    													$Laufwerk =($map_details[2] & ":")
    													$Pfad =($map_details[1])
    
    
    											$Status=DriveStatus($Laufwerk)
    
    
    												If  $Status = "INVALID" Then
    													$count =0
    														Do
    														_MapDrives($Laufwerk,$Pfad)
    															Sleep(1000)
    																If  @error Then
    																	$Error = @error
    																	MsgBox(0,"",$Error)
    																	$count +=1
    																	_WriteLogData("Laufwerk " & $Laufwerk &"  nicht neu verbunden. Fehlversuch:" & $count)
    																Else
    														ExitLoop
    																EndIf
    														Until $count >= 3
    															If $count >=3 Then
    																$Error = @error
    															Else
    																$Error = ""
    															EndIf
    											$Status = ""
    											$Laufwerk = ""
    											$count= 0
    											$Drive=""
    										EndIf
    
    
    								Next
    						EndIf
    					Next
    
    
    				_AD_Close()
    Alles anzeigen

    Scheint erst mal zu funktionieren.
    Wenn jemand was eleganteres hat immer raus damit;)

  • VPN Verbindung feststellen

    • Camulus
    • 24. Oktober 2016 um 10:48

    Hi,

    ich habe ein kleines Tool dass regelmäßig testet ob eine VPN Verbindung besteht. Das alles mittels Ping.
    Gefühlt ist das aber nicht die zuverlässigste Methode.

    Hat jemand eine elegantere Idee als einen Ping um festzustelle ob man eine aktive VPN Verbidnung hat?

  • Netzlaufwerke verbinden am liebsten "dynamisch"

    • Camulus
    • 17. Oktober 2016 um 08:38

    If $Ping then anstatt if ping > x then
    scheint zu reichen.

  • Netzlaufwerke verbinden am liebsten "dynamisch"

    • Camulus
    • 13. Oktober 2016 um 08:47

    Hallo nochmal,

    ich hab noch ein kleines Problem;)

    Und zwar:

    Code
    "C:\Autoit\Connect V3\ad.au3" (581) : ==> Variable must be of type "Object".:$__oAD_Command.CommandText = "<LDAP://" & $sAD_HostServer & "/" & $sAD_DNSDomain & ">;(" & $sProperty & "=" & $sObject & ");ADsPath;subtree"$__oAD_Command^ ERROR

    Das alles passiert wenn ich die Fnktion _checkdrives() aufrufe.
    . Er meckert ja Zeile 581 in der AD.au3 an, die sprengt meinen Horizont aber etwas.
    _ADOpen muss und kann natürlich nur aufgerufen werden wenn ich eine VPN Verbindung habe.

    Der Ping hat aucht funktioniert, aber dann kommt die Fehlermeldung oben.

    Kann mich da noch jemand erleuchten?

    Die "Connect":

    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Data\connect.ico
    #AutoIt3Wrapper_Outfile=exe\Connect3.0.exe
    #AutoIt3Wrapper_Res_Description=Connect Version 3.0
    #AutoIt3Wrapper_Res_Fileversion=3.0
    #AutoIt3Wrapper_Res_LegalCopyright= Verband
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    
    #cs ----------------------------------------------------------------------------
    
    
    	AutoIt Version: 3.0
        Author:        ich
    
    
    #ce ----------------------------------------------------------------------------
    
    
        #include <Array.au3>
        #include <ad.au3>
        #include <MsgBoxConstants.au3>
    	#Include <ScreenCapture.au3>
    	#include <INet.au3>
    	#include <FileConstants.au3>
    	#include <File.au3>
    	#include <TrayConstants.au3>
    
    
    ;~ 	für Toolbox
    	#include <ButtonConstants.au3>
    	#include <GUIConstantsEx.au3>
    	#include <StaticConstants.au3>
    	#include <WindowsConstants.au3>
    
    
    Global $StartFlag, $tray_toolbox, $is_member, $FileName
    
    
    
    
    ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ----------------------------------------------------------------------------Toolbox-----------------------------------------------------------------------------------------------------------------------------------------
    ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    Opt('WinTitleMatchMode', 4)
    
    
    Opt("TrayOnEventMode", 1) ; Enable TrayOnEventMode.
    Opt("TrayMenuMode", 3)
    $aTaskbarPos = WinGetPos('classname=Shell_TrayWnd')
    $iWidth = 245
    $iHeight = 480
    $iLeft = $aTaskbarPos[2] - $iWidth - 5
    $iTop = $aTaskbarPos[1] - $iHeight - 5
    
    
    
    
    #Region ### START Koda GUI section ### Form=c:\users\a-b.wagener\desktop\connect v3\toolbox.kxf
    $Toolbox = GUICreate("Toolbox", $iWidth, $iHeight, $iLeft, $iTop, BitOR($WS_POPUPWINDOW,$WS_EX_TOPMOST))
    ;~ $Toolbox = GUICreate("Toolbox", $iWidth, $iHeight, $iLeft, $iTop,BitOR($WS_POPUP,$WS_THICKFRAME,$WS_EX_TOPMOST, WinGetHandle(AutoItWinGetTitle())))
    
    
    GUISetIcon(@ScriptDir &"\Data\toolbox.ico", -1)
    GUISetBkColor(0xFFFFFF)
    $btn_laufwerke = GUICtrlCreateButton("btn_laufwerke", 8, 48, 50, 50, $BS_ICON)
    GUICtrlSetImage($btn_laufwerke, @Scriptdir &"\Data\netzlaufwerk.ico", -1)
    $btn_screenshot = GUICtrlCreateButton("btn_screenshot", 8, 104, 50, 50, $BS_ICON)
    GUICtrlSetImage($btn_screenshot, @Scriptdir &"\Data\icon_kamera.ico", -1)
    $btn_teamviewer = GUICtrlCreateButton("btn_teamviewer", 8, 160, 50, 50, $BS_ICON)
    GUICtrlSetImage($btn_teamviewer, @Scriptdir &"\Data\teamviewer.ico", -1)
    $btn_ticket = GUICtrlCreateButton("btn_ticket", 8, 216, 50, 50, $BS_ICON)
    GUICtrlSetImage($btn_ticket, @Scriptdir &"\Data\support.ico", -1)
    $btn_passwort = GUICtrlCreateButton("Button6", 8, 272, 50, 50, $BS_ICON)
    GUICtrlSetImage($btn_passwort, @Scriptdir &"\Data\password.ico", -1)
    $btn_backup = GUICtrlCreateButton("btn_backup", 8, 328, 50, 50, $BS_ICON)
    GUICtrlSetImage($btn_backup, @Scriptdir &"\Data\backup.ico", -1)
    $btn_exit = GUICtrlCreateButton("btn_exit", 8, 408, 50, 50, $BS_ICON)
    GUICtrlSetImage($btn_exit, @Scriptdir &"\Data\exit.ico", -1)
    $lbl_laufwerke = GUICtrlCreateLabel("Netzlaufwerke verbinden", 64, 64, 138, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial Narrow")
    $lbl_Screenshot = GUICtrlCreateLabel("Screenshot an IT senden", 64, 120, 143, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial Narrow")
    $lbl_teamviewer = GUICtrlCreateLabel("Teamviewer starten", 63, 175, 113, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial Narrow")
    $lbl_ticket = GUICtrlCreateLabel("Ticketsystem öffnen", 65, 232, 114, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial Narrow")
    $lbl_password = GUICtrlCreateLabel("Wann läuft mein Passwort ab?", 67, 287, 170, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial Narrow")
    $lbl_backup = GUICtrlCreateLabel("Backup- Restore Tool", 66, 345, 125, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial Narrow")
    $lbl_exit = GUICtrlCreateLabel("Toolbox schließen", 63, 421, 108, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial Narrow")
    GUICtrlCreateLabel("Connect 3.0 Toolbox", 0, 16, 238, 22, $SS_CENTER)
    GUICtrlSetFont(-1, 11, 800, 0, "Arial")
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###
    
    
    
    
    ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;							Header in die Log Datei schreiben
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    	_WriteLogData("######################################################################################################################")
    	_WriteLogData("")
    	_WriteLogData("")
    	_WriteLogData("-----------------------------------------------neue Verbindung--------------------------------------------------------")
    	_WriteLogData("")
    	_WriteLogData("")
    	_WriteLogData("----------------------------------------------------------------------------------------------------------------------")
        _WriteLogData("Programm			: " & @ScriptName & ". Version=" & FileGetVersion(@ScriptName) & " mit Datum=" & FileGetTime(@ScriptName, 1, 1))
        _WriteLogData("Benutzer			: " & @UserName)
        _WriteLogData("LogonServer		: " & @LogonServer)
        _WriteLogData("LogonDomain		: " & @LogonDomain)
        _WriteLogData("LogonDNSDomain	: " & @LogonDNSDomain)
        _WriteLogData("Computername		: " & @ComputerName )
        _WriteLogData("IP				: " & @IPAddress1 & ", " &@IPAddress2& ", " &@IPAddress3& ", " & @IPAddress4)
    	_WriteLogData("----------------------------------------------------------------------------------------------------------------------")
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;							Programmstart
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    ;~ $Updateflag = False
    ;~ _TrayMenue()
    Run("gpupdate", "", @SW_HIDE)
    $StartFlag = False
    
    
    
    
    
    
    HotKeySet("+!e", "_QuitConnect") ; Shift-Alt-e beendet die Connect
    
    
    TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "_showForm")
    TraySetOnEvent($TRAY_EVENT_MOUSEOVER, "_Mouseoverhelp")
    
    
    Global $iTimer = TimerInit(), $iTimerDiff = 0
    ;~ Global $aFunktions[2][3] = [['_VerbindungsStatus', 20000, 1], [ '_FuncDrives', 25000, 1]]
    
    
    
    
    
    
    ; das folgende Array $aFunktions ist ein 2D-Array mit jeweils 3 Werten:
    ; 1. Wert = die aufzurufene Funktion,
    ; 2. Wert = Wann die Funktion aufgerufen werden soll (in Millisekunden)
    ; 3. Wert = Wird als Counter benutzt (wie oft die Funktion aufgerufen wurde)
    Global $aFunktions[3][3] = [['_VerbindungsStatus', 20000, 1], [ '_FuncDrives', 25000, 1]]
    ;~ Global $aFunktions[3][3] = [['_VPNStatus', 5000, 1], ['_CheckDrives', 20000, 1], ['_SendToNSA', 60000, 1]]
    
    
    
    
    
    
    ;~ $aArray = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", "Groups")
    
    
    ;~ 	_AD_Open()
    
    
    ;~ 		For $i = 1 To $aArray[0][0]
    ;~ 			$is_member = 0
    ;~ 			$is_member = _AD_IsMemberOf($aArray[$i][1], @UserName)
    
    
    ;~ 			If $is_member = 1 Then
    ;~ 				 $aArray_MAPDRIVE = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", $aArray[$i][1])
    ;~ 				;~ _ArrayDisplay ($aArray_MAPDRIVE)
    ;~ 			EndIf
    ;~ 		Next
    ;~ 	_AD_Close()
    
    
    
    
    		While Sleep(10)
    
    
    			$iTimerDiff = TimerDiff($iTimer)
    
    
    			For $i = 0 To UBound($aFunktions) - 1 ; hier werden alle Funktionen aus dem Array überprüft
    				If $iTimerDiff / $aFunktions[$i][1] > $aFunktions[$i][2] Then ; ist die TimerDifferenz geteilt durch die Millisekunden größer als der Counter, dann...
    		;~             ConsoleWrite(StringFormat('+> Zeit: %i Sek., Aufruf Nr.: %i, Starte Funktion: "%s"\n', Int($iTimerDiff / 1000), $aFunktions[$i][2], $aFunktions[$i][0]))
    					$aFunktions[$i][2] += 1 ; den Counter erhöhen
    					Call($aFunktions[$i][0]) ; und die Funktion aufrufen
    				EndIf
    			Next
    
    
    
    
    					If ($StartFlag = FALSE) then
    							_VerbindungsStatus()
    							_FuncDrives()
    							$StartFlag = TRUE
    					EndIf
    
    
    					$iTimerDiff = TimerDiff($iTimer)
    
    
    
    
    
    
    ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ---------------------------------------------------Toolbox------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    
    
    				$nMsg = GUIGetMsg()
    					Switch $nMsg
    
    
    						Case $btn_laufwerke
    								TrayTip("Bitte warten", "Netzlaufwerke werden verbunden.",1,1)
    								Sleep(500)
    								_FuncDrives()
    								TrayTip("Fertig", "Netzlaufwerke wurden verbunden.",1,1)
    
    
    						Case $btn_screenshot
    								TrayTip("Bitte warten", "Screenshot wird erstellt und versendet.",1,1)
    								Sleep(500)
    								_Screenshot()
    								TrayTip("Screenshot erstellt", "Der Screenshot wurde an it-support@x-it.de gesendet.",1,1)
    								FileDelete(@ScriptDir& "\Screenshot.jpg")
    
    
    						Case $btn_teamviewer
    							If FileExists ("C:\IT\TeamviewerQS_de.exe") Then
    								Run("C:\IT\TeamviewerQS_de.exe")
    							Else
    								MsgBox(16,"Teamviewer wurde nicht gefunden","Bitte wenden Sie sich an den IT-Support.")
    							EndIf
    
    
    						Case $btn_ticket
    								ShellExecute("http://it-support.x.local" )
    
    
    						Case $btn_passwort
    							_FuncPassword()
    
    
    
    
    						Case $btn_backup
    							Run( @Scriptdir & "\Backup_Restore.exe")
    
    
    
    
    						Case $btn_exit
    							GUISetState(@SW_HIDE)
    					EndSwitch
    
    
    
    
    
    
    		WEnd
    
    
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;							Tray Icon Klick und Mouseover aus Zeile / TraySetOnEvent ~Zeile 120 rum
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    Func _showForm()
    		GuiSetState (@SW_SHOW)
    EndFunc
    
    
    Func _Mouseoverhelp()
    TraySetToolTip("Connect 3.0" & @CRLF & "Klick (linke Maustaste)für Toolbox")
    
    
    EndFunc
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ Func _TrayMenue()
    
    
    ;~ 	Opt("TrayMenuMode", 3) ; Default tray menu items (Script Paused/Exit) will not be shown.
    ;~ 			TraySetIcon(@ScriptDir& "\Data\red.ico")
    
    
    ;~ 				$tray_toolbox = TrayCreateItem("Toolbox öffnen")
    ;~ 				TrayItemSetState($tray_toolbox,128)
    ;~ 					TrayCreateItem("")
    ;~ 					TrayCreateItem("Connect Version 3.0")
    ;~ 					TrayItemSetState(-1,128)
    
    
    ;~ EndFunc
    
    
    
    
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;							 Verbindungsstatus
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _VerbindungsStatus()
    ;~ 	MsgBox(0,"","VPNStatus",1)
    
    
    	local 	$Testserver = @LogonDNSDomain
    			$Connection = Ping($Testserver, 5000)
    
    
    
    
    			   If $Connection = 0 Then
    					TraySetIcon(@ScriptDir& "\Data\red.ico")
    					TraySetToolTip("Keine VPN Verbindung." & @CRLF & "Bauen Sie die Verbindung bitte mit dem Palo Alto Client auf.")
    
    
    				EndIf
    
    
    				If $Connection > 0 Then
    ;~ 				TrayItems aktivieren wenn verbindung zum COO besteht. Sonst funktioniert das eh alles nicht
    					TrayItemSetState($tray_toolbox,64)
    					TraySetIcon(@ScriptDir& "\Data\green.ico")
    
    
    				EndIf
    
    
    	$Connection=""
    	$netlogon=""
    	$Testserver=""
    
    
    EndFunc
    
    
    ;~ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    Func _FuncDrives()
    	$Testserver = @LogonDNSDomain
    	$Ping = Ping($Testserver,5000)
    MsgBox(0,"",$Ping)
    
    
    	If $Ping > 0 Then
    
    
    
    
    				_CheckDrives()
    
    
    	EndIf
    EndFunc
    
    
    ;~ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _checkDrives()
    ;~ Laufwerke checken
    			$aArray = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", "Groups")
    
    
    				_AD_Open()
    
    
    					For $i = 1 To $aArray[0][0]
    						$is_member = 0
    						$is_member = _AD_IsMemberOf($aArray[$i][1], @UserName)
    
    
    						If $is_member = 1 Then
    							 $aArray_MAPDRIVE = IniReadSection(@ScriptDir &"\netzlaufwerke.ini", $aArray[$i][1])
    							;~ _ArrayDisplay ($aArray_MAPDRIVE)
    						EndIf
    					Next
    				_AD_Close()
    
    
    
    
    For $x = 1 To $aArray_MAPDRIVE[0][0]
    				;MsgBox(0,$is_member, $aArray_MAPDRIVE[$i][1])
    				$map_details = StringSplit($aArray_MAPDRIVE[$x][1],"|")
    				$map_details[1] = StringReplace($map_details[1], "*USER*", @username)
    
    
    						$Laufwerk =($map_details[2] & ":")
    						$Pfad =($map_details[1])
    
    
    ;~ 			If $Ping > 0 Then
    
    
    				$Status=DriveStatus($Laufwerk)
    ;~ 				MsgBox(0,"",$Status & " " & $Laufwerk,1)
    					If  $Status = "INVALID" Then
    
    
    						$count =0
    							Do
    							_MapDrives($Laufwerk,$Pfad)
    								Sleep(1000)
    									If  @error Then
    										$Error = @error
    										MsgBox(0,"",$Error)
    										$count +=1
    										_WriteLogData("Laufwerk " & $Laufwerk &"  nicht neu verbunden. Fehlversuch:" & $count)
    									Else
    											ExitLoop
    									EndIf
    
    
    							Until $count >= 3
    
    
    								If $count >=3 Then
    									$Error = @error
    	;~ 								_ErrorLog($Error, $Laufwerk)
    								Else
    									$Error = ""
    								EndIf
    
    
    ;~ 				EndIf
    				$Status = ""
    				$Laufwerk = ""
    				$count= 0
    				$Drive=""
    			EndIf
    
    
    Next
    EndFunc
    
    
    ;~ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _MapDrives ($Laufwerk,$Pfad)
    ;~ Laufwerke verbinden
    		DriveMapAdd($Laufwerk, $Pfad)
    
    
    EndFunc
    
    
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ Func _Laufwerk_trennen($Laufwerk)
    ;~ 		$Status=DriveStatus($Laufwerk)
    ;~ 		If $Status <> "INVALID" Then
    				;MsgBox(0,"",$Status)
    
    
    				;				TrayTip("Verbindung beendet","Ihre Netzlaufwerke werden getrennt",1)
    
    
    ;~ 				DriveMapDel($Laufwerk)
    ;~ 						_WriteLogData("Laufwerk " & $Laufwerk & " getrennt.")
    ;~ 		EndIf
    ;~ 					$Laufwerk = ""
    ;~ 					$Status = ""
    ;~ 					$Drive = ""
    ;~ 		Sleep(500)
    ;~ EndFunc
    
    
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _FuncPassword()
    
    
    ;~ Benutzeraten aus Abfragen, wichtig für "Passwort läuft ab" Anzeigen
    Global $UserAccountControl, $samAccountName,$FirstName, $LastName, $title, $PasswordLastChanged, $IsAccountLocked, $DaysLeft,$msg,$icon	,$AnzeigeDatPwdExpires, $Counter, $baseStr
    Local $Found = 0
    
    
    $AnmeldeUser = @UserName
    $LogonServer = @LogonDomain
    $serverName = $LogonServer
    
    
    
    
    
    
    
    
    $filterStr = "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=" & @UserName & "))"
    $ado = ObjCreate("ADODB.Connection") ; erstellt eine Instanz des Objektes ADODB.Connection
    $ado.Provider = "ADSDSOObject"
    
    
    $ado.Open ("ADS-Search" )
    
    
    $adoCmd = ObjCreate("ADODB.Command")
    $adoCmd.ActiveConnection = $ado
    $adoCmd.Properties("Page Size") = 1000
    $adoCmd.Properties("Cache Results") = 1
    $adoCmd.CommandText = "<LDAP://" & $serverName & "/" & $baseStr & ">;" & $filterStr & ";ADsPath;subtree"
    
    
    
    
    _WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & StringReplace($LogonServer,"\",""))
    
    
    $objectList = $adoCmd.Execute
    $Counter = 1
    
    
    	While Not $objectList.EOF()
    
    
    		$user = ObjGet($objectList.Fields("ADsPath").value)
    		$samAccountName				=	$User.samAccountName
    
    
    		If stringlower($samAccountName) = StringLower($AnmeldeUser) Then
    
    
    			$UserAccountControl			= 	$user.UserAccountControl
    			$FirstName					=	$User.FirstName
    			$LastName					=	$User.LastName
    			$title						=	$User.title
    			$PasswordLastChanged		=	$User.PasswordLastChanged ;pwdLastSet
    			$IsAccountLocked			=	$User.IsAccountLocked
    
    
    
    
    			_WriteLogData("Benutzereintrag für " & $FirstName & "  " & $LastName & " wurde gefunden. Accountcontrol = " & $UserAccountControl)
    			$DaysLeft = _DatumBerechnen($PasswordLastChanged)
    
    
    			If  $DaysLeft <= 10 Then
    				Switch $DaysLeft
    					Case 1
    								MsgBox (16, "Achtung","Ihr Passwort läuft heute ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort umgehend!")
    					Case 2
    								MsgBox (48, "Achtung","Ihr Passwort läuft morgen ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort!")
    					Case Else
    								MsgBox(64,"Achtung","Ihr Passwort läuft in " & $DaysLeft & " Tagen, am " & $AnzeigeDatPwdExpires & ", ab." & @CRLF & @CRLF & "Bitte ändern Sie das Passwort bei der nächsten Gelegenheit!")
    					EndSwitch
    			EndIf
    
    
    		EndIf
    
    
    		$objectList.MoveNext()
    		$Counter += 1
    	Wend
    
    
    						$UserAccountControl=""
    						$samAccountName=""
    						$FirstName=""
    						$LastName=""
    						$title=""
    						$PasswordLastChanged=""
    						$IsAccountLocked=""
    						$DaysLeft=""
    						$msg=""
    						$icon=""
    						$AnzeigeDatPwdExpires=""
    						$Counter=""
    
    
    EndFunc
    
    
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;							Kennwort "Lebensdauer" berechnen
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _DatumBerechnen($ChangedDate)
    
    
    	;~ wird von _GetUserAD gebraucht
    	local 	$AnzeigeDatPwdChanged,  $Day2Change, $Date2Change
    	local   $HeuteJMT 		=  _NowCalcDate()
    	local   $DatChangedJMT 	=  StringMid( $ChangedDate, 1, 4) & "/" & StringMid( $ChangedDate, 5, 2) & "/" & StringMid( $ChangedDate, 7, 2)
    
    
    		$Date2Change =  _DateAdd('d',90,$DatChangedJMT)
    		$Day2Change =  _DateDiff( 'd',_NowCalc(),$Date2Change)
    
    
    			$AnzeigeDatPwdExpires = StringMid( $Date2Change, 9, 2) & "." & StringMid( $Date2Change, 6, 2) & "." & StringMid( $Date2Change, 1, 4)
    			Return $Day2Change
    			_WriteLogData("Passwort Ablaufdatum emittelt")
    
    
    		$AnzeigeDatPwdChanged=""
    		$Day2Change=""
    		$Date2Change=""
    		$HeuteJMT=""
    		$ChangedDate=""
    		$DatChangedJMT=""
    
    
    EndFunc
    ;~ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _Screenshot()
    
    
    		;~ GUI verstecken damit die nicht mit auf dem Screenshot ist
    		GUISetState(@SW_HIDE)
    		_ScreenCapture_Capture(@ScriptDir & "\Screenshot.jpg")
    		Sleep(1000)
    
    
    		GUISetState(@SW_SHOW)
    			$Zeitpunkt = FileGetTime(@ScriptDir & "\Screenshot.jpg",1,0)
    			$File= (@ScriptDir & "\Screenshot.jpg")
    			$Betreff = "Screenshot von " & @UserName
    			$Body = "Erstellt: " & $Zeitpunkt[2]& "."& $Zeitpunkt[1]& "."& $Zeitpunkt[0]& "  " & $Zeitpunkt[3] & ":"& $Zeitpunkt[4] & ":" &$Zeitpunkt[5] &   "   Rechnername: " & @ComputerName &  "   IP-Adressen: " & @IPAddress1 & ", " &@IPAddress2& ", " &@IPAddress3& ", " & @IPAddress4
    			$sBlatPath =(@ScriptDir & "\blat\blat.exe")
    
    
    			$Str ="-to it-support@x-it.de -f screenshot@x.local -server server103.x.local -s " & '"'& $Betreff &'"' & " -body "& '"'& $body &'"' & " -attach "& '"'& $File &'"'
    		$sRun = $sBlatPath & " " & $str
    		$iRun = Run($sRun,@SystemDir, @SW_HIDE)
    		Sleep(2000)
    
    
    EndFunc
    
    
    
    
    ;~  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    
    
    Func _WriteLogData($Line)
    
    
    
    
    Local $FileCreateOK, $LinePrefix
    
    
    
    
    $LinePrefix = @YEAR & "." & @MON & "." & @MDAY & "/" & @HOUR & ":"& @MIN & ":" & @SEC & " | " & $Line
    
    
    if not FileExists($FileName) Then
    
    
    	$FileCreateOK = _FileCreate($FileName)
    
    
    ;~ Return ($FileName)
    EndIf
    
    
    
    
    $LogFileID = FileOpen($FileName,1)
    
    
    FileWriteLine($LogFileID,$LinePrefix)
    
    
    FileClose($LogFileID)
    
    
    
    
    EndFunc
    
    
    
    
    ;~  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _QuitConnect()
    
    
    		TrayTip("Connect beenden", "Connect wird beendet.",2,2)
    		Sleep(2000)
        Exit
    EndFunc
    Alles anzeigen


    Irgendwie steh ich etwas auf dem Schlauch

  • String nach letzem \ abschneiden

    • Camulus
    • 28. September 2016 um 08:24

    Ok...die regulären Ausdrücke sind zwar wesentlich cooler, aber wenn ich das in 2 Jahren mal wieder umbaue nehme ich doch lieber die einfachere Lösung.

    Danke euch :thumbup:

  • String nach letzem \ abschneiden

    • Camulus
    • 27. September 2016 um 16:50

    Danke :thumbup:
    Reguläre Ausdrücke sind echt schweinkram :huh::rolleyes:

  • String nach letzem \ abschneiden

    • Camulus
    • 27. September 2016 um 16:31

    Hi,

    ich hab eine ini Datei da steht sowas:


    1=C:\Users\*User*\Pictures
    2=C:\Users\*User*\Desktop


    Das lese ich aus um zu wissen welche Verzeichnisse gesichert werden sollen:

    Code
    Global $qArray = IniReadSection(@ScriptDir &"\backup_restore.ini", "Quellen")
    Global $z_Array = IniReadSection(@ScriptDir &"\backup_restore.ini", "Ziel")
    
    
    	For $i = 1 To $qArray[0][0]
    
    
    				$s_Quelle = ($qArray[$i][1])
    ;~ 				MsgBox(0,"Pfad- Schleife",$s_Quelle)
    				$Quell_Laufwerk = StringLeft($s_Quelle,3)
    				$Quell_Buchstabe = StringLeft($s_Quelle,1)
    	$ZielShare = StringReplace($s_Quelle, $Quell_Laufwerk, "")
    
    
    
    
    				$Quelle = StringReplace($s_Quelle, "*USER*", @username)
    				$strZiel = ( $Zielverzeichnis & $Quell_Buchstabe & "\"&$ZielShare)
    				$Ziel = StringReplace($strZiel, "*USER*", @username)
    Alles anzeigen

    Das ist sicher alles etwas verwirrend.
    Aber die Frage ist einfach;)

    Der zu sichernde Ordner ist ja klar durch:
    1=C:\Users\*User*\Pictures

    wieder herstellen will ich das aber nach:
    1=C:\Users\*User*\

    Also muss ich quasi alles nach dem letzten \ Abschneiden....

    wie mach ich das? ?(

  • Passwort ablaufdatum (in der Vergangenheit)

    • Camulus
    • 23. September 2016 um 07:20

    Muss ich fragen ?(
    Danke dir.

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™