注册 登录
编程论坛 C语言论坛

咨询一个问题,关于复制粘贴的问题.

a451410 发布于 5 天前 14:57, 259 次点击
我想知道如何模仿键盘的ctrl+C,就是从某个文本里复制长度的问题.
怎么用c来实现,不是模拟键盘去按ctrl 和 c键.而是直接向键盘的缓冲区内写入某些内容,
然后我直接去ctrl+v 去粘贴就可以了
请问怎么用c来实现  在线等
3 回复
#2
阳光上的桥5 天前 15:07
CTRL+C 的功能是复制,并不操纵键盘缓冲区,只是把内容存放到系统的剪贴板对象,使用 OpenClipboard、SetClipboardData、CloseClipboard 系列函数来操作,示例代码:

程序代码:

#include <windows.h>
#include <string.h>

void CopyToClipboard(const char* text) {
    if (OpenClipboard(NULL)) {
        EmptyClipboard();
        HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, strlen(text) + 1);
        if (hMem) {
            char* pMem = (char*)GlobalLock(hMem);
            strcpy(pMem, text);
            GlobalUnlock(hMem);
            SetClipboardData(CF_TEXT, hMem);
        }
        CloseClipboard();
    }
}
#3
yiyanxiyin5 天前 16:36
如果阁下说的模拟(模仿)键盘仅仅是指使用机械臂等物理撞击来模拟(模仿)手指敲击, 那么kb_event()和SendInput()会写键盘缓冲区, 并且不是模拟(模仿)键盘(物理撞击式), 最终实现非模拟(模仿)键盘且写键盘缓冲区的ctl+c功能, 从而满足需方的苛刻的看似完成不了的变态之需求. 在当前冯诺依曼计算机体系框架下,如果有一丁点考虑使用clipboard和postmessage的想法,那么就是对上帝之需求的严重忽视, 如果模拟(模仿)之定义不加以限制,那么要实现此变态需求可能需要等到冯诺依曼架构体系被推翻之后,可能是计算机架构体系被革命了好几代之后
#4
a4514103 小时前
回复 2楼 阳光上的桥
很受用,原来是要操作windows的剪切板,我不知道有剪切板这个对象,这下方便了
1