从xp到xp进行远程处理时,Win32 BlockInput无法解锁

时间:2012-07-19 13:05:41

标签: winapi c#-4.0 remote-desktop

我有一个脚本在C#中调用Win32 BlockInput函数,如下所示:

public partial class NativeMethods
    {

        /// Return Type: BOOL->int
        ///fBlockIt: BOOL->int
        [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint =     "BlockInput")]
        [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
        public static extern bool BlockInput([System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] bool fBlockIt);

    }

    public static void toggleMouseAndKeyboard(bool flag)
    {
        try
        {
            NativeMethods.BlockInput(flag);
        }
        catch(Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }

每当我在本地运行脚本时,无论是Windows 7还是Windows XP,这都可以正常工作。我也可以通过按CTRL + ALT + DEL来解锁机器。

当我从Windows 7计算机远程登录到Windows XP或Windows 7到Windows 7时,这也可以工作。如果我突出显示远程桌面窗口,然后按CTRL + ALT + DEL,它将解锁远程桌面会话。

当我首先从Windows 7机器远程到XP机器,然后远离XP远程会话到另一个XP会话时,它甚至可以工作。我可以解锁第二次XP会议。

但是,当我从XP计算机远程连接到另一台XP计算机时,远程桌面会话在运行此脚本后将无法解锁。 CTRL + ALT + DEL不起作用。我们必须重新启动才能重新启动计算机,或者让其他人登录以启动锁定的会话。

似乎每当您开始远程启动的本地计算机是XP时,它都不会解锁任何远程桌面会话。 有谁知道解决这个问题的方法?

0 个答案:

没有答案