从VB6打开其默认程序中的文件

时间:2009-08-31 23:20:41

标签: file vb6

我想通过按下命令在我的VB6应用程序上打开一个文件。该文件是另一个程序读取的文件类型。我希望它打开它,并且读取文件类型的程序也应该打开,因为当它发现文件类型时它会自动打开。任何人都可以帮助我这个我是VB6的新手(昨天刚拿到它)。

2 个答案:

答案 0 :(得分:7)

我对您的要求的细节感到很遗憾,但一般来说,要从VB6中启动文件,您可以使用ShellExecute及其相关的API函数。

我不确定最佳参考的位置,但我想你可以开始here

修改
你很亲密改变这个:

Private Sub smb3_Click()    
    ShellExecute hWnd, "find", "C:\hi\my.file", vbNullString, vbNullString, SW_SHOWNORMAL    
End Sub 

到此:

Private Sub smb3_Click()    
    ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, SW_SHOWNORMAL    
End Sub

注意我改变了什么:
ShellExecute的第二个参数应该是“打开”,以便使用您正在尝试打开的文件扩展名(函数的第三个参数)与您的计算机上的程序打开指定的文件。检查我包含的链接。

这导致您需要检查机器上的其他内容(以及您将使用程序的机器)。文件扩展名 .file 应该与您要在程序中启动的任何程序相关联。

编辑(9月9日)

好的,让我们看看我们是否能够实现ShellExecute的简单实现。

创建一个新的VB6项目(标准EXE)并向Form1添加一个名为smb1的按钮。

转到表单的代码视图并复制并粘贴此代码(仅此代码):

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


Private Sub smb3_Click()
    Debug.Print ShellExecute(hWnd, "open", "C:\hi\my.txt", vbNullString, vbNullString, 1)
End Sub

确保“c:\ hi”文件夹中有一个名为my.txt的文本文件。

运行程序并单击按钮。它应该使用您在计算机上配置的默认文本文件编辑器程序打开文本文件(如记事本)。

如果没有,请告诉我你得到了什么错误以及错误发生在哪一行。另外,请检查立即窗口。我相信一旦你启动程序就会立即显示立即窗口,只要程序运行,它就会一直显示。如果您的代码到达并超过ShellExecute的行,则立即窗口将显示返回该函数的调用的代码。这将告诉我们很多关于你的问题。

如果代码有效,我们可以考虑更改程序以处理您需要它处理的文件 - “C:\ hi \ my.file”。

但首先在Windows资源管理器中双击该文件会发生什么?如果文件打开,那么我们知道有一个程序,您的系统与具有.file扩展名的文件相关联。如果文件未打开,则需要将程序与.file扩展名关联。查看Windows帮助了解更多信息。设置完成后,在测试程序中将smb3中的代码更改为Click:

Debug.Print ShellExecute(hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1)

运行此命令并单击该程序。该文件应该打开。如果没有,请告诉我你得到了什么错误以及在哪里,并告诉我立即窗口中有什么(如果有的话)。

如果程序确实打开,那么您可以在按钮的click事件中声明ShellExecute以编程方式打开文件所需的代码。但是你必须做出改变,你应该做出改变。

您必须进行的更改位于按钮的单击事件中。我们将删除调试代码,以便您最终得到:

ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1

您应该进行的更改涉及对ShellExecute调用的一些基本错误处理。 ShellExecute在运行时返回代码。此代码可能表示错误。研究您可以在我上面链接的页面上下载的示例程序。在其中,程序员将其调用的结果写入名为result的变量。如果result等于或小于32,则表示错误。在示例程序中,错误显示在错误消息中,但请考虑您可能要执行的操作。

答案 1 :(得分:0)

使用此代码

打开my.ini文件

首先使用此代码注册dll

Public 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

然后应用以下代码:_

Debug.Print ShellExecute(hWnd, "open", "C:\Program Files\MySQL\MySQL Server 5.0\my.ini", vbNullString, vbNullString, 1)