相关疑难解决方法(0)

阻止.NET WebBrowser控件中的对话框

我有一个.NET 2.0 WebBrowser控件,用于导航一些没有用户交互的页面(不要问......长篇故事).由于此应用程序的用户性质较少,我已将WebBrowser控件的ScriptErrorsSuppressed属性设置为true,VS 2005状态中包含的文档将"隐藏其源自底层ActiveX控件的所有对话框,不只是脚本错误." 但是,MSDN文章没有提到这一点.我已经设法取消了NewWindow事件,这会阻止弹出窗口,因此需要处理.

任何人都有使用其中一个并成功阻止所有对话框,脚本错误等的经验?

编辑

这不是IE的独立实例,而是生成在Windows窗体应用程序上的WebBrowser控件的实例.任何人都有使用此控件或底层AxSHDocVW的经验吗?

再次编辑

对不起,我忘了提这个...我试图阻止一个JavaScript警报(),只需一个OK按钮.也许我可以转换成IHTMLDocument2对象并以这种方式访问​​脚本,我已经使用过MSHTML了,有人都知道吗?

.net c# activex mshtml winforms

19
推荐指数
4
解决办法
4万
查看次数

通过c#按下Internet Explorer的"文件下载对话框"的保存按钮

我正在研究Internet Explorer自动化,其中一部分涉及从asp 2.0上托管的站点下载文件并使用基于表单的身份验证,因此为了创建端到端自动化,我使用了浏览器自动化.

我能够到达我可以点击一个带有浏览器"文件下载"对话框的URL的步骤,然后我试图利用SendKeys点击保存按钮,但无济于事不工作

下面是我使用FindWindow方法获取文件下载对话框的hWnd指针的代码,然后使用setActiveWindow使其成为活动窗口,以便SendKeys命令对其起作用,然后使用SendKeys我尝试发送Alt +但它没有用.我观察到,Tab,Escape和Enter工作,但是Enter on Save按钮不起作用.

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetActiveWindow(IntPtr hWnd);

private void Form1_Load(object sender, EventArgs e)
{
    IntPtr hwnd = FindWindow(null, "File Download");
    IntPtr nullptr = (IntPtr)0;
    if (hwnd != nullptr)
    {
        SetActiveWindow(hwnd);
        SendKeys.SendWait("%S");
    }
}
Run Code Online (Sandbox Code Playgroud)

使用相同的代码我可以通过将FindWindow中的值更改为"Untitled - Notepad"来访问记事本.

我是否需要做一些不同的事情,因为它是一个对话框,现在是一个窗口?我正在使用IE8.

这是我在答案后尝试的备用代码.

IntPtr hwnd = FindWindow(null, "File Download");
            IntPtr hokBtn = IntPtr.Zero;
            hokBtn = FindWindowEx(hwnd, …
Run Code Online (Sandbox Code Playgroud)

c# internet-explorer download sendkeys

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

.net ×1

activex ×1

download ×1

internet-explorer ×1

mshtml ×1

sendkeys ×1

winforms ×1