我想在 Visual Studio C# 中的多个屏幕(辅助屏幕)上查看 *.pdf 文件。 它没有发生。

编程


我的第一个问题是,我希望按下按钮时相关目录中的 E:\GG\dosya3.pdf 文件显示在多个屏幕(辅助屏幕)上。 它出现在主屏幕上。 副屏幕上没有任何显示。

我的第二个问题是,我想在按下按钮时在主屏幕上获取图像,在按下按钮时在第二屏幕上获取图像,并在按下按钮时在两个屏幕(主屏幕和辅助屏幕)上获取图像。 如果你能帮忙我会很高兴。

我尝试过的:

C#
private void button8_Click(object sender, EventArgs e)
{
	Process p = new Process();
	p.EnableRaisingEvents = true;
	p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
	p.StartInfo.CreateNoWindow = true;
	p.StartInfo.FileName = @"C:\Program Files (x86)\Foxit Software\
        Foxit PDF Reader\FoxitPDFReader.exe";
	p.StartInfo.Arguments = @"E:\GG\dosya3.pdf";
	p.StartInfo.UseShellExecute = false;
	p.Start();
	p.WaitForInputIdle();
	Rectangle secondmonitor = Screen.AllScreens[1].WorkingArea;
	SetWindowPos(p.MainWindowHandle, 0,
                 secondmonitor.Left, secondmonitor.Top,
                 secondmonitor.Width, secondmonitor.Height, 0);
}

解决方案1

解决方案2

如果我将您的代码复制并粘贴到我的应用程序中(在将应用程序更改为记事本后,因为我没有安装 PDF 阅读器)并使用调试器,那么很明显,在记事本关闭之前,对 WaitForInputIdle 的调用不会返回。 所以代码永远不会尝试移动它。

如果我用 Thread.Sleep 替换该调用,它会尝试移动它,但 MainWindowHandle 为零 – 表明该进程没有窗口,或者它被隐藏 – 当应用程序打开一个子进程来执行每个操作时,就会发生这种情况显示,同时隐藏“通用”代码。

我将使用调试器并查看 PDF 阅读器进程实际上为您提供了什么:您可能必须找到另一种方法来访问窗口句柄才能移动它 – 但我不能为您做到这一点!

コメント

タイトルとURLをコピーしました