我想通过按下命令在我的VB6应用程序上打开一个文件.该文件是另一个程序读取的文件类型.我希望它打开它,并且读取文件类型的程序也应该打开,因为当它发现文件类型时它会自动打开.任何人都可以帮我这个我在VB6有点新手(昨天刚拿到它).
我对你的要求的细节感到很遗憾,但一般来说,从VB6中启动一个文件,你可以使用ShellExecute它及其相关的API函数.
我不确定哪里有最好的参考,但我想你可以从这里开始.
编辑:
你很亲密.改变这个:
Private Sub smb3_Click()
ShellExecute hWnd, "find", "C:\hi\my.file", vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
Run Code Online (Sandbox Code Playgroud)
对此:
Private Sub smb3_Click()
ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
Run Code Online (Sandbox Code Playgroud)
注意我改变了什么:
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
Run Code Online (Sandbox Code Playgroud)
确保在"c:\ hi"文件夹中有一个名为my.txt的文本文件.
运行程序并单击按钮.它应该使用您在计算机上配置的默认文本文件编辑器程序打开文本文件(如记事本).
如果没有,请告诉我你得到了什么错误以及错误发生在哪一行.另外,请检查立即窗口.我相信一旦你启动程序就会立即显示立即窗口,只要程序运行,它就会一直显示.如果您的代码到达并超过该行ShellExecute,则立即窗口将显示返回该函数的调用的代码.这将告诉我们很多关于你的问题.
如果代码有效,我们可以考虑更改程序以处理您需要它处理的文件 - 在"C:\ hi\my.file"上.
但首先在Windows资源管理器中双击文件时会发生什么?如果文件打开,那么我们知道有一个程序,您的系统与具有.file扩展名的文件相关联.如果文件未打开,则需要将程序与.file扩展名关联.查看Windows帮助了解更多信息.设置完成后,在测试程序中更改smb3中的代码Click Click to:
Debug.Print ShellExecute(hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1)
Run Code Online (Sandbox Code Playgroud)
运行此命令并单击该程序.该文件应该打开.如果没有,请告诉我你得到了什么错误以及在哪里,并告诉我立即窗口中有什么(如果有的话).
如果程序打开,那么您可以在按钮的单击事件和您ShellExecute需要以编程方式打开文件的代码声明.但是你必须做出改变,你应该做出改变.
您必须进行的更改是在按钮的单击事件中.我们将删除调试代码,以便您最终得到:
ShellExecute hWnd, "open", "C:\hi\my.file", vbNullString, vbNullString, 1
Run Code Online (Sandbox Code Playgroud)
您应该进行的更改涉及对调用的一些基本错误处理ShellExecute. ShellExecute运行时返回代码.此代码可能表示错误.研究您可以在我上面链接的页面上下载的示例程序.在其中,程序员将其调用的结果写入一个名为的变量result.如果result等于或小于32,则表示错误.在示例程序中,错误显示在错误消息中,但请考虑您可能要执行的操作.
| 归档时间: |
|
| 查看次数: |
17282 次 |
| 最近记录: |