Ich schrieb schon über Synergy+, womit man mehrere Computer mit einer Maus und einer Tastatur bedienen kann. Allerdings wollte ich es nicht in den Autostart legen. Außerdem war es mir aber auch zu viel Arbeit jedes Mal, wenn ich es brauche, im Startmenü nach Synergy+ zu suchen, damit den Launcher zu starten und anschließend auf Start zu klicken. Aber wozu gibt es denn AutoHotkey? Ich habe mir dazu ein kleines Skript geschrieben, was Synergy+ beim Druck auf Win+F11 startet und bei einem weiteren Druck dieser Kombination wieder beendet.

Das ganze sieht dann folgendermaßen aus:

; WINDOWS KEY + F11 TO START/STOP SYNERGY+ 
#F11:: 
  Process, Exist, synergyc.exe 
  If (ErrorLevel = 0) { 
    Process, Exist, synergys.exe 
    If (ErrorLevel = 0) { 
        Run, D:\PortableApps\Synergy+\bin\launcher.exe 
        WinWait, ahk_class GoSynergy 
        Send, {Enter} 
        WinWait, ahk_class SynergyConsole,, 1 
        IfWinExist, ahk_class SynergyConsole 
          WinClose, ahk_class SynergyConsole 
        return 
    } 
    Else 
      Process, Close, synergys.exe 
  } 
  Else 
    Process, Close, synergyc.exe 
return

Das geht auf jedem Rechner, egal ob Client oder Server. Es muss vorher nur schon einmal Synergy+ gestartet worden sein, um die Einstellungen zu ändern. Außerdem muss halt jeder für sich den Pfad zu Synergy+ eintragen. Das Skript gibt es auch nochmal bei textsnip.

Nun also noch die Erklärung:

  • Erst wird überprüft, ob der Client (synergyc.exe) läuft.
  • Ist dies nicht der Fall wird noch überprüft, ob der Server (synergys.exe) läuft.
  • Wenn dies ebenfalls nicht so ist, wird der Launcher gestartet.
  • Nach dem Warten bis das Fenster offen ist, wird ein Druck auf Enter gesendet, da beim Starten des Launchers die Schaltfläche “Start”, die wir ja betätigen wollen, den Fokus hat.
  • Nun wird gewartet bis die Log-Konsole von Synergy+ geöffnet ist. Dies war bei mir nur beim Client der Fall, weshalb das Warten auch nach einer Sekunde abgebrochen wird. Sonst blieb das Skript beim Server, der die Konsole nicht startete, nämlich an dieser Stelle hängen.
  • Ist die Konsole dann geöffnet, wird diese geschlossen.
  • Nun folgt das else zur Abfrage, ob der Server läuft. Sofern er läuft, wird er nun nämlich geschlossen.
  • Schließlich wird noch der Client geschlossen, falls dieser läuft.

Ich hoffe, jemand kann das gebrauchen, mir nützt es jedenfalls sehr.