How do I discover the user's Desktop folder?

2020-06-20 20:02发布

I'm making a little application in visual studio which loads a ROM in an emulator. I have two emulators and 20 ROMs.

I made a form and added a few buttons. When you click the Button it opens a new form and closes the old one. Then on the new form I have four buttons: each one loads a different ROM in an emulator. So when you press Button1 this code is triggered:

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

It works fine - I click it and it loads the game in the emulator. The bit im having trouble with is the file paths. If I send this application to a friend, it would still look for "C:\Users\shifty\Desktop\" - but that's on my computer, not his.

Is there a way to make the application look for the file on his computer (without changing the file path to (C:\Users\""his user name""\Desktop))

8条回答
家丑人穷心不美
2楼-- · 2020-06-20 20:24

By using that you guarantee that the emulator is on the users desktop. This is not always the case. I know I move things around that I download or a friend sends to me. It's better to use App.Path and make sure your emulator.exe is in the directory with your little front end program (usually the case).

查看更多
看我几分像从前
3楼-- · 2020-06-20 20:27

I had problems using the Environment.GetFolderPath method from previous answers.

The following works in VB 2012, My.Computer.FileSystem.SpecialDirectories.Desktop

So, if you have a file on a users desktop named "contacts.txt", the following will display the full path,

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

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

MsgBox(filePath)

Documentation

查看更多
登录 后发表回答