网页上有一个"浏览"按钮,以选择本机图片路径.问:如何用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
<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
WebBrowser1.Document.All(i).Click 改成WebBrowser1.Document.All(i).value="c:\1.jpg",也没反应.
网页中的这个貌似文本框的家伙,既无法粘贴,也没法用键盘输入任何字母,只能点击它旁边的"浏览"按键,然后跳出"选择要加载的文件"对话框,输入图片路径后,点击"打开"按键.
真不知道要怎么解决这个问题了.获得"选择要加载的文件"对话框句柄并SendMessage的程序,也没成功,套用网上的几个例子,都不行,跳出"选择要加载的文件"对话框时,没收到获得句柄的提示,当关掉对话框时却提示没获得句柄.所以,结果还是和原来一样,没有进展.望高人给个具体的代码.万分感谢.
这整个一个控件是file upload组件,基于安全的原因,是没有办法用代码修改文本框里面的值的。LZ不如换一个思路,利用http的方法直接上传文件。
'将初始值放入到剪贴板中
VB.Clipboard.SetText "c:\mymap.jpg"
'让first_file_element控件处于激活状态
Me.WebBrowser1.Document.getElementById("first_file_element").focus
'粘贴初始值到first_file_element控件中
SendKeys "^{v}"
感谢江南春上次的无私帮助,和这次的热心解答。
用sendkeys命令是可以解决问题,相应的程序也已编写出来了,但模拟键盘点击的程序缺点太大,所以我不太想用sendkeys.
该网页中没有frame,id应该没错,把那段源文件复制到文本文档中,把.txt扩展名改成.hmtl,就可以看到它在网页中样子。
我也赞同sysdzw的说法,sendmessage对解决很多相关性质的问题有很大帮助,看来得好好学学这方面的内容。我对此内容一窃不通,所以我对你说的这个过程还不太清楚,我想就是先检查是否出现"选择要加载的文件"对话框,出现的话获得其句柄,然后sendmessage:输入路径并点击“打开”按键吧?
http://www.symental.com/GetHwndAndClass.rar
http://www.west263.com/info/html/wangyezhizuo/Javascript/20080225/33187.html
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
感谢阿勇的提醒和代码,我认真看了一下网页源文件,虽然看不太懂,但源文件中提到IE7,而我现在用的是IE8,我把IE版本换成IE7,然后再用你的代码就可以实现了。
感谢sysdzw,你的思路我认为最有用,最有拓展性。非常感谢。
http://www.symental.com/GetHwndAndClass.rar
这个链接不能有了啊,楼主麻烦发一份这文件给我啊,[email protected]
我也遇到了
用了ie.document.getelementbyid("file").value="c:\1.dbf"
没有用,后来怎么解决的呢?
我也是啊 找不到获取路径值啊 求大神们解决、JS如上所示