小编bob*_*bob的帖子

在if语句中使用GetForegroundWindow结果来检查用户的当前窗口

我需要检查用户当前选择的窗口,并且如果他们选择了特定程序则执行操作.

我之前没有使用过GetForegroundWindow函数,也找不到有关如何以这种方式使用它的任何信息.

我只需要比较当前窗口,看看它是否是一个特定的程序.但是,GetForegroundWindow函数似乎不会返回字符串或int.所以主要是我不知道如何找出我要比较的程序窗口的值.

我目前有代码来获取当前窗口:

    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();

    IntPtr selectedWindow = GetForegroundWindow();
Run Code Online (Sandbox Code Playgroud)

我需要能够如下理想地应用它:

    If (selectedWindow!="SpecificProgram")
    {
        <Do this stuff>
    } 
Run Code Online (Sandbox Code Playgroud)

我希望GetForegroundWindow值/对象对每个程序都是唯一的,并且不会以某种方式运行,每个特定的程序/窗口每次都有不同的值.

我也将此作为Windows窗体的一部分,但我怀疑它很重要.

-谢谢你的帮助

编辑:这种方式有效,并使用当前窗口的图块,这使得它非常适合检查窗口是否正确:

        [DllImport("user32.dll")]
        static extern IntPtr GetForegroundWindow();
        [DllImport("user32.dll")]
        static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);

        private string GetActiveWindowTitle()
        {
            const int nChars = 256;
            StringBuilder Buff = new StringBuilder(nChars);
            IntPtr handle = GetForegroundWindow();

            if (GetWindowText(handle, Buff, nChars) > 0)
            {
                return Buff.ToString();
            }
            return null;
        }
Run Code Online (Sandbox Code Playgroud)

然后我可以这样做:

        if (GetActiveWindowTitle()=="Name of Window")
        {
            DoStuff.jpg 
        }
Run Code Online (Sandbox Code Playgroud)

c# if-statement dllimport winforms

6
推荐指数
1
解决办法
2万
查看次数

Winform同时显示在所有现有监视器上(它是一个警报窗口)

我有一个小应用程序,它起到警报系统的作用,我使用一个表单作为警报出现在屏幕上,因为它们更通用和消息框.由于警报的性质,我需要它出现在所有当前连接的监视器的中心.我现在只在主监视器上显示它.

我在这里看了这两个帖子:

在辅助监视器上显示Windows窗体?

如何确保在双监视器方案中"附加"监视器上显示表单?

但我真的无法理解它,我已经查看了Screens.AllScreens属性,但仍然感觉没有更好的理解如何告诉表单哪个监视器出现,甚至更多地让它出现在多个,因为我假设我需要通过AllScreens数组进行循环.

我还需要关闭其中一个按钮时钟的所有表格,但是现在我只想在所有显示器上显示它们.

很抱歉提出一个我觉得大多数人都认为已经回答的问题.

c# multiple-monitors winforms setbounds

1
推荐指数
1
解决办法
960
查看次数