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

Beiträge von s0nny

  • NetSpeedMonitor InterfaceSwitcher

    • s0nny
    • 13. April 2016 um 19:16

    Habe es jetzt selbst herausgefunden, falls mal jemand ähnliches vor hat, ich bin wie folgt vorgegangen:
    Mit dem AutoIT Window Info Tool hab ich rausgefunden, dass die Taskleiste die Class Shell_TrayWnd hat und die NetSpeedMonitorToolbar ein Control-Element in der Taskleiste ist.

    AutoIt
    Local $hWnd = WinWait("[CLASS:Shell_TrayWnd]", "", 1)
    Local $aPos = ControlGetPos($hWnd, "", "NetSpeedMonitorToolbar1")
    MsgBox($MB_SYSTEMMODAL, "", "Position: " & $aPos[0] & ", " & $aPos[1] & @CRLF & "Size: " & $aPos[2] & ", " & $aPos[3])


    Was mich jetzt noch interessieren würde:
    Wäre es möglich, einen durchsichtigen Frame über den Bereich in der Taskleiste zu legen, an dem der Netspeedmonitor ist. Und wenn man darauf klickt wird das Script gestartet.
    Von dem Frame soll man nichts merken, also wirklich komplett durchsichtig und ohne Titelleiste oder ähnliches. Geht das?

  • NetSpeedMonitor InterfaceSwitcher

    • s0nny
    • 12. April 2016 um 21:13

    Hallo,
    ich nutze den NetSpeedMonitor und bin vom ändern des Interfaces, beim Wechsel zwischen LAN und WLAN, genervt weil dazwischen immer noch gefühlt 1000 unnötige Interfaces kommen wie z.B. Bluetooth, VirtualBox, TeamViewer, Tunngle...
    Ich will also ein kleines Script, welches beim ausführen zwischen LAN und WLAN switched. Das switchen geht einfach, indem man einen Doppelklick auf den NetSpeedMonitor (Symbolleiste) macht.
    Das Problem was ich jetzt habe ist allerdings, das dessen Position abhängig von der Breite des Infobereichs (also der Anzahl der Trayicons) und somit nicht fix ist.
    Kann man die Position irgendwie rauskriegen?

    Grüße

  • Timer mit Progressbar der läuft während ein Programm läuft

    • s0nny
    • 15. März 2016 um 17:33

    Oh Mann, Vielen Dank für Eure Hilfe!
    Hab $configFile von ".\config.ini" auf "@ScriptDir & "\config.ini" geändert und für den Fall, dass noch keine config.ini existiert, erstell ich eine bevor ich drin rumschreiben will. Jetzt funktioniert alles wie gewollt :klatschen:

  • Timer mit Progressbar der läuft während ein Programm läuft

    • s0nny
    • 15. März 2016 um 16:48

    Hallo,
    das ist bereits includiert, hatte ich jetzt nur nicht mitgepostet weil da noch einiges sinnloses mit drin ist. Muss das wenn ich fertig bin erst noch etwas bereinigen. Bzw. ich werd mir dann mal den Inludeorganizer genauer angucken, das klingt äußerst interessant!

    Aber egal was ich mache, sobald ich eine Datei über FileOpenDialog() öffne, schreibt er nichts in die Config.
    Schreib ich was per Hand in das Feld, tut ers.
    Und auch wenn ich die FileOpenDialog() Sachen weglasse und nur die beiden FileSelectFolder() nehme funktioniert es. :(

  • Timer mit Progressbar der läuft während ein Programm läuft

    • s0nny
    • 14. März 2016 um 23:58

    Hallo,
    hilft!
    Hab allerdings noch ein Problem dabei. Ich kann Ordner auswählen, das funktioniert.
    Wenn ich allerdings Dateien auswählen will, funktioniert das nicht. Ich verwende dann statt der FileSelectFolder() Funktion die FileOpenDialog()-Funktion. Die Datei wird auch wie gewünscht im Inputfeld angezeigt. Wenn ich dann allerdings die config erstellen will, passiert nichts.
    Mach ich das ganze nur für ORdner, funktioniert alles tadellos.
    Auch wenn ich statt des FileOpenDialog-Buttons einfach selbst was reinschreibe erstellt er die Config.
    Es wird also wirklich nur dann keine Config gebaut, wenn ich eine Datei(!) über die FileOpenDialog()-Funktion auswähle.

    AutoIt
    $configFile = ".\config.ini"
    $section = "config"
    
    
    If FileExists( $configFile ) == 0 Then
      Dim $aReturn[4][2]
      $aReturn[0][0] = 3
      $aReturn[0][1] = ""
      $aReturn[1][0] = "backupPathLocal"
      $aReturn[1][1] = ""
      $aReturn[2][0] = "backupPathExternal"
      $aReturn[2][1] = ""
      $aReturn[3][0] = "ID-File"
      $aReturn[3][1] = ""
    Else
      $aReturn = IniReadSection($configFile, $section)
    EndIf
    
    
    
    
    
    
    $Form1 	= GUICreate("Configuration erstellen", 	400, 260,  324,	228)
    
    
    $Label1 = GUICtrlCreateLabel("Lokaler Pfad: ", 	8,16, 77, 21)
    $Input1 = GUICtrlCreateInput($aReturn[1][1], 95, 12, 260,21)
    $Button1= GUICtrlCreateButton("...", 360, 12, 35, 21)
    
    
    $Label2 = GUICtrlCreateLabel("Externer Pfad: ", 8, 40, 77, 21)
    $Input2	= GUICtrlCreateInput($aReturn[2][1], 95, 36, 260, 21)
    $Button2= GUICtrlCreateButton("...", 360, 36, 35, 21)
    
    
    $Label3 = GUICtrlCreateLabel("ID-File: ", 8, 64, 77, 21)
    $Input3	= GUICtrlCreateInput($aReturn[3][1], 95, 60, 260, 21)
    $Button3= GUICtrlCreateButton("...", 360, 60, 35, 21)
    
    
    $create = GUICtrlCreateButton("Config erstellen",-2,200, 204, 64)
    $abort 	= GUICtrlCreateButton("Abbrechen",200,200, 204, 64)
    GUISetState(@SW_SHOW)
    
    
    
    
    While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
        Case $GUI_EVENT_CLOSE, $abort
          Exit
    
        Case $Button1
          $path1 = FileSelectFolder("Wähle den lokalen Pfad, an dem die Backups liegen.", "", "All files (*.*)")
          If @error Then
            ContinueLoop
          EndIf
          GUICtrlSetData($Input1, $path1)
    
    
        Case $Button2
          $path2 = FileSelectFolder("Wähle den externen Pfad, an dem die Backups liegen.", "", "All files (*.*)")
          If @error Then
            ContinueLoop
          EndIf
          GUICtrlSetData($Input2, $path2)
    
    
        Case $Button3
          $path3 = FileOpenDialog("Wähle das ID-File aus.", "", "All files (*.*)")
          If @error Then
            ContinueLoop
          EndIf
          GUICtrlSetData($Input3, $path3)
    
    
        Case $create
            Dim $Input[4][2]
    	$Input[0][0] = 3
    	$Input[0][1] = ""
    	$Input[1][0] = "backupPathLocal"
    	$Input[1][1] = GUICtrlRead($Input1)
    	$Input[2][0] = "backupPathExternal"
    	$Input[2][1] = GUICtrlRead($Input2)
    	$Input[3][0] = "ID-File"
    	$Input[3][1] = GUICtrlRead($Input3)
    
    
    	IniWriteSection( $configFile, $section, $Input, 1)
    	ConsoleWrite(@ERROR&@LF)
    	Exit
      EndSwitch
    WEnd
    Alles anzeigen
  • Timer mit Progressbar der läuft während ein Programm läuft

    • s0nny
    • 14. März 2016 um 17:06

    Hallo,
    vielen Dank für Eure Antworten.
    Bin leider erst am Wochenende dazu gekommen, am Script weiter zu arbeiten.

    Zitat von autoBert

    Eine ProgressBar die schon 100% zeigt bevor das Backup fertig ist, wirkt nicht nur unschön sondern verleitet auch dazu schon abzustpüseln. Daher rate ich zur Marquee-Progressbar. Timer kannst du mit AdLibRegister machen.

    Der Marquee-Progressbar ist dafür natürlich einiges besser geeignet, hab ich nun auch so umgesetzt :klatschen:

    Zitat von bazii

    Die Vorgehensweise mit dem AOMEI Backupper als Image auf eine lokale Partition würde ich jedoch überdenken. Ich rate driekt zu einem AOMEI Backupper Image (oder Acronis macht das auch super) auf eine externe Festplatten-Lösung.
    Wenn Du den Benutzer vor Ransomware schützen möchtest, sollte auf jeden Fall immer ein abgeschlossenes Image sehr dienlich sein.

    Genau das tue ich ja. Ich mache von den Benutzerdaten regelmäßig ein Backup als Image und speichere dieses auf einer lokalen Partition. Das hat den Vorteil, dass das Backup jederzeit im Hintergrund laufen kann, ohne dass der Benutzer etwas tun muss.
    Dann kommt das Script zum Einsatz. Dieses pack ich in den Windowsscheduler und lass es regelmäßig ausführen. Das Script sagt dem Nutzer dann "Hey, hast schon seit 3 Tagen dein Backup nicht mehr gesichert, mach mal wieder!" (ob nun 3 Tage, ein Tag oder vll nur wöchentlich nötig ist muss iletztendlich der Nutzer entscheiden)
    Der Nutzer kann dann sagen OK, dann wird er aufgefordert die externe anzuschließen und OK zu drücken und die Backups werden auf die externe gesichert. Wenn das Backup fertig ist nerv ich den Nutzer noch damit, dass er die externe wieder entfernen muss.
    Damit nehm ich den Nutzer denk ich recht gut an die Hand, und "zwinge" ihn wirklich zu beherzigen, dass das Backupmedium nicht dauerhaft am PC angeschlossen ist.
    Wenn ich das Backup direkt auf die externe machen würde, müsste der Nutzer die externe entweder immer angeschlossen haben (schlecht) oder das Backup selbst starten wenn er die Festplatte angeschlossen hat (schlecht).
    Das einzige was mit meiner Methode halt passieren könnte ist, dass das Backup immer schön auf der lokalen Platte gesichert wird, der Nutzer aber immer die Aufforderung, das Backup auf der externen sichern zu lassen, wegklickt. Aber ab einem gewissen Punkt ist der Nutzer meiner Meinung nach auch selbst in der Pflicht. Und wenn es ihm nicht zuzumuten ist, die externe aller paar Tage anzuschließen wenn der PC ihm den Hinweis schon gibt und einmal OK zu drücken, dann hat er halt einfach pech :D

    Bin wie gesagt soweit durch, hänge nun noch vor einem kleinen "Problem".
    Ich speichere Daten wie den Pfad wo die Backups sind und den Zielpfad in einer .ini-Datei.
    Dafür habe ich noch ein kleines extra Script gemacht, mit dem man diese Config erstellen kann. Das Gui sieht erstmal ungefähr so aus:


    AutoIt
    $Form1 	= GUICreate("Configuration erstellen", 400, 280,   324,228)
    $Label1 = GUICtrlCreateLabel("Lokaler Pfad: ", 	8,	16, 	64, 17)
    $Label2 = GUICtrlCreateLabel("Externer Pfad: ", 8, 	40, 	68, 17)
    $Label3 = GUICtrlCreateLabel("SyncToy-Pfad: ", 	8, 	64, 	71, 17)
    $Label4 = GUICtrlCreateLabel("SyncToy-Name: ", 	8, 	88, 	77, 17)
    $Label5 = GUICtrlCreateLabel("ID File: ", 	8, 	112, 	34, 17)
    $Label6 = GUICtrlCreateLabel("Logfile: ", 	8, 	136, 	35, 17)
    $Label7 = GUICtrlCreateLabel("Warnschwelle: ", 	8, 	160, 	71, 17)
    $Label8 = GUICtrlCreateLabel("Datenrate: ", 	8, 	184,	51, 17)
    
    
    $Input1 = GUICtrlCreateInput($aReturn[1][1], 104, 	12, 	281, 21)
    $Input2	= GUICtrlCreateInput($aReturn[2][1], 104, 	36, 	281, 21)
    $Input3	= GUICtrlCreateInput($aReturn[3][1], 104, 	60, 	281, 21)
    $Input4	= GUICtrlCreateInput($aReturn[4][1], 104, 	84, 	281, 21)
    $Input5	= GUICtrlCreateInput($aReturn[5][1], 104, 	108, 	281, 21)
    $Input6	= GUICtrlCreateInput($aReturn[6][1], 104, 	132, 	281, 21)
    $Input7	= GUICtrlCreateInput($aReturn[7][1], 104, 	156, 	281, 21)
    $Input8	= GUICtrlCreateInput($aReturn[8][1], 104, 	180, 	281, 21)
    $Button1 = GUICtrlCreateButton("Config erstellen",0,	216, 	200, 64)
    $Button2 = GUICtrlCreateButton("Abbrechen",	 200,	216, 	200, 64)
    Alles anzeigen

    Wie krieg ich es denn hin, dass ich in die Input-Zeile reinklicken kann, und sich dann ein FileSelectFolder-Fenster öffnet? Und wenn ich den Pfad ausgewählt habe, soll der Pfad im Input-Feld stehen.
    Oder alternativ könnt ich mir auch vorstellen rechts neben der Input-Zeile einen kleinen Button mit 3 Punkten zu haben [...], der das FileSelectFolder-Fenster öffnet (soweit erstmal kein Problem, das würd ich noch hinkriegen) und dann widerum den ausgewählten Pfad in das Input-Feld einträgt.
    Oder ist das so nicht möglich?

  • Timer mit Progressbar der läuft während ein Programm läuft

    • s0nny
    • 9. März 2016 um 01:31

    Hallo,
    bin gestern erst auf AutoIT gestoßen, als ich nach einer Möglichkeit gesucht habe, eine Dateisicherung für einen Nutzer so einfach und idiotensicher wie möglich zu machen.
    Grund ist, dass diese Person vor kurzem von Ransomware befallen war. Eine Datensicherung war zwar vorhanden, aber die nützt in diesem Fall ja äußerst wenig, wenn die externe auf die gesichert wird, dauerhaft am System ist. Nun soll eine absolut idiotensichere Möglichkeit her, das ordentlich zu machen (heißt Festplatte soll auch immer schön getrennt werden und der Nutzer soll nicht viel mehr machen müssen als 1-2 mal OK zu drücken und die Festplatte an- und abzustöpseln).
    Das ganze soll so nun so ablaufen:
    Alle wichtigen Daten werden mit AOMEI Backupper als Image auf eine lokale Partition gesichert, wenn sich der Benutzer am System anmeldet (oder via Schedule, weiß ich noch nicht)
    Diese Dateien sollen dann mittels SyncToy auf eine externe HDD gesynct werden.
    Ich schreib also grad an einem kleinen Scrypt, welches über den Windows Task Scheduler regelmäßig ausgeführt wird, und als erstes mal über ein logfile prüft, wann die Backups zum letzten mal gesynct wurden. Ist eine gewisse Zeitschwelle überschritten, poppt ein Fenster auf, was dem Nutzer sagt wann das letzte mal gesynct wurde und dass es doch mal wieder an der Zeit wäre.
    Er kann dann abbrechen oder ja sagen. Dann wird geprüft ob die externe angeschlossen ist und ggf. so oft darauf hingewiesen, dass diese angeschlossen werden soll, bis sie auch wirklich angeschlossen ist.
    Dann ruf ich SyncToy über die CMD auf und starte den SyncVorgang.
    Dabei würde ich gerne einen kleinen Timer laufen lassen, der anzeigt, wie lange die Synchronisierung schon dauert. Optimal wäre auch noch ein Fortschrittsbalken, der definitiv nicht genau sein muss! Würde da einfach eine anzunehmende Datenrate für verwenden und ob er dann schon bei 80% fertig ist, oder der Balken schon 100% zeigt und er noch nicht ganz fertig ist, ist nicht so wichtig. Das dient nur zur ungefähren Abschätzung und dass der Anwender nicht denkt da würde nichts mehr passieren und er könne den PC einfach ausschalten. Das (also der Timer+Fortschrittsbalken) ist eigentlich das einzige was mir noch fehlt.
    Weiß nicht genau wie ich das bewerkstelligen soll, weil alles was ich so gefunden hab mir While-Schleifen Arbeitet, und das Programm somit an dieser stelle quasi "stecken bleibt".
    Am Ende würde dann noch der Hinweis kommen, dass die externe jetzt bitte wieder abgestöpselt wird.

    Gibt es da eine Möglichkeit? Oder ist mein Grundgedanke schon falsch?

    Vielen Dank schonmal für euere Bemühungen :)

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™