如何调用外部程序,并把外部程序的界面放到我的界面上

kmzmy 2005-07-14 11:05:50
首先打开外部程序,例如记事本.
并把外部程序的界面放到我的界面的某一区域,例如某个Panel上.
...全文
274 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
子正 2006-07-06
  • 打赏
  • 举报
回复
mark.
kmzmy 2005-07-14
  • 打赏
  • 举报
回复
再说,如果事先不知道要调用的程序的类名,只是用户在使用时输入的Exe文件,我怎样来调用这个函数呢??
siugwan 2005-07-14
  • 打赏
  • 举报
回复
gz
kmzmy 2005-07-14
  • 打赏
  • 举报
回复
各位老大,别老是关注,都出出点子啊。我急~~~~~~~,先上个厕所再来。
menghun1355 2005-07-14
  • 打赏
  • 举报
回复
好问题呀,关注!
kmzmy 2005-07-14
  • 打赏
  • 举报
回复
to COpyFRee(NULL)
不起作用啊,记事本的句柄找到了,但是SetParent(hwnd, this.Handle.ToInt32());似乎没有作用。
记事本还是没有放到我的界面上来。
COpyFRee 2005-07-14
  • 打赏
  • 举报
回复
上面忘了 using System.Runtime.InteropServices;
alexxzr 2005-07-14
  • 打赏
  • 举报
回复
可以吗?试试!
COpyFRee 2005-07-14
  • 打赏
  • 举报
回复

[DllImport("user32.dll", EntryPoint="FindWindow")]
public static extern int FindWindow(string lpClassName, string lpWindowName);

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

private void button1_Click(object sender, System.EventArgs e)
{
int hwnd = 0;
hwnd = FindWindow("Notepad", "无标题 - 记事本");

if (hwnd > 0)
{
SetParent(hwnd, this.Handle.ToInt32());
}
else
{
MessageBox.Show("Handle is null!");
}
}
JzeroBiao 2005-07-14
  • 打赏
  • 举报
回复
可能吗?学习!
kmzmy 2005-07-14
  • 打赏
  • 举报
回复
自己顶一下。
在线等,欢迎各位高手不吝赐教。
kmzmy 2005-07-14
  • 打赏
  • 举报
回复
揭帖
kmzmy 2005-07-14
  • 打赏
  • 举报
回复
好,明白了,谢谢。
COpyFRee 2005-07-14
  • 打赏
  • 举报
回复
kmzmy(fox) :
再说,如果事先不知道要调用的程序的类名,只是用户在使用时输入的Exe文件,我怎样来调用这个函数呢??
----------------

还不是一样的方法么,总之你都要取得要设置为子窗体的句柄才能继续操作,如果目标程序的类名不可知,你也可以获得通过 Exe 的进程ID进而取其主窗体句柄,之后就一样了。

你可别说进程也取不到!
COpyFRee 2005-07-14
  • 打赏
  • 举报
回复
to kmzmy(fox) : 怎么会不起作用,这段代码运行之后你再来回拖动记事本的窗体看看能拖到你自己程序的主窗体之外吗?

110,534

社区成员

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

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

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