我看见一个别人的程序,有一个发送文件的模块挺好,而且单独做成了.exe 调用,
所以我也想拿过来用一下,但是我用shell调用成功后,有点问题。就是上一个窗体中
选出的文件路径列表,他的程序就可以显示在这个叫 sendfile.exe 的文件列表中(Datagrid 或者 Mshflexgrid),我做了一个窗体选出文件列表,然后我调用 sendfile.exe 就不能显示在上面的列表中,我怀疑是有传递的其他文件,果然有一个在
同路径的下面有一个 sendfile.lit 的文件,打开一看就是上一个窗体的选出的文件列表的路径,一行一个路径,所以他就是先写到这个里,再用 sendfile.exe 读近去的方法。
我就效防,把 sendfile.lit 和 sendfile.exe 拷到我的程序路径下,然后调用sendfile.exe 之前,先往sendfile.lit 写了文件的路径,然后调用,可是还是不行啊。直接运行他的sendfile.exe 也不行,所以我估计是不是和注则表有关还是有其他的
状态标志位。希望大家能帮助讨论一下。

解决方案 »

  1.   

    message(vba.command) 是什么意思?是写一个 命令吗?在那写具体一点好吗
      

  2.   

    shell("sendfile.exe sendfile.lit")
    或者
    用【函数】
    ShellExecute【操作系统】
    Win9X:Yes
    WinNT:Yes【声明】
    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 Long【说明】    
      查找与指定文件关联在一起的程序的文件名 【返回值】  Long,非零表示成功,零表示失败。会设置GetLastError 【其它】
    【参数表】
      hwnd -----------  Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框  lpOperation ----  String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它  lpFile ---------  String,想用关联程序打印或打开一个程序名或文件名  lpParameters ---  String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数  lpDirectory ----  String,想使用的完整路径  nShowCmd -------  Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数
      

  3.   

    例如:Shell "C:\WINDOWS\NOTEPAD.EXE D:\Print_VB.TXT", vbMaximizedFocus
      

  4.   

    Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。   Shell的语法:Shell(PathName[,WindowStyle])。   PathName 为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。   WindowStyle为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle有以下这些值。 常量 值 描述 
    VbHide 0 窗口被隐藏,且焦点会移到隐式窗口。 
    VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 
    VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示(缺省值)。 
    VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 
    VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 
    VbMinimizedNoFocus 6 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动。
      

  5.   

    用ShellExecute时指定路径可能会解决问题
      

  6.   

    Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。   Shell的语法:Shell(PathName[,WindowStyle])。   PathName 为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。   WindowStyle为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle有以下这些值。 常量 值 描述 
    VbHide 0 窗口被隐藏,且焦点会移到隐式窗口。 
    VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 
    VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示(缺省值)。 
    VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 
    VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 
    VbMinimizedNoFocus 6 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动。
      

  7.   

    例如:Shell "C:\WINDOWS\NOTEPAD.EXE D:\Print_VB.TXT", vbMaximizedFocus
      

  8.   

    lvjack(叶飞),我ShellExecute 的定义放到了模块中
    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 Long
    然后,如下执行,但是提示"参数错误",不知该如何解决,另外,我对ShellExecute中hwnd ,nShowCmd等参数,也不太懂,能否把下面的语句帮忙改一下,谢谢!
    Dim str As Long
    str = ShellExecute(2, "open", "E:\程序\sendfile.exe", "E:\程序\sendfile.lit", "E:\工务探伤724\sendfile.lit", 1)
      

  9.   

    Private Sub Command2_Click()
    '写入 E:\程序\sendfile.lit
    '打开
    ShellExecute Me.hwnd, "open", "E:\程序\sendfile.exe", "", App.Path, 1
    End Sub
    如果他写了一些控制信息(内存中传递、临时文件、消息、、) 又不给你看的话 那你一般是没有办法了
      

  10.   

    我毕业论文中的几个exe 就是这么弄的 
    如果 其他人不知道 调用的 参数  就打不开 exe文件必须用我写的代码去调用
      

  11.   

    sendfile.lit sendfile.exe 
    这二个文件可以看一下吗?