操作由进程创建的窗口

时间:2012-11-19 12:27:46

标签: c#

我对C#很陌生,面临着一个问题。我希望通过以下方式操纵我动态创建的窗口(调整大小,移动):

Process app = new Process();
app.StartInfo.FileName = "notepad.exe";   //just an example,
app.Start();                              //it will be more than just notepad

我知道我可以通过app.MainWindowHandle获取句柄,但我无法通过Control.FromHandle(app.MainWindowHandle)获取该表单。因此,我无法设置此记事本的新位置和大小。

关于如何操纵窗口的任何想法呢?提前谢谢!

1 个答案:

答案 0 :(得分:4)

记事本是Win32应用程序,而不是.NET表单。这就是为什么你不能从中获得Control - 它不是一个控制!

您可以使用窗口句柄将其传递给可以操作Win32窗口的Win32函数。有一大堆它们,例如SetWindowPos来设置窗口位置(并在C#中使用它时查看this SO question)。

Window functions on MSDN上查看更多参考资料,并使用PInvoke.net作为从C#调用这些Win32方法的参考。