【问题标题】:visual basic 2010 -- alternate of Alt+Tabvisual basic 2010 -- Alt+Tab 的替代品
【发布时间】:2013-10-17 05:36:58
【问题描述】:

我想:

  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

【问题讨论】:

    标签: .net vb.net process


    【解决方案1】:

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

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

    #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
    

    【讨论】:

    • 这很好实现。非常感谢,Elektro 黑客!
    • @user2889072 谢谢,如果代码解决了您的问题,请随时将答案标记为“已接受”。
    【解决方案2】:

    SendKeys 有第二种方法,您应该尝试:

    SendKeys.SendWait()
    

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

    【讨论】:

    • 非常感谢您的意见,史蒂夫!我会试一试!
    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2013-08-05
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    相关资源
    最近更新 更多