windows下拉菜单将文件名传递给vb.net程序

时间:2016-07-15 15:08:16

标签: vb.net windows filenames regedit

我有几个待处理因素的文件可能需要使用备用变体。正确文件的选择从标准的Windows目录开始C:\我的情况下的图纸,所以我知道我们可以将项目添加到windows backbround上下文菜单中,如下所示:

 Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\txtfile\shell\mymenu]
@="test123"

[HKEY_CLASSES_ROOT\txtfile\shell\mymenu\command]
@="%SystemRoot%\\system32\\NOTEPAD.EXE %1"

然而(即使这是可能的,我也不确定)我想得到被抄袭的文件的名称,并在我的vb.net应用程序中使用它,例如显示文件名的文本框。

任何人都知道我是否可以这样做?怎么样?

1 个答案:

答案 0 :(得分:2)

首先,您必须获取命令行参数,这可以通过几种不同的方式完成,但我更喜欢使用Environment.GetCommandLineArgs()

Dim Arguments() As String = Environment.GetCommandLineArgs()

然后你必须检查那里实际上是一个要读的参数。第一个参数(索引0)始终是应用程序的路径,因此我们必须检查它是否至少包含两个参数,以确保还传递了一个到你的应用程序。

If Arguments.Length >= 2 Then

最后,您只需从第二个参数获取文件的路径,然后在其上调用IO.Path.GetFileName()

Dim FilePath As String = Arguments(1) 'Second argument has index 1.
Dim FileName As String = IO.Path.GetFileName(FilePath)

如果你根本不想要文件的路径,你可以继续这样做:

Dim FileName As String = IO.Path.GetFileName(Arguments(1))

完整代码:

Dim Arguments() As String = Environment.GetCommandLineArgs()

If Arguments.Length >= 2 Then
    Dim FilePath As String = Arguments(1) 'Second argument has index 1.
    Dim FileName As String = IO.Path.GetFileName(FilePath)

    'Do your stuff here.
End If