0

我想要:

  1. 设置“你好!” 在剪贴板上
  2. alt 选项卡到最后一个活动窗口(例如记事本等)
  3. 粘贴剪贴板上的内容

我实现它的方式有效,但并非完美无缺;它在大多数情况下都有效,其他时候,它根本不会执行第 2 步。我尝试过其他事件,例如“Click”、“MouseUp”以及如下所示的“MouseClick”。有没有其他方法可以实现 alt+tab?很沮丧,需要你的帮助。谢谢!


我已经导入了“System.Threading”。示例代码:

Private Sub try1_click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles try1.MouseClick
        Clipboard.Clear() 'clears the clipboard
        Clipboard.SetText("Hello!")
        SendKeys.Send("%{Tab}")
        Thread.Sleep(500)
        SendKeys.SendWait("+{Insert}")
        SendKeys.Send("{Enter}")

    End Sub
4

2 回答 2

0

首先存储当前活动窗口的进程名称以便稍后激活它,您可以将其存储在字典或列表或元组或其他任何东西中。

然后使用AppActivate激活您想要的所需窗口,而不是尝试发送选项卡键以尝试返回到最后一个活动窗口。

#Region " App Activate "

' [ App Activate ]
'
' // By Elektro H@cker
'
' Examples :
'
' App_Activate("notepad")
' App_Activate("notepad.exe")

Private Sub App_Activate(ByVal ProcessName As String)

    ProcessName = If(ProcessName.ToLower.EndsWith(".exe"), _
                     ProcessName.Substring(0, ProcessName.LastIndexOf(".")), _
                     ProcessName)

    AppActivate(Process.GetProcessesByName(ProcessName).FirstOrDefault.Id)

End Sub

#End Region
于 2013-10-17T08:41:32.960 回答
0

SendKeys 有第二种你应该尝试的方法:

SendKeys.SendWait()

问题是 Send() 将消息放入队列并继续,而 SendWait() 将暂停,直到消息在 Windows 消息队列中处理。

于 2013-10-17T16:44:39.983 回答