这通常发生在使用Linux系统时,因为系统默认使用X11窗口系统。要解决这个问题,您需要使用X11 API来访问CLIPBOARD选择。以下是一个示例:
#include <X11/Xlib.h>
#include <X11/Xatom.h>
int main() {
Display *display = XOpenDisplay(NULL);
Window window = XCreateSimpleWindow(display, DefaultRootWindow(display), 0, 0, 1, 1, 0, 0, 0);
XSelectInput(display, window, SelectionNotify);
XSetSelectionOwner(display, XA_PRIMARY, window, CurrentTime);
Atom clipboard = XInternAtom(display, "CLIPBOARD", False);
XSetSelectionOwner(display, clipboard, window, CurrentTime);
XFlush(display);
XEvent event;
while (true) {
XNextEvent(display, &event);
switch (event.type) {
case SelectionRequest: {
XSelectionRequestEvent *request = &(event.xselectionrequest);
if (request->selection == clipboard) {
XChangeProperty(display,
request->requestor,
request->property,
request->target,
8,
PropModeReplace,
(unsigned char*) "Hello World",
11);
XEvent sendEvent;
sendEvent.xselection.type = SelectionNotify;
sendEvent.xselection.display = request->display;
sendEvent.xselection.requestor = request->requestor;
sendEvent.xselection.selection = request->selection;
sendEvent.xselection.target = request->target;
sendEvent.xselection.property = request->property;
sendEvent.xselection.time = request->time;
XSendEvent(request->display, request->requestor, False, NoEventMask, &sendEvent);
}
break;
}
case SelectionClear:
XCloseDisplay(display);
return 0;
default:
break;
}
}
}
此示例程序使用X11 API来创建一个窗口并将其设置为CLIPBOARD的拥有者。它接受来自其他应用程序的粘贴请求,并将