文件放在c:\program file\ 目录下。yfile=App.Path & "\123.jpg"yfile得到的是c:\program  求解决办法。谢谢!(不需要更改目录的办法)

解决方案 »

  1.   

    用API函数GetShortPathName转换成短路径名。
    yfile=App.Path & "\123.jpg"
    S = String(LenB(yfile), Chr(0))
    GetShortPathName yfile, S, Len(S)
    yfile= Left(S, InStr(S, Chr(0)) - 1)
      

  2.   

    怎么我的正常啊?Private Sub Form_Load()
    Debug.Print App.Path
    End Sub输出为:d:\Program Files\Microsoft Visual Studio\VB98vb6,sp6
      

  3.   

    明白你的意思了。你图片不在程序一个目录下哦,当然不能使用app.path了
    要使用绝对路径("c:\program file\")或者把图片复制到程序目录下
      

  4.   

    你先debug一下app.path看看。我的很正常。
    xp操作系统,vb6,sp6
      

  5.   

    放入其中的html编辑器中就是这样:原来:<img src="c:\456 789\123 456\hh.jpg">WebBrowser2.Document.write (<img src="c:\456 789\123 456\hh.jpg">)之后,变成:<img src="file:///c:\456" 789\123 456\hh.jpg>请注意这里:<img src="file:///c:\456" ,它只取了前面的了。
      

  6.   

    WebBrowser2.Document.write (<img src="'c:\456 789\123 456\hh.jpg'">)之后,变成:<img src="file:///c:\456%20789\123%20456\hh.jpg">这个路径显然是错误的。
      

  7.   

    7楼说的作废?8楼的是正常现象,本地文件在html中表示的方法都是file:///开头,而且里面的空格什么的都会被转成%加上十六进制的表示方法。而且图片在html中也应该可以显示的。另外WebBrowser2.Document.write (<img src="'c:\456 789\123 456\hh.jpg'">)应该写成
    WebBrowser2.Document.write "<img src='c:\456 789\123 456\hh.jpg'>"
    应该是笔误吧?否则会报错的。
      

  8.   

    <img src="file:///c:\456%20789\123%20456\hh.jpg"> 这就是合法的路径
    不是任何环境下都有语法纠错功能,你的问题在于路径中有空格,而html标签内部是以空格来区分各个元素的 路径中的空格要进行转义 
      

  9.   


    请问如何转义呢?我原是用替换的方法将其中的本地路径改为URL,在此下面方法不可行?strhtml = Replace(strhtml, Filenames, urls & "/jtimg/" & FSO.GetFileName(Filenames))
      

  10.   

    不需要你自己手工设置的,你直接设置路径中的空格的话浏览器就帮你自动转换了。可以用MsgBox WebBrowser2.Document.body.innerhtml查看下页面代码。
      

  11.   

    WebBrowser2.Document.write "<img src='D:\Program Files\1.jpg'>"
      

  12.   

    App.Path指的是工程所在路径。
      

  13.   

    忽然明白楼主想要做什么了。
    你是想在webbrowser中显示出你的程序安装目录下的某个文件是吧?然后用代码
    WebBrowser2.Document.write "<img src=" & App.Path & "\123.jpg>"
    然后实际写入到网页中的就是:
    WebBrowser2.Document.write "<img src=c:\program file\123.jpg>"
    这样浏览器解析出来的src就是c:\program,因为用空格隔开了,浏览器就以为是另外的属性的内容了。除非整个用双引号或者单引号括起来。这样写就行了:
    WebBrowser2.Document.write "<img src='" & App.Path & "\123.jpg'>"
    实际得到的就是:
    WebBrowser2.Document.write "<img src='c:\program file\123.jpg'>"
    这样就能正常显示图像了。写成这样也行。
    WebBrowser2.Document.write "<img src=""" & App.Path & "\123.jpg"">"ps:以后问问题请直接说实际情况,转了几个弯都不知道东南西北了,比如出现src的结果是c:\program,你以为是app的问题,实际不是的,然后你就把大家带偏了,参考1到6楼。然后你到7楼才搬出实际情况,晕。
      

  14.   

    我原来的程序中,路径中没有空格的时候是这样进行处理:
    一、在VB中可以得到c:\jjjkkk\dd.jpg
    二、到最后会成了file:///c:\jjjkkk\dd.jpg
    三、我将全部的"\"替换为"/",得到file:///c:/jjjkkk/dd.jpg
    四、将file:///替换为空
    五、将App.Path(就是这个:c:/jjjkkk/)替换为 http://www.xxx.com/
    六、写入到远程的路径就是 http://www.xxx.com/dd.jpg现在App.Path得到的目录路径中变成有空格了,file:///c:\jjj%20kkk\dd.jpg就难于处理了。
    如果用截取的方法的话,又要FOR循环才能替换掉所有的file:///和App.Path,不能节省资源了。
    所以求更好的办法。
      

  15.   

    '没有那么复杂吧,举个例子:
    Dim s As String
    Dim app1 As Strings = "file:///c:\jjj%20kkk\dd.jpg"s = Replace(s, "file:///", "")
    s = Replace(s, "\", "/")
    s = Replace(s, "%20", " ")
    s = Replace(s, "c:/jjj kkk", "http://www.xxx.com")
    MsgBox s
      

  16.   

    找了好久结合各位大虾的提点,用这样的办法解决了:
    先将得到的路径中的空格全部替换为%20
    再将路径中的、替换为/
    最后将整个路径进行曲替换,解决了此问题。
    谢谢各位。CSDN真是阳江灿烂呀!