保存列表框的文件而不仅仅是其名称

时间:2019-05-13 19:39:31

标签: vb.net

我正在使用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()

我希望它加载实际选择的文件,而不仅仅是其名称

1 个答案:

答案 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

这会将完整路径放入列表框。这样可以解决问题吗?