【问题标题】:Set position of window from launching application从启动应用程序设置窗口位置
【发布时间】:2018-03-15 20:57:44
【问题描述】:

我有一个启动应用程序,它使用 Process.Start("MyExe") 打开我的另一个应用程序,该应用程序存储在可执行文件中,并显示 WPF 窗口。

不过,我还希望能够从启动程序中设置 WPF 在屏幕上的位置。我尝试过使用MoveWindow,但它不起作用。

Process flash = new Process();

flash.StartInfo.FileName = appDirectoryPath + "\\" + OnScreenKeyboardExe;
flash.Start();
Thread.Sleep(100);

IntPtr id = flash.MainWindowHandle;
File.WriteAllText("D://errorlog.txt", id.ToString());
OperatingSystemBase.MoveWindow(flash.MainWindowHandle, 1000, 1000, 500, 500, true);

在错误日志文件中我得到了 id 0。所以我可能无法获取进程或其他东西。

【问题讨论】:

  • 'exe 窗口' - 这是一个控制台窗口,还是一个实际的 WPF 窗口(正如您的问题标签所建议的那样)?
  • @LordWilmore,这是一个真正的 wpf 窗口。
  • 能否请您发布您尝试使用MoveWindow 的代码以及可能引发的任何错误?
  • @LordWilmore,当然。
  • 如果调用MoveWindow失败,请检查GetLastWin32Error(),看看那里是否有任何使用的报告

标签: c# wpf exe


【解决方案1】:

您的问题是在尝试移动程序之前,您等待程序启动的时间不够长。

我将Thread.Sleep(100) 更改为Thread.Sleep(1000),效果很好!

【讨论】:

  • 是的,但在这种情况下,exe 窗口首先显示,然后滑动到新位置。喜欢在主位置上显示,然后转到指定位置。
  • 这就是您在代码中所做的...您将窗口移动到另一个位置。
猜你喜欢
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
相关资源
最近更新 更多