vb获得文件地址的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb获得文件地址的方法相关的知识,希望对你有一定的参考价值。

窗体上有text1(不可编辑)和command1和command2
1.当运行时,点击command1,打开一个像系统"打开"的对话框,从里面选择一个文件(可以是.exe或.txt等可执行的文件,不过不用可以编辑过滤代码)
2.点"打开"对话框上的确定后,在text1中就会显示刚才选中文件的地址(例如:"c:\****\***\***.exe").
3.然后再点击command2,command2会按照text1.text中显示的文件路径,启动该程序(如启动***.exe)

我VB刚入点门,望各位高手帮忙啊,希望重点部分能有注释谢谢了

介绍一个最简单,又最不保险的方法吧:

1、按下快捷键 Ctrl+T ,打开“部件”对话框;
2、单击“Microsoft Common Dialog Control 6.0”左边的小方框,单击“确定”引用;
3、在窗体上添加一个 CommonDialog 控件(过程不用说了吧),命名为 dlgOpen
4、输入代码:

'窗体开头
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

’Command1_Click
dlgOpen.Filter="文本文件(*.txt)|*.txt|可执行文件(*.exe)|*.exe"
dlgOpen.DialogTitle="打开文件"
dlgOpen.ShowOpen
Text1.Text=dlgOpen.FilePath '文件路径
Caption=dlgOpen.FileTitle '文件名

'Command2_Click
ShellExecute(Me.Hwnd,"Open",Text1.Text,"","",0)

这就行啦!

对于EXE文件,可以用 Shell 函数: i=Shell(Text1.Text)
或者用API:
'声明
Public Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long

'Command2_Click
WinExec(Text1.Text,0)

还有一种用 API 函数调用对话框的方法,比较复杂,如果你有兴趣可以对这个问题进行补充,我会回应。

我也是搞VB的,中级吧,以后还可以问我一些问题哦!:)

参考资料:Visual Basic 的 API 浏览器

参考技术A '添加一个Microsoft Common Dialog Control 6.0部件

Private Sub Command1_Click()
CommonDialog1.CancelError = True
On Error GoTo clsCMDLG

CommonDialog1.InitDir = "d:\" '指定缺省目录
CommonDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*" '过滤文件类型,类型之间用管道符号“|”隔开
CommonDialog1.FilterIndex = 1 '指定缺省文件类型
CommonDialog1.ShowOpen '显示“打开”对话框
If Len(CommonDialog1.FileName) > 0 Then
Text1.Text = CommonDialog1.FileName
End If

clsCMDLG: '在打开对话框中点“取消”
CommonDialog1.FileName = ""
End Sub

Private Sub Command2_Click()
Dim HZ As String
On Error Resume Next

'取得扩展名
For i = Len(Text1.Text) To 1 Step -1
If Mid(Text1.Text, i, 1) <> "." Then
HZ = Mid(Text1.Text, i, 1) & HZ
Else
Exit For
End If
Next
HZ = UCase(HZ) '把扩展名转换为全大写

Select Case HZ
'判断扩展名,选择相应的程序打开文件,注意这里都要用大写的扩展名
Case "TXT"
Shell "notepad " & Text1.Text, vbNormalFocus
Case "EXE"
Shell Text1.Text, vbNormalFocus
End Select
End Sub
参考技术B '在窗体上加入你所说的控件,然后复制下面代码,运行后先点击command1选择文件,然后点击command2运行文件即可。

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 Command1_Click()
Dim oDLG
Set oDLG = CreateObject("MSComDlg.CommonDialog")
With oDLG
.DialogTitle = "打开文件"
.Filter = "所有文件|*.*"
.MaxFileSize = 255
.ShowOpen
If .FileName <> "" Then
Text1.Text = .FileName
End If
End With
Set oDLG = Nothing

End Sub

Private Sub Command2_Click()
ShellExecute Me.hwnd, vbNullString, Text1.Text, vbNullString, vbNullString, 1
End Sub本回答被提问者采纳
参考技术C 不用那么复杂,直接调用windows的“打开对话框”。
private sub command1_click()
commondialog1.filter="all files(8.8)|*.*|text files(*.txt)|*.txt|可执行文件(*.exe)|*.exe"
commondialog1.filterindex=2
commnondialog1.showopen
text1=commondialog1.filename)
end sub
就行了。不过记得添加控件(工具栏没有现成的,要先到“菜单、工程、部件”里面勾选、确定,工具栏才会有)。
参考技术D commandialog.filename=""

以上是关于vb获得文件地址的方法的主要内容,如果未能解决你的问题,请参考以下文章

javascript中怎么设置文本框获得焦点

vb中如何获得一个窗口的句柄

vb.net 第十三节 获得目的地IP(只能是所在局域网中的IP)对应的物理地址 SendARP

VB 获得窗口句柄

如何用VB获得第三方软件中的数据?50分悬赏等你拿。

VB中读入文件,如何获得文本的行数