我已经尝试寻找访问Linux剪贴板的方法(访问和修改剪贴板),但没有明确的解决方案的问题。我已经看到这些post,1,2,并试图寻找解决方案,所有我能找到的要么是Windows解决方案或OSX解决方案的这个问题。有没有一个正式的方法来解决这个问题?非常感谢。
l7wslrjt1#
Linux中的剪贴板的工作方式与Windows和OS X下的工作方式不同。它没有单独的存储,而是一个应用程序“拥有”的X selection,并将在请求时传输数据。如果你想修改内容,那么你需要请求当前的选择内容,修改它,然后使它在你的应用程序中作为新的剪贴板。
cyvaqqii2#
void runproc(char *output, char *proc) { FILE *fp; fp = popen(proc, "r"); if (fp == NULL) { ERRMSG(-1, true, "runproc failure"); } fgets(output, 4096, fp); pclose(fp); } int cbcopy(char *text) { /* copies text to the system clipboard usint xclip command */ char cmd[10240]; // 10K int rc = 0; sprintf(cmd, "echo \"%s\" | xclip -selection clipboard", text); rc = system(cmd); return rc; } char *cbpaste(char *text) { /* pastes clipboard into text */ char cmd[64]; // 10K strncpy(cmd, "xclip -o", 10); runproc(text, cmd); chomp(text); return text; }
2条答案
按热度按时间l7wslrjt1#
Linux中的剪贴板的工作方式与Windows和OS X下的工作方式不同。它没有单独的存储,而是一个应用程序“拥有”的X selection,并将在请求时传输数据。如果你想修改内容,那么你需要请求当前的选择内容,修改它,然后使它在你的应用程序中作为新的剪贴板。
cyvaqqii2#