麻烦请教下各位,我现在有一个批处理文件需要执行,en1 = Shell(folder & "enc1.bat", 1)这个代码我如果是创建一个FRM,在FRM里面测试代码是可以运行的,但现在想把它转到写的另一个类模块中(.cls文件),然后把类文件生成DLL去运行,运行时会通不过,系统后台日志报错:无效的过程调用或参数,望请教,这是什么原因,应该怎么处理?

解决方案 »

  1.   

    可能是运行时的进程当前路径问题.你如方便把那人bat设计为绝对路径的话就改一下.如不行的话,就要找怎么取当前dll所在目录的函数
      

  2.   

    这里不是路径的问题,路径现在已经设成绝对路径了。上面folder 为 “E:\1\”相同的代码在我新建的FRM里面去调用,是没问题的,但是放到CLS中却运行不起来,想知道是不是CLS文件中是不是不能这么地调用SHELL批处理?
      

  3.   

    UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
      

  4.   

    你说的CLS文件是运行在哪种工程中的,是"标准EXE工程"吗
      

  5.   

    恩运行在标准EXE工程下是可以的,但打成DDL后,作为插件放到其它地方去调用时就执行不成功了。“无效的过程调用或参数”
      

  6.   

    应该不是shell问题,最大的问题可能是你的dll编码有问题。
      

  7.   

    有可能像楼上说的原因,代码是没问题的,因为在FRM里面测试是正常的,放进类模块中去后,运行就有问题了,...请问应该怎么解决啊?
      

  8.   

    将比处理封装在类的方法中间调用。类模块中Private Const DBL_QUOT = """"
    Public Sub CallShell(sNewfolder As String)
        Shell "cmd.exe /c start " & DBL_QUOT & DBL_QUOT & " " & DBL_QUOT & sNewfolder & DBL_QUOT
    End Sub
    窗体模块中
    Private Sub Command1_Click()    c.CallShell "D:\1.txt"End Sub
      

  9.   

    上面忘记申明变量了窗体模块中
    Private Sub Command1_Click()    Dim c As Project1.Class1
        Set c = New Class1
        
        c.CallShell "D:\1.txt"End Sub
      

  10.   

    问题还是得不到解决,,用上面的方法,效果还是与之前直接调用SHELL同样的效果。。