加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在不同的应用程序中复制和修改所选文本

发布时间:2020-12-15 04:25:45 所属栏目:百科 来源:网络整理
导读:我有一个 Windows应用程序在后台运行.我将此应用程序中的功能映射到热键.就像我把一个消息框放在这个功能中,并给出热键作为Alt Ctrl D.然后按Alt,Ctrl和D在一起消息框出来.我的申请工作正常至此为止. 现在我想在这个函数中编写一个代码,所以当我使用其他应用
我有一个 Windows应用程序在后台运行.我将此应用程序中的功能映射到热键.就像我把一个消息框放在这个功能中,并给出热键作为Alt Ctrl D.然后按Alt,Ctrl和D在一起消息框出来.我的申请工作正常至此为止.

现在我想在这个函数中编写一个代码,所以当我使用其他应用程序(如记事本)时,我选择一个特定的文本行,然后按热键Alt Ctrl D,它应该将选定的文本复制到“_copied”并将其粘贴回记事本.

任何尝试过类似应用程序的人都可以帮助我提供宝贵的意见.

解决方法

你的问题有两个答案

我的应用程序如何设置全局热键

你必须调用一个名为RegisterHotKey的API函数

BOOL RegisterHotKey(
    HWND hWnd,// window to receive hot-key notification
    int id,// identifier of hot key
    UINT fsModifiers,// key-modifier flags
    UINT vk            // virtual-key code
);

更多信息:http://www.codeproject.com/KB/system/nishhotkeys01.aspx

如何从前台窗口获取所选文本

最简单的方法是将crl-C发送到窗口,然后捕获剪贴板内容.

[DllImport("User32.dll")] 
private static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll",CharSet=CharSet.Auto)]
static public extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk,byte bScan,uint dwFlags,uint dwExtraInfo);


.....

private void SendCtrlC(IntPtr hWnd)
    {
    uint KEYEVENTF_KEYUP = 2;
    byte VK_CONTROL = 0x11;
    SetForegroundWindow(hWnd);
    keybd_event(VK_CONTROL,0);
    keybd_event (0x43,0 ); //Send the C key (43 is "C")
    keybd_event (0x43,KEYEVENTF_KEYUP,0);
    keybd_event (VK_CONTROL,0);// 'Left Control Up

}

免责声明:马库斯·彼得斯从此代码:http://bytes.com/forum/post1029553-5.html发表在这里为了您的方便.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读