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

Beiträge von Videoli

  • Bildschirmschoner beenden über Script

    • Videoli
    • 20. Mai 2016 um 10:27
    AutoIt
    Func _interruptScreensaver()
    	$handle=WinGetHandle("[active]")
    	$tmpGui=GUICreate("")
    	GUIDelete($tmpGui)
    	WinActivate($handle)
    	ProcessClose("scrnsave.scr")
    	;MsgBox($MB_SYSTEMMODAL, "", "Command received")
    EndFunc

    Das ist jetzt die Lösung des Problems. Der Prozess scrnsave.scr muss beendet werden.

  • Bildschirmschoner beenden über Script

    • Videoli
    • 16. Mai 2016 um 10:10

    Hallo Kanashius,

    bei mir funktioniert das nicht auf nem Win8.1 Rechner.
    Die Connection funktioniert, der Befehl wird auch empfangen, aber der Screensaver bleibt.
    Um zu testen, ob der Befehl ankommt, habe ich einfach eine Message-Box eingefügt:


    AutoIt
    Func _interruptScreensaver()
    	$handle=WinGetHandle("[active]")
    	$tmpGui=GUICreate("")
    	GUIDelete($tmpGui)
    	WinActivate($handle)
    	MsgBox($MB_SYSTEMMODAL, "", "Command received")
    EndFunc

    Scheinbar ist da ein Unterschied zwischen Win7 und Win8.1. Ich habe eine Mediensteuerung amStart, von der aus ich die UDP oder TCP-Befehle verschicken kann.

    Der Grund, warum ich mit TCP arbeiten möchte, ist, daß ich hierbei mit der Mediensteuerung über den TCP-Connect einfach testen kann, ob der Rechner überhaupt da ist/hört.

  • Dllcall geht nur teilweise

    • Videoli
    • 12. Mai 2016 um 16:32

    Mausverschiebung kann nur das Einschalten des Screensavers verhindern, schaltet ihn dann aber nicht mehr ab, wie oben schon erwähnt. Ich habe einen neuen Thread eröffnet...

  • Bildschirmschoner beenden über Script

    • Videoli
    • 12. Mai 2016 um 16:30

    Hallo, ich hatte gestern schon auf einen alten Thread geantwortet, bin darauf hingewiesen worden, nen neuen aufzumachen.

    Also folgende Geschichte: Ich möchte von einer Mediensteuerung (Crestron) aus bei einem Win 8 Rechner den Bildschirmschoner beenden über ein Script. Nun kam die Antwort, daß ich das doch mit Mausbewegung machen soll. Nun ist es aber so, daß die Mausbewegung tatsächlich verhindern kann, daß der Bildschirmschoner überhaupt angeht, wenn der Bildschirmschoner aber aktiv ist, hilft weder eine virtuelle Mausbewegung noch eine virtuelle Keyboardeingabe, der Bildschirmschoner muss offensichtlich durch eine hardwareseitig verbundene Maus oder Tastatur wieder beendet werden. Nach längerer Recherche im www habe ich herausgefunden, daß man wohl den Screensaver-Prozess beenden muss, damit die Sache funktionieren kann. Da ich aber beim Mediensteuerungs-Programmieren relativ fit bin, aber bezüglich Scripting praktisch noch nie was gemacht habe, bräuchte ich da etwas Hilfe.

    Mit den Beispielen aus der Hilfe habe ich zumindest schon die Verbindung an den Start bekommen. Allerdings verstehe ich da noch manches nicht so ganz. Vielleicht kann mir da jemand weiterhelfen.

    Func ScreensaverOFF()
    TCPStartup() ; Start the TCP service.

    ; Register OnAutoItExit to be called when the script is closed.
    OnAutoItExitRegister("OnAutoItExit")

    ; Assign Local variables the loopback IP Address and the Port.
    Local $sIPAddress = "192.168.8.102" ; This IP Address only works for testing on your own computer.
    Local $iPort = 61555 ; Port used for the connection.

    Local $iListenSocket = TCPListen($sIPAddress, $iPort, 100)
    Local $iError = 0

    ;Local $sReceived = TCPRecv($iSocket, 1024)

    If @error Then
    ; Someone is probably already listening on this IP Address and Port (script already running?).
    $iError = @error
    MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Could not listen, Error code: " & $iError)
    Return False
    EndIf

    ; Assign a Local variable to be used by the Client socket.
    Local $iSocket = 0

    Do ; Wait for someone to connect (Unlimited).
    ; Accept incomming connexions if present (Socket to close when finished; one socket per client).
    $iSocket = TCPAccept($iListenSocket)

    ; If an error occurred display the error code and return False.
    If @error Then
    $iError = @error
    MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Could not accept the incoming connection, Error code: " & $iError)
    Return False
    EndIf

    If GUIGetMsg() = $GUI_EVENT_CLOSE Then Return False

    Local $sReceived = TCPRecv($iSocket, 14)
    IF $sReceived="ScreensaverOFF" Then
    If ProcessExists("scrnsave.scr") Then ; Check if the Screensaver process is running.
    ProcessClose("scrnsave.scr")
    Else
    MsgBox($MB_SYSTEMMODAL, "", "Screensaver is not running")
    EndIf
    EndIf


    Until $iSocket <> -1 ;if different from -1 a client is connected.
    ; Assign a Local variable the data received.

    ; Notes: If you don't know how much length will be the data,
    $arMPos=MouseGetPos()
    ;Maus bewegen um 10 Pixel nach unten rechts
    MouseMove($arMPos[0]+10,$arMPos[1]+10,1)
    ;Falls die Maus unten rechts war konnte sie nicht bewegt werden, bewegen wir sie nach oben links
    MouseMove($arMPos[0]-10,$arMPos[1]-10,1)
    ;Maus zurücksetzen
    MouseMove($arMPos[0],$arMPos[1],1)

    ; Close the Listening socket to allow afterward binds.
    TCPCloseSocket($iListenSocket)

    EndFunc ;==>ScreensaverOFF


    Func OnAutoItExit()
    TCPShutdown() ; Close the TCP service.
    EndFunc ;==>OnAutoItExit


    So wie es jetzt ist, funktioniert es mit der Mausgeschichte, ich öffne einfach eine TCP Verbindung und schon wird die Maus verschoben. Wie gesagt, hilft das allerdings nicht zur Beendigung des Screensavers. Dann habe ich im Do-Until Bereich eine Abfrage drin, die erkennen soll, was geschickt wurde, das fände ich ehrlich gesagt eleganter. Ich hatte testhalber auch schon ne Messagebox eingebaut, die mir die Sache auch ausgegeben hat, allerdings sehr unzuverlässig und natürlich habe ich momentan keine dauerhafte Überprüfung der Schnittstelle, nach einer Verbindung ist Schluß. Aber das ist ja dann zweitrangig und vermutlich eher kein Problem.

    Kann mir jemand weiterhelfen?

  • Dllcall geht nur teilweise

    • Videoli
    • 11. Mai 2016 um 11:49

    Hallo, ich habe ein ähnliches Problem und bin erst gerade auf AutoIT gestossen. Ich möchte ein kleines Script schreiben, das auf einen bestimmten Port (TCP) hört und bei einem bestimmten Signalwort (z.B. ScreensaverOFF) den Screensaver deaktiviert. Ich habe zur Lösung schon etliches an Research betrieben und zumindest herausgefunden, daß man den Prozess xxxxxx.scr beenden muss, um den aktuell laufenden Screensaver zu beenden. Hat jemand einen Vorschlag?

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™