我在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))
答案 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)
答案 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)
答案很简单。
答案 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