Es ist fertig...vorerst.
Vielleicht kannst du das oder Teile davon brauchen.
Beiträge von Camulus
-
-
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.
-
-
Ah ist schon raus das zusätzliche String... dann versuch ich mal mein Glück
-
Ok...jetzt habt ihr mich abgehängt.
Wie sollte es dann aussehen?
-
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
Alles anzeigen#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
Die ini Datei
Code
Alles anzeigen#---------------------------------------------------------------------------------------------------------------------- # 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
Vermutlich gibt es ne einfache Lösung auf die ich nur nicht komme -
Danke das ist tatsächlich leichter einzubauen.
Das wird ein laaaanges Projekt glaub ich
-
Danke ich versuch mal mein GlückWenn ich vollends verwirrt bin melde ich mich
-
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.au3passiert 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
Alles anzeigen#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
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 -
Da taucht schon die erste Hürde auf
Spoiler anzeigen
C
Alles anzeigen#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
also ich hab schon mal mein Listenfeld. Und kann Pfade rein packen. Soweit so gut
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?
-
Das Problem hatte ich auch
Aber so heißt es wohl nunmalalpines: 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
-
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
Alles anzeigen#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
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?
-
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
Alles anzeigenFunc _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
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 LaufwerkeDie ini Datei ist so aufgebaut
Code
Alles anzeigen[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
EDIT:
Ich glaub ich habs.Code
Alles anzeigen$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()
Scheint erst mal zu funktionieren.
Wenn jemand was eleganteres hat immer raus damit;) -
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?
-
If $Ping then anstatt if ping > x then
scheint zu reichen. -
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
Alles anzeigen#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
Irgendwie steh ich etwas auf dem Schlauch
-
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
-
Danke
Reguläre Ausdrücke sind echt schweinkram -
Hi,
ich hab eine ini Datei da steht sowas:
1=C:\Users\*User*\Pictures
2=C:\Users\*User*\DesktopDas lese ich aus um zu wissen welche Verzeichnisse gesichert werden sollen:
Code
Alles anzeigenGlobal $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)
Das ist sicher alles etwas verwirrend.
Aber die Frage ist einfach;)Der zu sichernde Ordner ist ja klar durch:
1=C:\Users\*User*\Pictureswieder herstellen will ich das aber nach:
1=C:\Users\*User*\Also muss ich quasi alles nach dem letzten \ Abschneiden....
wie mach ich das?
-
Muss ich fragen
Danke dir.