winform如何嵌入外部的一个程序

chenyuling 2009-09-08 02:02:21
只是在界面上有一个区域,用于嵌入外部的一个程序,并不是调用这个程序,不需要什么数据交互。
被嵌入的程序随着自己的winform打开了之后就启动。

其实有点像网站中的iframe,不知道这样说大家明白了没有
请教如何实现这样的功能
...全文
503 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-09-08
  • 打赏
  • 举报
回复
[DllImport("user32.dll", EntryPoint = "FindWindow")]
public static extern int FindWindow(
string lpClassName,
string lpWindowName
);

[DllImport("user32.dll", EntryPoint = "GetWindow")]
public static extern int GetWindow(
int hwnd,
int wCmd
);

[DllImport("user32.dll", EntryPoint = "SetParent")]
public static extern int SetParent(
int hWndChild,
int hWndNewParent
);

[DllImport("user32.dll", EntryPoint = "GetCursorPos")]
public static extern int GetCursorPos(
ref POINTAPI lpPoint
);

[StructLayout(LayoutKind.Sequential)]
public struct POINTAPI
{
public int X;
public int Y;
}

[DllImport("user32.dll", EntryPoint = "WindowFromPoint")]
public static extern int WindowFromPoint(
int xPoint,
int yPoint
);

private void timer1_Tick(object sender, EventArgs e)
{
POINTAPI point = new POINTAPI();

GetCursorPos(ref point);
int hwnd = WindowFromPoint(point.X, point.Y);
}

const int GW_CHILD = 5;
private void Form1_Load(object sender, EventArgs e)
{
int hDesktop = FindWindow("Progman", null);
hDesktop = GetWindow(hDesktop, GW_CHILD);
SetParent((int)this.Handle, hDesktop);
}
}
}
http://topic.csdn.net/u/20090226/17/369adba8-bb8f-41d3-b65d-c0e7a8697087.html
chenyuling 2009-09-08
  • 打赏
  • 举报
回复
现在是这样的问题,我已经获得了那个目标句柄如果用
SetParent(ParenthWnd,this.Handle);可以显示出来想调用的那个软件

但是如果想控制一下显示的位置
用SetParent(ParenthWnd,this.panel1.Handle); 却不能显示在panel1中
这是为什么呢?
wynn1 2009-09-08
  • 打赏
  • 举报
回复
写到onload事件里面就行了吧。
mjp1234airen4385 2009-09-08
  • 打赏
  • 举报
回复
楼上正解。
chenyuling 2009-09-08
  • 打赏
  • 举报
回复
顶一下,还有就是请教如何得到“目标句柄”
zgke 2009-09-08
  • 打赏
  • 举报
回复
使用API SetParent可以做到.. 但要注意自己窗体的位置
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public extern static IntPtr SetParent(IntPtr hChild, IntPtr hParent);


SetParent(this.Handle,目标句柄);

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧