网页上有一个"浏览"按钮,以选择本机图片路径.问:如何用VB程序自动填写给定的图片路径(假设本机上的图片路径是:c:\picture\1.jpg)?希望不使用sendkeys命令.网页源代码:
<table>
<tr>
<td class='submit_right'><div class='inp_title'>Images</div></td>
<td>
<input type="file" name='file[]' id="first_file_element" class="input2"  onfocus="this.className='input2';">
<script type="text/javascript">
var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 30 );
multi_selector.addElement( document.getElementById( 'first_file_element' ) );
</script>
</td>
</tr>
</table>我的程序是:
For i = 0 To WebBrowser1.Document.All.length - 1
        On Error Resume Next
        If WebBrowser1.Document.All(i).tagName = "INPUT" Then
          If WebBrowser1.Document.All(i).id = "first_file_element" Then
            WebBrowser1.Document.All(i).Click '会跳出"浏览"的文件对话框.接下来如何在对话框中输入:c:\picture\1.jpg,并确认,就不会编了.             
          End If
        End If
    Next

解决方案 »

  1.   

    你不点击哪个first_file_element,你直接粘贴内容到前面哪个文本框
      

  2.   

    假设那个框的句柄是hhh,关于控件句柄的获取使用EnumChildWindows来获取,具体参考相关资料SendMessage CLng(hhh), WM_SETTEXT, 0, ByVal "c:\1.jpg"
      

  3.   

    这里无法粘贴,点右键看到"粘贴"是灰色的.ctrl+v也不行.
      

  4.   

    感谢sysdzw 的回复,这个方法我不太懂,我试试,先谢过.
      

  5.   

    其实灰色的也可以直接赋值的,假设id=imagefile,那么直接webbrowser1.document.getElementById(#"imagefile").value="c:\1.jpg"或者你用那个遍历所有tag的方法也行,可以试试。
      

  6.   

    webbrowser1.document.getElementById(#"first_file_element").value="c:\1.jpg",报错,去掉#号,没反应
    WebBrowser1.Document.All(i).Click 改成WebBrowser1.Document.All(i).value="c:\1.jpg",也没反应.
    网页中的这个貌似文本框的家伙,既无法粘贴,也没法用键盘输入任何字母,只能点击它旁边的"浏览"按键,然后跳出"选择要加载的文件"对话框,输入图片路径后,点击"打开"按键.
    真不知道要怎么解决这个问题了.获得"选择要加载的文件"对话框句柄并SendMessage的程序,也没成功,套用网上的几个例子,都不行,跳出"选择要加载的文件"对话框时,没收到获得句柄的提示,当关掉对话框时却提示没获得句柄.所以,结果还是和原来一样,没有进展.望高人给个具体的代码.万分感谢.
      

  7.   


    这整个一个控件是file upload组件,基于安全的原因,是没有办法用代码修改文本框里面的值的。LZ不如换一个思路,利用http的方法直接上传文件。
      

  8.   

    由于file控件比较特殊,不能直接修改value属性,不过可以借用剪贴板来实现,具体代码如下:
        '将初始值放入到剪贴板中
        VB.Clipboard.SetText "c:\mymap.jpg"
        '让first_file_element控件处于激活状态
        Me.WebBrowser1.Document.getElementById("first_file_element").focus
        '粘贴初始值到first_file_element控件中
        SendKeys "^{v}"
      

  9.   

    不好意思,多打了个#,你确定那个input的id是first_file_element?另外一个最重要的是这个网页是不是嵌套的了多个frame?其实靠sendmessage是终结办法,肯定可以的(首先遍历窗体容器,会得到个combobox,然后再遍历combobox会得到个edit控件句柄,也就是说需要遍历两次,你通过spy就会看到),另外如果你熟悉au3的话对付这些应该很好办。
      

  10.   

    使用vb的sendkey 可以发送tab按键,你只要知道需要按几次才能移动到该输入框,那么就发送几次tab。然后就是发送文件路径进去了。我以前就这么实现的
      

  11.   

    这个操作不安全,另外楼主的那个input是disabled的
      

  12.   


    感谢江南春上次的无私帮助,和这次的热心解答。
    用sendkeys命令是可以解决问题,相应的程序也已编写出来了,但模拟键盘点击的程序缺点太大,所以我不太想用sendkeys.
      

  13.   


    该网页中没有frame,id应该没错,把那段源文件复制到文本文档中,把.txt扩展名改成.hmtl,就可以看到它在网页中样子。
    我也赞同sysdzw的说法,sendmessage对解决很多相关性质的问题有很大帮助,看来得好好学学这方面的内容。我对此内容一窃不通,所以我对你说的这个过程还不太清楚,我想就是先检查是否出现"选择要加载的文件"对话框,出现的话获得其句柄,然后sendmessage:输入路径并点击“打开”按键吧?
      

  14.   

    最后,希望高手们能否给几个sendmessage,相关实例的链接或代码,我在网上查到的一些例子,好像都没用。谢谢大家。
      

  15.   

    给你一个我以前写的范例吧,你应该可以分离得到你要的代码:
    http://www.symental.com/GetHwndAndClass.rar
      

  16.   

    标题是“单击图片时直接出现另存为对话框”是不是对你有帮助
    http://www.west263.com/info/html/wangyezhizuo/Javascript/20080225/33187.html
      

  17.   

    如果你给的HTML代码是全的,哪么File类型的文本框是可以粘贴的,是灰色,可能是你的系统剪贴板里没有内容吧
      

  18.   

    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Clipboard.SetText "c:\boot.ini"If WebBrowser1.Object Is pDisp Then
        Dim objDoc As Object, objF As Object
        Set objDoc = WebBrowser1.Document
        Set objF = objDoc.getElementById("first_file_element") 'first_file_element是File类型的Input控件的ID
        objF.focus
        DoEvents
        SendKeys "^v"
    End If
    End Sub
      

  19.   

    修改file控件的属性,比如readonly或lock或enabled等(具体我忘了),使其可以粘贴.
      

  20.   


    感谢阿勇的提醒和代码,我认真看了一下网页源文件,虽然看不太懂,但源文件中提到IE7,而我现在用的是IE8,我把IE版本换成IE7,然后再用你的代码就可以实现了。
      

  21.   


    感谢sysdzw,你的思路我认为最有用,最有拓展性。非常感谢。
      

  22.   

    给你一个我以前写的范例吧,你应该可以分离得到你要的代码:
    http://www.symental.com/GetHwndAndClass.rar
    这个链接不能有了啊,楼主麻烦发一份这文件给我啊,[email protected]
      

  23.   

    你这个问题解决了吗?
    我也遇到了
    用了ie.document.getelementbyid("file").value="c:\1.dbf"
    没有用,后来怎么解决的呢?
      

  24.   

    http://cn.ziddu.com/uu_file_upload.js
    我也是啊 找不到获取路径值啊 求大神们解决、JS如上所示
      

  25.   

    http://www.symental.com/GetHwndAndClass.rar无法下载 请有的兄弟发一个吧  谢谢你们