相关疑难解决方法(0)

SendKeys Ctrl + C到外部应用程序(文本到剪贴板)

我有一个应用程序,作为托盘图标坐在系统托盘中.我已经注册了一个热键,当按下它时将捕获任何应用程序中的当前文本选择,即使在Web浏览器中也是如此.

我的方法是发送密钥组合{Ctlr + C}来复制文本.然后访问剪贴板并使用我自己的应用程序中的文本.

我在VB.NET中编程,但是在C#中的任何帮助,甚至是使用Win32_Api的C++都会受到高度赞赏.

我使用AutoHotkey,在那里,我有一个访问剪贴板文本的脚本,工作正常.

Pause::
clipboard =  ; Start off empty to allow ClipWait to detect when the text has arrived.
Send ^c
ClipWait, 2  ; Wait for the clipboard to contain text.
if ErrorLevel
{
    ;Do nothing after 2 seconds timeout
    return
}
Run https://translate.google.com/#auto/es/%clipboard%
return
Run Code Online (Sandbox Code Playgroud)

由于AutoHotkey是开源的,我下载了代码并尝试尽可能多地复制ClipWait的行为.

我的代码大多数时间都在工作,但有时会有一个重要的延迟.我无法访问剪贴板和win32函数IsClipboardFormatAvailable()为While保持返回False.当我尝试从可编辑的TextBox中专门从Google Chrome复制时,会发生这种情况.

我尝试了很多不同的东西,包括使用.Net Framework剪贴板类.我读到的问题可能是运行命令的线程没有设置为STA,所以我做到了.在我的绝望中,我也放了一个计时器,但没有完全解决问题.

我也读了一个钩子监视剪贴板的选项,但我想避免这种情况,除非它是唯一的方法.

这是我的VB.NET代码:

Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Threading
Imports Hotkeys
Public Class Form1
    Public m_HotKey As Keys = Keys.F6

    Private Sub RegisterHotkeys() …
Run Code Online (Sandbox Code Playgroud)

c# c++ vb.net clipboard sendkeys

7
推荐指数
1
解决办法
2621
查看次数

切换到Alt-Tab等上一个活动应用程序

好吧,我发现很多关于通过名称等找到窗口的帖子.我没有找到的是如何找到并将窗口应用程序焦点切换到最后一个活动窗口.我在下面显示的代码将为我提供活动的任务管理器中的活动应用程序列表.

我无法弄清楚该怎么做才能弄清楚最后一个活动应用程序是什么应用程序,然后切换到它.例如...

我打开了自定义winform应用程序.

我点击一个按钮

我的应用程序切换到上一个活动窗口/应用程序.

这是我到目前为止的工作代码.(这是按钮上的操作,它希望应用程序有一个名为textbox1的文本框.您还需要使用System.Diagnostics添加;

    private void button1_Click(object sender, EventArgs e)
    {

        Process[] procs = Process.GetProcesses();
        IntPtr hWnd;
        foreach (Process proc in procs)
        {
            if ((hWnd = proc.MainWindowHandle) != IntPtr.Zero)
            {
                textBox1.Text += (proc.ProcessName.ToString());
                textBox1.Text += "\t";
                textBox1.Text += (hWnd.ToString());
                textBox1.Text += "\r\n";
            }
        }         

    }
Run Code Online (Sandbox Code Playgroud)

c# alt-tab winforms-interop winforms

4
推荐指数
1
解决办法
5529
查看次数

标签 统计

c# ×2

alt-tab ×1

c++ ×1

clipboard ×1

sendkeys ×1

vb.net ×1

winforms ×1

winforms-interop ×1