我在实践过程中碰到下面这个问题:点击按钮后找开我设定的记事本文件.试了很多次都不成功.方法1\  dim retval as long
        retval = shell ("start d:\评测.txt")     提示说找不到这个文件方法2\ Shell "NotePad.EXE d:\评测.txt", vbNormalfucus
       能运行,但运行后这个文件并没有打开 方法3\ RichTextBox1.LoadFile "f:\d.txt", rtfText
       提示说找不到对象,
 
我是VB的一只菜鸟,请大家帮忙!多谢!!

解决方案 »

  1.   

    RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)
      

  2.   

    查一下shellexecute函数,不需要指定NOTEPAD.EXE的,它会直接自动关联的.还有文件名最好不要用中文
      

  3.   

    照着这个改改:
    --------------------------------------------------------------------------------------------------------------------
    'ShellExecute
    'VB声明
    '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
    '说明
    '  查找与指定文件关联在一起的程序的文件名
    '返回值
    'Long,非零表示成功,零表示失败。会设置GetLastError
    '参数表
    '参数 类型及说明
    'hwnd Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框
    'lpOperation String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它
    'lpFile String,想用关联程序打印或打开一个程序名或文件名
    'lpParameters String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数
    'lpDirectory String,想使用的完整路径
    'nShowCmd Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数
    '-----------------------------------------------------------------------------------------------Option Explicit
    Private 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
    Const SW_SHOWNORMAL = 1
    Private Sub Form_Load()
        ShellExecute Me.hwnd, vbNullString, "e:\..\MsdML.EXE", vbNullString, vbNullString, SW_SHOWNORMAL
    End Sub
      

  4.   

    Shell ("NotePad.EXE  d:\评测.txt"), vbNormalFocus
    这个是可以的,除非 D盘没“评测.txt”这个文件
      

  5.   

    Private 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
    Const SW_SHOWNORMAL = 1Private Sub Command1_Click()
       ShellExecute hwnd, "open", "c:\aoesync.txt", vbNullString, vbNullString, SW_SHOWNORMALEnd Sub
      

  6.   

    这样是不行的,看我这个:
    Private 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'请将"评测.txt"作为strPara调用
    'ShellEx "notepad.exe","d:\评测.txt"
    Private Sub ShellEx(ByVal sLocation As String, ByVal sPara As String, Optional MaxedForm As Boolean = False)
        On Error GoTo errhandle:
        Dim lR As Long
        Dim Style As Long
        Dim hWnd As Long
        If MaxedForm Then
            Style = vbMaximizedFocus
        Else
            Style = vbNormalFocus
        End If
        
        lR = ShellExecute(hWnd, "open", sLocation, sPara, "", Style)
        If (lR < 0) Or (lR > 32) Then
            'success
        Else
            rp.Write "Error Occered when starting the program " & sLocation
        End If
    errhandle:
        rp.Write "Error:" & Err.Description
    End Sub