我正在编写一个 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 函数,因此当实际生成图时它不会去正确的位置。
任何的意见都将会有帮助
谢谢,
-杰克