在Linux平台上用C语言编程访问剪贴板数据

o2g1uqev  于 2023-05-06  发布在  Linux
关注(0)|答案(2)|浏览(286)

我已经尝试寻找访问Linux剪贴板的方法(访问和修改剪贴板),但没有明确的解决方案的问题。我已经看到这些post12,并试图寻找解决方案,所有我能找到的要么是Windows解决方案或OSX解决方案的这个问题。有没有一个正式的方法来解决这个问题?非常感谢。

l7wslrjt

l7wslrjt1#

Linux中的剪贴板的工作方式与Windows和OS X下的工作方式不同。它没有单独的存储,而是一个应用程序“拥有”的X selection,并将在请求时传输数据。如果你想修改内容,那么你需要请求当前的选择内容,修改它,然后使它在你的应用程序中作为新的剪贴板。

cyvaqqii

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;
}

相关问题