TightVNC - VNCExplorer

  • Tach

    Hab mal ein kleines Progrämmchen zusammengebastelt das den Fernzugriff bei TightVNC etwas vereinfacht sodass nur noch der Client und die Verbindungsart ausgewählt werden muss.

    Installation:
    Einfach den ZIP-Ordner im Anhang runterladen, extrahieren und die VNCExplorer.au3 öffnen
    Dann an den im Script kommentierten Stellen die entsprechenden Passwörter einfügen, kompilieren und fertig!

    Nutzung:
    Um neue Clients zu erfassen auf den "Hinzufügen"-Butten klicken und dort die IP und den Clientnamen einschreiben und auf "Speichern" drücken. Besteht der Client bereits, wird gefragt ob die neue Konfigurration anstelle der alten benutzt werden soll. Um Clients zu löschen diese markieren und auf "Löschen" klicken.
    Zur Remote-Verbindung (mit Steuerung) zum Client ganz einfach markieren und auf "Remote" klicken.
    Zur Überwachung (ohne Inputsteuerung) wieder den Client markieren und auf "Überwachung" klicken.

    Info:
    Die Verbindung mit unterschiedlichen Clients funktioniert nur, wenn bei allen das gleiche Passwort benutzt wurde.
    Die Passwörter die im Config stehen sind verschlüsselt, deshalb solltet ihr zuerst die Config einer manuellen Verbindung abspeichern und dann das Passwort aus dieser Config in die .au3 kopieren.

    Bei weiteren Fragen oder Problemen stehe ich (gerne) zur Verfügung.

    Source:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <Process.au3>
    #include <GuiListView.au3>
    #include <File.au3>

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

    If FileExists("c:\programme\TightVNC") Then
    $Form1_1 = GUICreate("VNCExplorer", 410, 284, 235, 336)
    $Form1Button1 = GUICtrlCreateButton("Remote", 272, 16, 129, 25)
    $Form1Button2 = GUICtrlCreateButton("Überwachen", 272, 48, 129, 25)
    $Form1Button3 = GUICtrlCreateButton("Hinzufügen", 272, 80, 129, 25)
    $Form1Button4 = GUICtrlCreateButton("Schliessen", 272, 144, 129, 25)
    $Form1Button5 = GUICtrlCreateButton("Löschen", 272, 112, 129, 25)
    $Form1ListView = GUICtrlCreateListView("Name|IP-Adresse", 24, 16, 241, 249)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 137)
    GUISetState(@SW_SHOW)
    $configs = _FileListToArray("data\configfiles")
    _ArrayDelete($configs, 0)
    $counter = UBound($configs)
    $line = 0
    While $counter > 0
    $current = $configs[$line]
    $file = FileOpen($current, 0)
    $host = FileReadLine("data\configfiles\" &$current, 2)
    $host = StringTrimLeft($host, 5)
    $cfg = StringTrimRight($configs[$line], 4)
    GUICtrlCreateListViewItem($cfg &"|" &$host, $Form1ListView)
    $line = $line + 1
    $counter = $counter - 1
    WEnd
    While True
    $nMsg = GUIGetMsg()
    If $nMsg = $Form1Button1 Then
    $selected = GUICtrlRead(GUICtrlRead($Form1ListView))
    $selected = StringTrimRight($selected, 1)
    $filename = StringSplit($selected, "|")
    $name = $filename[1] &".vnc"
    $remote = FileOpen("data\configfiles\" &$name, 0)
    $text = FileRead($remote)
    FileClose($remote)
    $text = StringReplace($text, "viewonly=", "viewonly=0")
    $text = StringReplace($text, "password=", "password=PASSWORT") ;bei PASSWORT das Passwort für Remote-Zugriffe einfügen
    $remote = FileOpen("data\configfiles\" &$name, 2)
    FileWrite($remote, $text)
    FileClose($remote)
    _RunDOS("start c:\programme\TightVNC\vncviewer.exe -config data\configfiles\" &$name)
    $remote = FileOpen("data\configfiles\" &$name, 1)
    $text = FileRead($remote)
    $text = StringReplace($text, "viewonly=0", "viewonly=")
    $text = StringReplace($text, "password=PASSWORT", "password=") ;bei PASSWORT das Passwort für Remote-Zugriffe einfügen
    FileWrite($remote, $text)
    FileClose($remote)
    EndIf
    If $nMsg = $Form1Button2 Then
    $selected = GUICtrlRead(GUICtrlRead($Form1ListView))
    $selected = StringTrimRight($selected, 1)
    $filename = StringSplit($selected, "|")
    $name = $filename[1] &".vnc"
    $view = FileOpen("data\configfiles\" &$name, 0)
    $text = FileRead($view)
    FileClose($view)
    $text = StringReplace($text, "viewonly=", "viewonly=1")
    $text = StringReplace($text, "password=", "password=PASSWORT") ;bei PASSWORT das Passwort für Überwachungs-Zugriffe einfügen
    $view = FileOpen("data\configfiles\" &$name, 2)
    FileWrite($view, $text)
    FileClose($view)
    _RunDOS("start c:\programme\TightVNC\vncviewer.exe -config data\configfiles\" &$name)
    $view = FileOpen("data\configfiles\" &$name, 1)
    $text = FileRead($view)
    $text = StringReplace($text, "viewonly=1", "viewonly=")
    $text = StringReplace($text, "password=PASSWORT", "password=") ;bei PASSWORT das Passwort für Überwachungs-Zugriffe einfügen
    FileWrite($view, $text)
    FileClose($view)
    EndIf
    If $nMsg = $Form1Button3 Then
    $Form2 = GUICreate("Neu", 195, 118, 385, 490)
    $Form2Button1 = GUICtrlCreateButton("Speichern", 8, 88, 81, 25)
    $Form2Button2 = GUICtrlCreateButton("Schliessen", 104, 88, 81, 25)
    $Form2IPAddress = _GUICtrlIpAddress_Create($Form2, 72, 48, 113, 25)
    _GUICtrlIpAddress_Set($Form2IPAddress, "0.0.0.0")
    $Form2Input = GUICtrlCreateInput("Name", 72, 16, 113, 21)
    $Form2Label1 = GUICtrlCreateLabel("IP-Adresse:", 8, 56, 58, 17)
    $Form2Label2 = GUICtrlCreateLabel("Name:", 8, 16, 35, 17)
    GUISetState(@SW_SHOW)
    While True
    $nMsg = GUIGetMsg()
    If $nMsg = $Form2Button1 Then
    $config = FileOpen("data\original.vnc", 0)
    If $config = -1 Then
    MsgBox(0, "Error", "Could not find original.vnc. File does not exist.")
    Exit
    EndIf
    $name = GUICtrlRead($Form2Input)
    If FileExists("data\configfiles\" &$name &".vnc") Then
    $ask = MsgBox(17, "Client existiert bereits!", "Dieser Client wurde bereits erfasst. Wenn Sie fortfahren, wird die Konfigurierung überschrieben. Möchten Sie dennoch fortfahren?")
    If $ask = 1 Then
    FileDelete("data\configfiles\" &$name &".vnc")
    Else
    GUIDelete($Form2)
    ExitLoop
    EndIf
    EndIf
    $read = FileRead($config)
    $IP = _GUICtrlIpAddress_Get($Form2IPAddress)
    $new = FileOpen("data\configfiles\" &$name &".vnc", 1)
    $read = StringReplace($read, "host=", "host=" &$IP)
    FileWriteLine($new, $read)
    FileClose($new)
    _GUICtrlListView_DeleteAllItems ($Form1ListView)
    $configs = _FileListToArray("data\configfiles")
    _ArrayDelete($configs, 0)
    $counter = UBound($configs)
    $line = 0
    While $counter > 0
    $current = $configs[$line]
    $file = FileOpen($current, 0)
    $host = FileReadLine("data\configfiles\" &$current, 2)
    $host = StringTrimLeft($host, 5)
    $cfg = StringTrimRight($configs[$line], 4)
    GUICtrlCreateListViewItem($cfg &"|" &$host, $Form1ListView)
    $line = $line + 1
    $counter = $counter - 1
    WEnd
    GUIDelete($Form2)
    ExitLoop
    EndIf
    If $nMsg = $Form2Button2 Then
    GUIDelete($Form2)
    ExitLoop
    EndIf
    WEnd
    EndIf
    If $nMsg = $Form1Button5 Then
    $selected = GUICtrlRead(GUICtrlRead($Form1ListView))
    $array = StringSplit($selected, "|")
    $del = $array[1]
    FileDelete("data\configfiles\" &$del &".vnc")
    GUICtrlDelete(GUICtrlRead($Form1ListView))
    EndIf
    If $nMsg = $Form1Button4 Then
    Exit
    EndIf
    WEnd
    Else
    $msg = MsgBox(5, "TightVNC nicht installiert", "TightVNC wurde nicht auf ihrem Computer gefunden, möchten Sie TightVNC installieren? Andernfalls wird das Programm beendet!")
    If $msg = 7 Then
    Exit
    Else
    ShellExecute("http://www.tightvnc.com/", "", "", "", @SW_MAXIMIZE)
    EndIf
    EndIf

    [/autoit]
  • Mir ist da gerade noch etwas aufgefallen...warum funktioniert dieser Codeteil?

    [autoit]

    $clients = FileOpen("data\clients.csv") ;Öffnet die Clientliste
    While True ;Endlosschleife
    $line = FileReadLine($clients) ;Liest die nächste Linie
    If $line = @error Then ;Wenn beim lesen ein Fehler aufgetreten ist
    GUICtrlCreateListViewItem($line, $Form1ListView1) ;Liste füllen
    Else ;Sobald kein Fehler mehr auftritt
    ExitLoop
    EndIf
    WEnd
    FileClose($clients)

    [/autoit]

    eigentlich sollte es ja so sein das Aktion 1 nur ausgeführt wird wenn KEIN Fehler auftritt und er soll nur dann rauspringen, wenn die Datei zu Ende ist. Allerdings tritt beim Lesen kein Fehler auf also sollte Aktion 1 so wie sie hier steht gar nicht ausgeführt werden sondern direkt wieder ins Hauptprogramm gesprungen werden? 8| Sehr verwirrend das alles ?( stört mich aber nicht besonders solange es so funktioniert ^^ micht interessiert nur WIESO es funktioniert. Übrigends das ist bereits von einer Überarbeiteten Version des Programms von Post 1.

    Bild1: Ich beim debuggen