有没有办法在 .NET 应用程序中使用Firefox
或(无论安装哪个)?Chrome
我没有考虑将gecko
或webkit engine
放入我的应用程序,而是使用系统上安装的浏览器(就像 WebBrowser 控件使用 IE 一样)。我听说可以通过 ActiveX 控件实现,但没有找到更多信息。
问问题
4052 次
1 回答
2
那么你可以使用 user32.dll 来设置指定子窗口的父窗口(这里是 firefox 或 chrome)。
结果是这样的: 首先我有两个小问题和一个更大的问题:
如您所见,firefox 未最大化,因此缺少某些内容(仍在寻找解决该问题的方法 [help appriciated])
因为您必须先启动该进程,然后再设置窗口的父级,所以 Firefox 会在您的应用程序之外运行一小段时间。
最大的问题:您试图“绑定”到您的应用程序的程序在运行您的应用程序时不能运行,因为它无法将 firefox 的父级设置为您的程序
MSDN 对方法的解释:http: //msdn.microsoft.com/en-us/library/windows/desktop/ff468919 (v=vs.85).aspx
[DllImport("user32.dll", SetLastError = true)]
private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int nWidth, int nHeight, bool repaint);
//hwnd: A handle to the window | x: The new position of the left side of the window. | y: The new position of the top of the window.
//nWidth: The new width of the window. | nHeight: The new height of the window.
//repaint: Indicates whether the window is to be repainted. If this parameter is TRUE, the window receives a message. If the parameter is FALSE, no repainting of any kind occurs.
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
Process ffprocess = new Process();
private void openProgramAndSetParent()
{
string str = @"C:\Program Files\Mozilla Firefox\firefox.exe"; //Enter full path to Firefox or Chrome
ffprocess.StartInfo.FileName = str;
ffprocess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
ffprocess.Start();
IntPtr ptr = IntPtr.Zero;
while ((ptr = ffprocess.MainWindowHandle) == IntPtr.Zero)
{
Application.DoEvents();
}
Thread.Sleep(1000);
SetParent(ffprocess.MainWindowHandle, panel1.Handle);
MoveWindow(ffprocess.MainWindowHandle, 0, 0, this.Width, this.Height -100, true);
}
private void Form1_Resize(object sender, EventArgs e)
{
try
{
MoveWindow(ffprocess.MainWindowHandle, 0, 0, this.Width, this.Height, true);
}
catch (Exception)
{}
}
于 2013-09-13T20:32:12.063 回答