Gleichzeitig immer im Vordergrund

  • Nabend.

    Hab mal ne Frage und zwar:

    Wenn ich nun ein script hab, in dem der z.B. der taskmanager gesperrt ist, also der Prozess wird blockiert.
    Wenn sich aber nun z.B. eine MsgBox öffnet, dann hählt das script ja da an und wartet auf die eingabe.

    Wärend dessen, ist ja die block funktion auser betrieb.
    geht das i.wie, das man z.B. eine MsgBox UND eine Blockfunktion in form von

    [autoit]


    If ProcessExists ("taskmgr.exe")
    ProcessClose ("taskmgr.exe")
    EndIf

    [/autoit]

    hat?

    Ich weis, autoit hats net so mit gleichzeigig machen, aber i.wie is das doch bestimmt machbar, oda?

  • du willst den taskmanager deaktivieren??

    dann such mal im forum^^ gibt merer beiträge..

    btw: woher kommst du genau ich wohne 40km von darmstadt entfernt^^

  • Hi, wie ich den Taskmanager blocke weis ich ja, nur die sache ist, wenn man, wärend

    [autoit]

    If ProcessExists ("taskmgr.exe")
    ProcessClose ("taskmgr.exe")
    EndIf

    [/autoit]


    läuft, eine MsgBox oder InputBox oder so öffnet, dann würd ja der da angehalten, somit wird also auch der code oben nicht mehr ausgeführt.

    Ich will, das der code oben, oder so ein ähnlicher mit gleicher wirkung, weiterläuft, wenn sich eine solche msgbox öffnet.

    Es geht auch net unbedingt um den taskmanger, das is ja nur en beispiel, es geht darum, das etwas gleichzeig gemachtwird ^^
    Klar, man kann solange ein anderes script laufen lassen, das diese block funktion ausführt, aber so wirklich das ware isses ja net ;)

    PS: Wohne am Rand von Kreis Darmstadt-Dieburg. Alsbach-Hähnlein heist das Kaff ^^
    In welche Richtung von Darmstadt aus gesehn wohnsten du?

  • Hi, also mit AdlibEnable geht das nich...

    Ich versuchs mal einfacher auszudrücken...

    [autoit]

    Ist es möglich, dass AutoIt 3.3.0.0 2 Dinge ( 2 Befehle ) absolut gleichzeitig ausführt?

    [/autoit]

    Ein Beispiel:

    Ich habe eine While Schleife.
    In dieser Schleife befindet sich folgender Code:

    [autoit]


    If ProcessExists ("taskmgr.exe")
    ProcessClose ("taskmgr.exe")
    EndIf

    [/autoit]

    Dieser bewirkt, wie ja sogar ein "noob" sehn kann, das der TaskManager geblockt wird.

    Nun mal angenommen das Programm, das sich ja in der While schleife befindet,
    liese sich nur mit einem Passwort beenden.

    Das könnte so aussehn.

    [autoit]


    HotKeySet ("^!{a}", "_End")
    $Pass = "123"

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

    Func _End ()
    If InputBox ("Passwort", "Passwort eingeben", "", "*") = $Pass Then
    Exit
    EndIf
    EndFunc

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

    While 1
    If ProcessExists ("taskmgr.exe")
    ProcessClose ("taskmgr.exe")
    EndIf
    WEnd

    [/autoit]

    So, wenn hier nun Strg + Alt + a gedrückt wird, wird ja die Func _ End () aktiviert.
    Nun komt das script an die stelle, wo es die Passwort eingabe fordert. Und ab hier
    geht es ja nicht mehr weiter. Das heist, der Befehl in der Schleife wird ignoriert. Und alles befehle vor und nach der InputBox auch. Was bedeutet, das man den TaskManager nun starten kann.

    Ist es also irgentwie möglich, den Befehl aus der While Schleife UND der Func _ End () gleichzeitig auszuführen, sodass der TaskManager auch wärend das InputBox-Fenster offen ist, weiterhin geblockt wird?


    So, also ichdenke das dürfte jetz sogar 10 jähriger verstanden haben :rofl:

  • So z.B.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    HotKeySet ("!e", "_End")
    $Pass = "123"

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

    AdlibEnable ( "_tm", 100 )

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

    $Form1 = GUICreate("Kindersicherung", 241, 84, 614, 410)
    $Input1 = GUICtrlCreateInput("", 16, 24, 121, 21)
    $Button1 = GUICtrlCreateButton("Bestätigen", 160, 24, 59, 25, 0)
    GUISetState(@SW_HIDE)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetState ( @SW_HIDE)
    Case $Button1
    $BenutzerEingabe=GUICtrlRead ( $Input1 )
    If $BenutzerEingabe==$Pass Then
    Exit
    Else
    GUICtrlSetData ( $Input1, "FALSCH" )
    EndIf
    EndSwitch
    WEnd

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

    Func _End ()
    GUISetState ( @SW_SHOW )
    EndFunc

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

    Func _tm()
    If ProcessExists ("taskmgr.exe") Then
    ProcessClose ("taskmgr.exe")
    EndIf
    EndFunc

    [/autoit]

    PS: Ich wohn auch nur 20 km von Darmstadt weg^^, in Groß-Umstadt

  • Hehe, Groß-Umstadt is garnet mal so weit ^^

    Zum Thema:

    Da gibts was, was ich net so ganz verstehe:
    Wenn er durch AdlibEnable in die _tm func geht, geht er dann wieder an den anfang des scripts, wenn die _tm func durchlaufen wurde?

  • Ah, aso ^^

    bin noch net ganz so mit Adlip vertraut ^^

    Mal gucken ob ich das doch i.wie in mein script einbauen kann.


    Also mir fällt jetz nich wirklich ein, wie ich das hier einbauen könnte, so wie es jetz is, wills net wirklich funzen:

    Spoiler anzeigen
    [autoit]

    If Not IsAdmin () Then
    MsgBox (16, "Error", "Achtung, es wurden keine Admin-Rechte bei Ihnen erkannt!" & @CRLF & @CRLF & "Bitte melden Sie sich als Admin an." & @CRLF & "Sollten Sie nicht der Besitzer dieses PS's sein," & @CRLF & "so setzen Sie sich bitte mit diesem in Verbindung.")
    Exit
    EndIf
    ; -----

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

    ; -----
    #include <ProcessGetFilenameUDF.au3>
    #include <EditConstants.au3>
    #include <ProcessBlockUDF.au3>
    #NoTrayIcon
    ; -----
    $GUI = GUICreate ("ProzessBlocker", 190, 230)
    GUISetState (@SW_SHOW)
    GUISetBkColor (0xCCF899)
    GUICtrlCreateLabel ("Prozess auswählen/Eingeben.", 10, 13, 200)
    $ProcessInput = GUICtrlCreateCombo ("Auswählen/Eingeben", 10, 30, 150)
    GUICtrlCreateLabel ("Pfad zum Programm.", 10, 53, 200)
    $PfadInput = GUICtrlCreateInput ("", 10, 70, 120)
    GUICtrlCreateLabel ("Passwort zum starten eingeben.", 10, 93, 200)
    $StartInput = GUICtrlCreateInput ("", 10, 110, 150)
    GUICtrlCreateLabel ("Passwort zum beenden eingeben.", 10, 133, 200)
    $EndInput = GUICtrlCreateInput ("", 10, 150, 150)
    $OK = GUICtrlCreateButton ("OK", 40, 190, 40)
    $Exit = GUICtrlCreateButton ("Exit", 90, 190, 40)
    $Search = GUICtrlCreateButton ("...", 130, 70, 30, 20)
    $allprocess = ProcessList()
    ; -----
    For $i = 1 to $allprocess[0][0]
    GUICtrlSetData ($ProcessInput, $allprocess[$i][0], "Auswählen/Eingeben")
    Next
    ; -----
    HotKeySet ("^!{q}", "_Start")
    HotKeySet ("^!{w}", "_End")
    ; -----
    Func _Start ()
    $pwStart = GUICtrlRead ($StartInput, 1)
    $PwInput1 = InputBox ("Bitte Passwort eingeben", "Bitte gib hier nun das Passwort ein, um das Programm zu starten.", "", "*")
    If $PwInput1 = $pwStart Then
    $Pfad = GUICtrlRead ($PfadInput, 1)
    Beep (500, 100)
    Run ($pfad)
    Exit
    Else
    $Msg1 = MsgBox (4+16, "Error", "Das Passwort wurde falsch eingegeben." & @CRLF & "Erneut versuchen?")
    If $Msg1 = 7 Then
    _While ()
    Else
    _Start ()
    EndIf
    EndIf
    EndFunc ;==> _Start
    ; -----
    Func _End ()
    $pwEnd = GUICtrlRead ($EndInput, 1)
    $PwInput2 = InputBox ("Bitte Passwort eingeben", "Bitte Passwort zum beenden des Programmes eingeben", "", "*")
    If $PwInput2 = $pwEnd Then
    $Msg3 = MsgBox (4+32, "Beenden", "Wollen Sie das Programm wirklich beenden?")
    If $Msg3 = 6 Then Exit
    Else
    $Msg2 = MsgBox (4+16, "Error", "Das Passwort wurde falsch eingegeben" & @CRLF & "Erneut versuchen?")
    If $Msg2 = 7 Then
    _While ()
    Else
    _End ()
    EndIf
    EndIf
    EndFunc ;==> _End
    ; -----
    Func _While ()
    While 1
    $Prozess = GUICtrlRead ($ProcessInput, 1)
    _ProcessBlock ($prozess, True)
    _ProcessBlock ("taskmgr.exe", True)
    WEnd
    EndFunc ;==> _While
    ; -----
    While 1
    $nMsg = GUIGetMsg ()
    Select
    Case $nMsg = $OK
    GUISetState (@SW_HIDE)
    AdlibEnable ("_While", 100)
    Case $nMsg = $Exit
    If MsgBox (4+32, "Beenden", "Wollen Sie das Programm wirklich beenden?") = 6 Then Exit
    Case $nMsg = $Search
    GUICtrlSetData ($PfadInput, FileOpenDialog ("Datei auswählen.", @DesktopDir, "Alle (*.*)" ))
    Case $nMsg = $ProcessInput
    $Prozess = GUICtrlRead ($ProcessInput, 1)
    GUICtrlSetData ($PfadInput, _WinAPI_ProcessGetFilename ($Prozess, True))
    EndSelect
    WEnd

    [/autoit]

    2 Mal editiert, zuletzt von Commander21 (23. März 2009 um 15:11)