因为VB和VC的字符串的结构不同VC比VB多了一个‘/0’

解决方案 »

  1.   

    i think u can use thisdim filename as string * 255
    dim s as string
    s="c:\a.exe"
    s=s & chr(0)
    filename = s
      

  2.   

    谢谢各位的回复!我按照上面说的方法试了一下,无效。
    我个人感觉好像与字符串后面的0没有必然的联系,因为我的问题中也提到了,对于一般的EXE文件,不管是中文文件名还是英文文件名,Shell都可以正常的调用。只有对于Flash生成的EXE文件,才存在这样的问题。所以是不是可能是Flash的EXE文件有什么特殊的地方。
      

  3.   

    去问多媒体FLASH版块的,应该会有人答复你的。。
      

  4.   

    同意luckcao(luckcao)的做法
    yes
      

  5.   

    Option ExplicitPrivate Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Command1_Click() '可以播放  aa.swf aa.exe 暗暗.exe
        ShellExecute Me.hwnd, "Open", "F:\暗暗.exe", "", App.Path, 1
    End Sub
      

  6.   

    谢谢各位!
    问题解决了,还是我自己的问题。我把ShellExecute写成
    ShellExecute Me.hwnd, "Open", "F:\暗暗.exe", 0, 0, 1
    把命令行参数位置的""空字符串误写成0了,在VC中用的是NULL,我翻译成VB不假思索的就改成0了,然后就错了:(