在c#中通过语柄获取另外一个窗体

有一个限定就是不要使用 windows API,只能使用.NET给我们封装的方法
Process[] ProcessInfo = Process.GetProcessesByName("Ui_DevelopPlatform");
for (int i = 0; i < ProcessInfo.Length; i++)
{
IntPtr h = ProcessInfo[i].MainWindowHandle;
Control controlchild = Form.FromChildHandle(h);
//Control controlchild = Control.FromHandle(h);

//ProcessNotepad[i].Kill();
}

controlchild 这个对像总是空值

  IntPtr h = ProcessInfo[i].Handle;
    Control controlchild = Form.FromChildHandle(h);

这样不行

 IntPtr h = ProcessInfo[i].MainWindowHandle;             
 Control controlchild = Form.FromHandle(h);

这也不行
不知道该怎么写了。

http://zhidao.baidu.com/link?url=I2wDoza40TSN60WsK-EPYAy57IgiYwLTxJ9D77lZGJAx5esNVM04sKJWcvpsE3N3nsiIoZ3qmvlHmvveoD1IkoeSh04X-P9H2loNBjzPNSG

我问不是怎么实现这个功能
我问的是为什么FromChildHandle不行。是不是那有写的有问题

所以我不使用win API

用spy++看看。是不是你窗口的子窗口。用findwindow获取下

用spy++看看。是不是你窗口的子窗口。用findwindow获取下

ProcessNotepad[i].MainWindowTitle
我可以用这个属性获到这个窗体的标题

我试了一下调用 win API
SetWindowText(h, "asdfsd");
这样是可以改变另外一个窗体的标题的。也就是说我获取的Handle是没有问题的
难道就只能用win API吗?
我另外一个程序也是.NET的