如何发现用户的桌面文件夹?

时间:2011-06-24 04:15:50

标签: vb.net visual-studio-2010

我在visual studio中制作一个小应用程序,它在模拟器中加载ROM。 我有两个模拟器和20个ROM。

我做了一个表格并添加了几个按钮。单击按钮时,它会打开一个新表单并关闭旧表单。然后在新表单上我有四个按钮:每个按钮在模拟器中加载不同的ROM。因此,当您按下Button1时,会触发此代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles yellow.Click
Shell("C:\Users\shifty\Desktop\pokemon games\Emulator\VBA\VisualBoyAdvance.exe ""C:\Users\shifty\Desktop\pokemon games\Roms\Yellow\Pokemon Yellow.gb""", vbNormalFocus)
End Sub

它工作正常 - 我点击它并在模拟器中加载游戏。我遇到问题的是文件路径。如果我将此应用程序发送给朋友,它仍然会查找“C:\ Users \ shifty \ Desktop \” - 但这是在我的计算机上,而不是他的。

有没有办法让应用程序在他的计算机上查找文件(不将文件路径更改为(C:\ Users \“”他的用户名“”\ Desktop))

8 个答案:

答案 0 :(得分:36)

Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

这将解析为当前用户的桌面文件夹。

它甚至可以在XP,vista和Windows 7之间正常工作。

答案 1 :(得分:8)

老帖但我不得不支持Mc Shifty。你不能假设每个人都是编码专家。如果他们那么他们就不会在这里问这样的问题。

上面给出的答案都没有完整

Environment.GetFolderPath(Environment.SpecialFolder.Desktop))<<<包括和额外) Environment.GetFolderPath(Environment.SpecialFolder.Desktop));<<<额外的)和;是C或java而不是VB,他显然是通过他的示例代码使用它。

这两个只能为您提供一半所需的代码来生成可用的东西。

Dim s As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

上面的代码会为您提供所需的结果, c:\ users \ shifty \ desktop

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles yellow.Click
    Dim s As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    Shell(s & "\Desktop\pokemon games\Emulator\VBA\VisualBoyAdvance.exe " & s & "\pokemon games\Roms\Yellow\Pokemon Yellow.gb""", vbNormalFocus)
End Sub

答案 2 :(得分:4)

有一种机制可以使用Environment.SpecialFolder获取当前用户的桌面目录。

用法:

Environment.GetFolderPath(Environment.SpecialFolder.Desktop));

答案 3 :(得分:3)

我在使用之前答案中的Environment.GetFolderPath方法时遇到了问题。

以下适用于VB 2012,My.Computer.FileSystem.SpecialDirectories.Desktop

因此,如果您在名为" contacts.txt"的用户桌面上有一个文件,则以下内容将显示完整路径,

' Desktop path
Dim desktopPath = My.Computer.FileSystem.SpecialDirectories.Desktop

' Concatenate desktop path and file name
filePath = desktopPath & "/contacts.txt"

MsgBox(filePath)

Documentation

答案 4 :(得分:3)

此时真的很老,但嘿,找到了我要找的东西。

MC SH1FTY,我认为你已经想到了这一点,但要做你想做的事情:

1)调用Spence写的变量代码(我在全球声明它,但这是我的偏好。要做到这一点:

Public userDesktopLoc As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

2)在你的代码中使用这个DIRECTLY,或者创建另一个字符串来连接一个目录:

选项A)

Public emulatorPath As String = userDesktopLoc & "pokemon games\Emulator\VBA\VisualBoyAdvance.exe "
Public romPath As String = userDesktopLoc & "pokemon games\Roms\Yellow\Pokemon Yellow.gb"

然后,在子例程中,将当前的Shell语句替换为:

Shell(emulatorPath & romPath, vbNormalFocus)

或者,选项B,这是thedsz的答案:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles yellow.Click
        Dim s As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
        Shell(s & "\Desktop\pokemon games\Emulator\VBA\VisualBoyAdvance.exe " & s & "\pokemon games\Roms\Yellow\Pokemon Yellow.gb""", vbNormalFocus) 
End Sub

答案 5 :(得分:0)

通过使用它,您可以保证模拟器位于用户桌面上。这并非总是如此。我知道我移动的东西是我下载或朋友发给我的。最好使用App.Path并确保你的emulator.exe在你的小前端程序的目录中(通常是这种情况)。

答案 6 :(得分:0)

答案很简单。

  • 将其放在表单顶部
  • “Public thepath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)”
  • 确保文件在桌面上!
  • 然后“点击您的按钮或用于打开emu的任何内容并输入
  • “Process.Start(路径+”emulator.exe“+”你想要的rom“)

答案 7 :(得分:-2)

您需要使用文件打开对话框来选择两个文件的路径。 Here就是一个例子。

然后在代码中使用这两个路径:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles yellow.Click
    Shell(emulatorPath + "\"" + romPath + "\"", vbNormalFocus)
End Sub