Fenster anzeigen durch gesperrten Bildschirm

  • Hallo zusammen,

    ist es mit AutoIt möglich, ein Fenster oder auch eine MsgBox auf einem gesperrten Bildschirm anzuzeigen? Also sozusagen eine Benachrichtung bei einem bestimmten Event trotz gesperrter Station auszugeben.


    Gruß

    Einmal editiert, zuletzt von vurman (13. Juni 2012 um 14:05)

  • Moin.

    Sperrst Du den PC via Autoit-Script selber, so kann dieses möglich gemacht werden.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi,

    nein, ich meine die ganz normale Sperrung von Windows.
    Ich habe sowas schonmal gesehen, da erschien dann so ein kleines Hinweisfenster. Aber da ich leider keinerlei Informationen zu diesem Programm habe, kann ich auch leider nichts zu Funktion, Programmiersprache etc. sagen. Vllt hat ja dennoch jemand einen Hinweis wie man so etwas bewerkstelligen kann.


    Gruß

  • Unter WIn 7 gibt es ja die msg.exe die kann so etwas. Früher unter XP war es ja per Net Send im eingeloggten Zustand möglich.

    So sende ich immer eine Nachricht an die betreffenden User und die Messagebox erscheint auch, wenn der Rechner gesperrt ist (und sogar keiner angemeldet ist).
    Weiß jetzt allerdings nicht, ob es ein Unterschied macht, daß wir die Enterprise-Version von Win7 haben.

    edit: So habe ich bei mir die Funktion verbaut.. Nicht schöner Code, aber ich bin ja noch Anfänger *G*

    [autoit]


    Func NachrichtSend()
    Local $Nachricht = GUICtrlRead($EditRem)
    Local $sendtxt = ""
    Local $lenstr = StringLen($Nachricht)

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

    If $lenstr > 250 Then
    MsgBox(0, "Fehler", "Dein Text ist um " & $lenstr - 250 & " Zeichen zu groß")

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

    Else
    Local $aSplit = StringSplit($Nachricht, @LF)
    ;_ArrayDisplay($aSplit)

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

    For $i = 1 To UBound($aSplit) - 1
    $sendtxt = $sendtxt & $aSplit[$i]
    Next

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

    If $LIP <> "" And $Nachricht <> "" Then
    FileInstall("msg.exe", @TempDir & "\msg.exe")
    RunWait(@TempDir & "\msg.exe " & "* /server:" & $LIP & " " & $sendtxt, @TempDir)
    FileDelete(@TempDir & "\msg.exe")
    Else
    MsgBox(0, "", "Niemand ausgewählt / kein Text geschrieben ??")
    EndIf
    EndIf
    EndFunc

    [/autoit]

    FileInstall der msg.exe, weil diese normalerweise nur per cmd erreichbar ist. So umgehe ich das ganze.

    2 Mal editiert, zuletzt von Torni (12. Juni 2012 um 16:13)

  • Hi,

    das wusste ich gar nicht, daß die msg.exe auch durch den gesperrten Bildschirm anzeigt, auch unter WinXP gibt es die msg.exe, welche auch durch den gesperrten Bildschirm dringt.

    Somit ist das zwar nicht das was ich mir vorgestellt habe, aber eine durchaus brauchbare Alternative, somit vielen Dank für diesen Tip! :)


    Gruß

  • Du kannst auch ganz einfach die normale MsgBox nehmen. Finde ich eleganter.
    Die geht auch durch den gesperrten PC, wenn man das korrekte Flag wählt!

    [autoit]

    Local Const $MB_SERVICE_NOTIFICATION = 0x00200000
    ShellExecute('Rundll32.exe', 'User32.dll,LockWorkStation') ;Lock PC
    Sleep(3000)
    MsgBox(64 + $MB_SERVICE_NOTIFICATION, "Message", "Here is my message" & @CRLF & "Please click on OK")

    [/autoit]

    Gruss Veronesi

  • veronesi:

    Genau sowas habe ich gesucht, Thx.. :D
    Aber auch jetzt wo ich weiß wonach ich suchen muss, finde ich es nicht in der Hilfe. Wie findet man denn sowas heraus? Und gibt es sowas (oder vergleichbar) auch für normale Fenster (zB GUICreate)?


    Gruß

  • Torni:
    Ja, natürlich.
    Mit meiner UDF, mit welcher man Programme auf Remote-PCs starten kann: _RunOnDifferentComputer

    Dann einfach ein Programm aufrufen, welches die Messagebox bringt.
    Aber Achtung: Wenn Du Programme ausführen möchtest, auf PCs, an denen kein Benutzer eingeloggt ist, dann must Du das Passwort des Benutzers kennen.
    Wenn Du dies nicht kennst, kannst Du nur Programme ausführen, wenn der Benutzer eingeloggt ist.

    Am Besten liesst Du mal die Beschreibung meiner UDF durch.

    Veronesi

  • veronesi:

    Genau sowas habe ich gesucht, Thx.. :D
    Aber auch jetzt wo ich weiß wonach ich suchen muss, finde ich es nicht in der Hilfe. Wie findet man denn sowas heraus? Und gibt es sowas (oder vergleichbar) auch für normale Fenster (zB GUICreate)?


    Gruß


    Durch probieren, Foren lesen, suchen.... :)
    Für GUIs gibt es so etwas (meines Wissens leider) nicht.