gpt4 book ai didi

c++ - 在 Windows 中设置全局剪贴板文本, native C++

转载 作者:可可西里 更新时间:2023-11-01 10:55:22 26 4
gpt4 key购买 nike

我有一个 ASCII 字符串(一个空终止字符数组)在控制台应用程序中。

我想做的就是让我的应用程序将这个字符串放入“全局剪贴板”以便在运行它之后,我可以在任何标准应用程序(在本例中为 visual studio)中按 ctrl+v 并粘贴我的字符串!

我该怎么做?

我做了:

void SetClipboardText(char* txt)
{
if(!OpenClipboard(NULL))
{
__asm int 3;
}

int l = PIstrlen(txt);
HLOCAL la = GlobalAlloc(LMEM_MOVEABLE,l+1);
void* dest = GlobalLock(la);
PImemcpy(dest,txt,l+1);
GlobalUnlock(la);
if(!SetClipboardData(CF_OEMTEXT,la))
{
__asm int 3;
}
CloseClipboard();
}

我试过 CF_TEXT、CF_OEMTEXT、CF_UNICODE,打开剪贴板时我试过 NULL 和 GetDesktopWindow()

似乎没有任何效果。编辑:上面的代码总是“有效”,它永远不会出错,它永远不会做我想做的事!

最佳答案

如何在剪贴板上设置文本

CString source; 
//put your text in source
if(OpenClipboard())
{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, LPCSTR(source));
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}

如何从剪贴板中取出文本

char * buffer;
if(OpenClipboard())
{

buffer = (char*)GetClipboardData(CF_TEXT);
//do something with buffer here
//before it goes out of scope

}

CloseClipboard();

关于c++ - 在 Windows 中设置全局剪贴板文本, native C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3177319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com