我正在编写一个C#应用程序,需要将gnuplot图移动到用户屏幕上的特定位置。为此,我使用DllImport将多个函数引入我的程序。特别是FindWindowByCaption和MoveWindow以及其他几个。到目前为止,这对我来说一直很好,但是图表突然停止了。
我发现生成的图表花费的时间更长,它会在创建窗口之前尝试执行MoveWindow函数,因此窗口实际上并未移动。我不知道为什么现在这是一个问题,因为它在早期版本的代码中很好。
由于某种原因,FindWindowByCaption函数在窗口实际存在之前找到窗口句柄。
我在一个循环中有find窗口函数,它应该尝试执行,直到找到正确的句柄。每个图表的名称都会更改。
IntPtr windowId = IntPtr.Zero;
while (windowId == IntPtr.Zero)//keeps trying to get the id until it has it
windowId = FindWindowByCaption(IntPtr.Zero, "p " + polyValue + " s " + (dataLocation + 1));
由于某种原因,它在实际创建之前找到gnuplot图形的句柄,然后它试图过早地运行MoveWindow函数,这样当实际生成图形时它不会到达正确的位置。
任何建议都会有所帮助
谢谢,
-Jake