Programmfenster vor eingaben schützen?

  • Hi,

    gibt es sowas wie BlockInput aber geziel für nur ein bestimmtes Fenster? Sprich das dieses Fenster dann Maus und Tastatureingaben ingnoriert allerdings ControlSend akzeptiert?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (19. Juli 2012 um 14:40)

  • Du kannst, sofern du das Zielprogramm selbst geschrieben hast, einfach mit AdLib eine Abfrage basteln, die die GUI deaktiviert, sollte sie im Vordergrund sein. Mit Controlsend kannst du sie dann trotzdem noch im Hintergrund, wenn sie wieder aktiviert ist, ansprechen.
    Nicht sehr elegant, dürfte aber klappen. ;)

    lg chess

  • @D2thunder probier ich aus. Edit: Geht perfekt.

    chesstiger , nein ist Fremdprogramm.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (19. Juli 2012 um 14:40)

  • du könntest ja auch eine GUI drüber legen ;)

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #NoAutoIt3Execute
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)
    Opt("WinTitleMatchMode", 2)
    HotKeySet("{ESC}", "_exit")

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

    ; hier den fenster titel anpassen
    $hGUI = WinGetHandle(".au3 - SciTE")

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

    $hBLOCK = GUICreate("", 10, 10, -1, -1, $WS_POPUP+$WS_VISIBLE, -1, $hGUI)
    WinSetTrans($hBLOCK, "", 1)

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

    While 1
    _BlockGUI_Update()
    Sleep(100)
    WEnd

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

    Func _exit()
    Exit
    EndFunc

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

    Func _BlockGUI_Update()
    Local $aGUI_Data = _WinGetClientPos($hGUI)
    WinMove($hBLOCK, "", $aGUI_Data[0], $aGUI_Data[1], $aGUI_Data[2], $aGUI_Data[3], 1)
    If WinActive($hGUI) Then WinActivate($hBLOCK)
    EndFunc
    Func _WinGetClientPos($hTitle, $hText = '')
    Local $aWPos, $aCSize, $iBorder, $iTitle
    $aWPos = WinGetPos($hTitle, $hText)
    $aCSize = WinGetClientSize($hTitle, $hText)
    $iBorder = ($aWPos[2] - $aCSize[0]) / 2
    $iTitle = ($aWPos[3] - $aCSize[1]) - $iBorder
    Local $aOut[4] = [$aWPos[0] + $iBorder, $aWPos[1] + $iTitle, $aCSize[0], $aCSize[1]]
    Return $aOut
    EndFunc

    [/autoit]