0

有没有办法阻止从组件网络浏览器(C#)访问的网站上传文件(任何文件)?我一直在尝试几种方法,但没有任何效果...

4

2 回答 2

0

我终于解决了这个问题!

解决方案是:隐藏对话框!我使用对象 id(窗口 id)来查找对话框。这是“阻止”任何对话框的唯一方法!

见下面的代码:

    // P/Invoke declarations
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindow(string id, string caption);

    [DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);

    public void Execute()
    {
        IntPtr hWnd = FindWindow("#32770", null);

        if (!hWnd.Equals(IntPtr.Zero))
        {
            SendMessage(hWnd, 0x0010, IntPtr.Zero, IntPtr.Zero);
        }
    }

我希望这个解决方案可以帮助其他用户!

于 2013-04-29T19:08:47.370 回答
0

我不知道有什么简单或困难的方法来实现这一点,因为在单击 html 输入文件字段时,MSHTML.dll 会自动调用 openFileDialog。没有任何接口、方法或属性可以以编程方式覆盖或阻止对话框打开。

我找到了一种我认为适用于这种情况的方法。您需要做的是通过“WebBrowser.Navigating”事件识别每个包含“Content-Type: multipart/form-data”的 HTTP 标头,因为每次文件即将从本地计算机流式传输到服务器。然后您可以立即取消数据流。

于 2013-04-24T11:59:16.397 回答