我正在使用VB.NET中的第一个注射器。 我试图将已加载的dll保存在列表框中,但仅保存名称。 我选择了dll,进行注入,它会保存my.settings,但是一旦我重新打开注入器,它只会保存dll的名称,而不是其路径,因此我必须浏览并再次选择它。
我在考虑也许我必须保存openfile对话框之类的东西,但实际上毫无头绪
插入按钮:
My.Settings.dll = New Specialized.StringCollection
My.Settings.dll.AddRange(dll.Items.Cast(Of String).ToArray)
My.Settings.Save()
My.Settings.process = SteamTextBox2.Text
My.Settings.Save()
在表单加载时:
If My.Settings.dll IsNot Nothing Then dll.Items.AddRange(My.Settings.dll.Cast(Of String).ToArray)
喷油器的问题只需要dll名称而无需路径
Dim ExeName As String = IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)
Private Sub Inject()
pszLibFileRemote = OpenFileDialog1.FileName
End Sub
OpenFileDialog1.Filter = "DLL (*.dll) |*.dll"
OpenFileDialog1.ShowDialog()
OpenFileDialog1.ToString()
If IO.File.Exists(OpenFileDialog1.FileName) Then
Dim TargetProcess As Process() = Diagnostics.Process.GetProcessesByName(SteamTextBox2.Text)
If TargetProcess.Length = 0 Then
...
Else
Call Inject()
我希望它加载实际选择的文件,而不仅仅是其名称
答案 0 :(得分:0)
您的代码在功能上没有任何问题。我想问题在于如何将路径首先加载到列表框中。这是一些执行此操作的代码。
添加一个名为LoadButton
的新按钮,然后为处理程序添加此代码
Private Sub LoadButton_Click(sender As Object, e As EventArgs) Handles LoadButton.Click
Dim filenames As IEnumerable(Of String)
Using dialog As New OpenFileDialog
dialog.Filter = "Application extensions (*.dll)|*.dll|All files (*.*)|*.*"
dialog.Multiselect = True
Select Case dialog.ShowDialog()
Case DialogResult.OK
filenames = dialog.FileNames
Case Else
filenames = Nothing
End Select
End Using
filenames = filenames.Select(Function(fn) System.IO.Path.GetFileName(fn))
If filenames?.Any() Then dll.Items.AddRange(filenames.ToArray())
End Sub
这会将完整路径放入列表框。这样可以解决问题吗?