当前位置:  开发笔记 > 编程语言 > 正文

复制和修改不同应用程序中的选定文本

如何解决《复制和修改不同应用程序中的选定文本》经验,为你挑选了1个好方法。

我有一个在后端运行的Windows应用程序.我将此应用程序中的函数映射到热键.就像我将一个消息框放入此功能并将热键设为Alt+ Ctrl+一样D.然后压制Alt,CtrlD一起消息框出现.我的申请工作正常,直到这一点.

现在我想在这个函数中编写一个代码,这样当我使用像记事本这样的另一个应用程序时,我选择一个特定的文本行并按热键Alt+ Ctrl+ D它应该复制所选文本,并附加"_copied"和将它粘贴回记事本.

任何尝试过类似申请的人都可以帮助我提供宝贵的意见.



1> Eduardo Molt..:

你的问题有两个答案

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

你必须调用一个名为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,0,0);
    keybd_event (0x43, 0, 0, 0 ); //Send the C key (43 is "C")
    keybd_event (0x43, 0, KEYEVENTF_KEYUP, 0);
    keybd_event (VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);// 'Left Control Up

}

免责声明:Marcus Peters的代码来自这里:http://bytes.com/forum/post1029553-5.html
发布在这里为了您的方便.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有