【问题标题】:Get Active Window of .net application获取 .net 应用程序的活动窗口
【发布时间】:2014-09-02 21:02:13
【问题描述】:

我有一个名为 ProLaunch.exe 的应用程序。如果用户在指定时间段内没有执行任何操作,我想在其中获取活动窗口并关闭它。应用程序中的计时器将用于此目的。

如何获取活动窗口并关闭它?

【问题讨论】:

    标签: c# .net windows


    【解决方案1】:

    如果我正确理解了这个问题,您可以为此使用 Win32 API GetActiveWindow。这应该适用于 Forms 和 WPF 应用程序。

    [DllImport("user32.dll")]
    static extern IntPtr GetActiveWindow();
    
    [DllImport("user32.dll")]
    public static extern int SendMessage(int hWnd, IntPtr msg, int wParam, int lParam);
    
    public const int WM_SYSCOMMAND = 0x0112;
    public const int SC_CLOSE = 0xF060;
    
    // close the active window using API        
    private void FindAndCloseActiveWindow()
    {
     IntPtr handle=GetActiveWindow();
     SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE, 0);
    }
    

    【讨论】:

    • GetActiveWindow 是否适用于模态和非模态对话框?
    • 在引擎盖下,对话框只是窗口,所以我不明白为什么不这样做。只要窗口属于您的应用程序,它就应该可以工作。如果您希望关闭应用程序外部的窗口,那么您需要一种不同的方法。
    • 只有当表单不是从特定类派生时,我才需要关闭窗口。这可能吗?
    • SendMessage的第二个参数应该是IntPtr
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多