gpt4 book ai didi

c# - 在 Winforms 应用程序中使用 Chrome 或 Firefox?

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:49 30 4
gpt4 key购买 nike

有没有办法在 .NET 应用程序中使用 FirefoxChrome(以已安装的为准)?我没有考虑将 geckowebkit engine 放在我的应用程序中,而是使用系统上安装的浏览器(就像 WebBrowser 控件使用 IE)。我听说可以通过 ActiveX 控件实现,但没有找到更多相关信息。

最佳答案

那么你可以使用 user32.dll 来设置指定子窗口的父窗口(这里是 firefox 或 chrome)。

结果是这样的: enter image description here首先,我有两个小问题和一个更大的问题:

  1. 如您所见,firefox 未最大化,因此缺少一些内容(仍在寻找修复该问题的方法[帮助])

  2. 因为您必须先启动进程然后设置窗口的父级,所以 Firefox 会在您的应用程序之外运行一小段时间。

  3. 最大的问题:您试图“绑定(bind)”到您的应用程序的程序在运行您的应用程序时不能运行,因为它无法将 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)
{}
}

关于c# - 在 Winforms 应用程序中使用 Chrome 或 Firefox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18786532/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com