我正在尝试使用CoInternetSetFeatureEnabled API来阻止prompt dialog,因为它在托管WebBrowser控件的应用程序中显示如下,但它不起作用 . 在MSDN - Internet Feature Controls (I..L)之后,更新注册表也不起作用 . 我在Win7 64位上使用IE9 .
FEATURE_BLOCK_INPUT_PROMPTS Internet Explorer 7.启用或禁用弹出窗口阻止程序以显示输入提示对话框 . 使用弹出窗口阻止程序来降低欺骗风险 .
private const int FEATURE_BLOCK_INPUT_PROMPTS = 27;
[DllImport("urlmon.dll")]
[PreserveSig]
[return: MarshalAs(UnmanagedType.Error)]
public static extern int CoInternetSetFeatureEnabled(
int FeatureEntry,
[MarshalAs(UnmanagedType.U4)] int dwFlags,
bool fEnable);
public static int disableInputPrompts(bool state)
{
return CoInternetSetFeatureEnabled(
FEATURE_BLOCK_INPUT_PROMPTS, SET_FEATURE_ON_PROCESS, state);
}
Update 刚刚尝试使用IE8的WinXP,此功能正常运行 . 它取决于其他东西吗?
Update 根据msdn,默认情况下在IE9中启用此功能,但它不起作用 . 单击w3schools sample中的"Try It"按钮启动提示对话框,这是一个安全漏洞吗?
默认情况下,Internet Explorer启用此功能,托管WebBrowser控件的应用程序禁用此功能 .
关于如何在WebBrowser控件中阻止提示对话框的任何工作替代方法?
可以通过实现自定义安全管理器IInternetSecurityManager来完成吗?
1 回答
我现在唯一的选择是使用SetWindowsHookEx,它基于Suppressing Hosted WebBrowser Control Dialogs示例 .