WPF假全屏

时间:2019-05-23 13:54:58

标签: c# wpf api window

我有一个通过模拟击键来自动控制其他Windows应用程序的项目。为了模拟按键,我需要将该应用程序的窗口置于最前面。进行时,您可以在屏幕上看到整个过程。

但是,我想要一个假的全屏屏幕来掩盖它。如果可能的话,我还想在假全屏上显示某些内容,例如进度条。

任何建议都会有所帮助。谢谢

2 个答案:

答案 0 :(得分:0)

您想要实现的是使主表单以对的“全屏窗口”模式显示?

因此,您需要将窗口大小设置为屏幕大小。

在WPF类中,可以采用以下方法:

this.Height = System.Windows.SystemParameters.PrimaryScreenHeight;
this.Width = System.Windows.SystemParameters.PrimaryScreenWidth;

this.WindowState = WindowState.Maximized;

要使窗口向前移动,您还可以使用:

myWindow.Activate();

this.TopMost = true;

我希望这会有所帮助。

答案 1 :(得分:0)

为防止其他窗口在停用时与您的窗口重叠,您可以添加方法,我将在WPF Always On Top(我以前使用过,并且对我来说效果很好)上使用该解决方案{1}}窗口事件:

Deactivated

如果您希望在进行操作时在全屏窗口中显示进度条,则可以执行以下操作:

private void Window_Deactivated(object sender, EventArgs e)
{
    Window window = (Window)sender;
    window.Topmost = true;
}

用法:

private Window CreateFullScreenLoadingBar()
{
    Window fullscreenWindow = new YourLoadingBarWindow();

    fullscreenWindow.WindowStyle = WindowStyle.None;
    fullscreenWindow.WindowState = WindowState.Maximized;
    fullscreenWindow.ResizeMode = ResizeMode.NoResize;
    fullscreenWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;

    fullscreenWindow.Deactivated += delegate (object sender, EventArgs e)
    {
        Window window = (Window)sender;
        window.Topmost = true;
    };            
}

... Window loadingBar = CreateFullScreenLoadingBar(); fullscreenWindow.Show(); fullscreenWindow.Activate(); // Your code loadingBar.Close(); ... 是包含进度栏或您希望用户看到的任何内容的窗口。