gpt4 book ai didi

c# - 如何获取当前 BrowserWindow 的句柄

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:00 27 4
gpt4 key购买 nike

我正在创建多个 UI 测试,而不是打开 Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow 的新实例,我想检查 BrowserWindow 对象是否已经可用 -这意味着 IE 已经在主机上打开 - 并获取它的句柄。我找到了这个 question但我希望我的 BrowserWindow 包装器类获得句柄,并且播放已经在类初始化时进行了初始化,因此建议的方法将不起作用。

这是我现有的代码...

public class uiBrowserWindow : BrowserWindow {
public static void launchUrl(string url) {
Launch(url);
}
}

编辑我已经让它工作了,它并不理想,但它确实有效。有没有更好的办法?

public class uiBrowserWindow : BrowserWindow {
public void launchUrl(string url) {
try {
SearchProperties[PropertyNames.ClassName] = "IEFrame";
NavigateToUrl(new Uri(url));
} catch (Exception) {
Launch(url);
}
}

最佳答案

我不确定 BrowserWindow 对象,但如果您想了解特定应用程序是否正在运行或获取特定窗口的句柄,您可以使用 WIN32 API。

/* Create a Win32.Win32Api Helper class, or include in your class  */
[DllImport("User32.dll")]
public static extern Int32 FindWindow(String lpClassName, String lpWindowName);
[DllImport("User32.dll")]
public static extern Int32 SetForegroundWindow(int hWnd);
[DllImport("User32.dll")]
public static extern Int32 SendMessage(int hWnd, UInt32 msg, int wParam, int lParam);

下面是获取特定进程并通过 API 向其发送消息的示例:

int ieWindow = Win32.Win32API.FindWindow(null, "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe");
Win32.Win32API.SetForegroundWindow(ieWindow);

// Example sending message, Right Mouse Button Up message (0x0205)
Win32.Win32API.SendMessage(ieWindow, 0x0205, 0, 0);

希望对您有所帮助。

克里斯

关于c# - 如何获取当前 BrowserWindow 的句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10518737/

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