我的vb程序打开一个IE窗口或TAB,并打开一个URL,然后,我想通过vb程序在这个页面中添加几个<input type=file>,并且初始化好本地文件路径。有什么办法没?
由于安全原因,<input type=file> 的value是只读的,只能用户选择文件的操作来设置value。
我尝试了几个方法都不行:1) 得到HTMLInputFileElement,设置value,不行;
2) 用javascript设置value也不行;
有什么变通的办法吗?

解决方案 »

  1.   

    IHTMLInputFileElement的value属性是只读的,要设置,QueryInterface得到其IHTMLInputElement接口,给IHTMLInputElement的value属性赋值
      

  2.   

    用 IHTMLInputElement 的 put_value,也是不行的。
    有没有可能截获并修改IE提交的表单数据?
      

  3.   

    嗯,貌似确实没有什么简单的方法。你可以试试 
    0) 先把文件名复制到剪贴板中1) IHTMLElement2::focus() , 使其input获取焦点2)IHTMLElement2::createControlRange 得到 IDispatch,再QueryInterface得到IHTMLControlRange3) IHTMLControlRange::execCommand(Paste) 粘贴文件名
      

  4.   

    粘贴的方法也不行啦,没简单办法,有复杂办法也好啊。如果我另外做一个activex来处理文件上传,又引起另外一个问题:除了<input type=file>之外,还有其他表单数据,就不能一起提交了。服务端不能改的。
    有没有办法截获IE的上传数据,进行修改?
      

  5.   

    粘贴的方法怎么不行?首先找到<input type=file>的IHTMLElement2, focus()很重要!上午试过,input type=file 的输入框是支持粘贴的啊!
      

  6.   

    你的是什么浏览器?什么版本?我win7+IE8不行哦
      

  7.   

    MD, IE8问题真多,如果我VB里创建一个IE,并Navigate2一个可信任站点,将与IE失去联系,无法触发事件,换成非可信任站点就可以。IE6没这样的问题!!怎么办?
      

  8.   


    给IE项目组报bug,等他们在IE9中解决 ^_^
      

  9.   

    告诉大家一个“秘密”,这不是IE8的BUG,而是IE8的安全特性,和Protected Mode有关:http://msdn.microsoft.com/en-us/library/bb250462(VS.85).aspx