Как вставить содержимое системного буфера обмена в произвольное окно, используя Qt - PullRequest
3 голосов
/ 07 декабря 2011

У меня такой же вопрос с этим , но в Qt.

Как вставить содержимое буфера обмена в произвольные места ***** (имитировать CTRL + V) в Qt?

***** вставьте буфер обмена вне вашего приложения Qt, не нажимая CTRL + V

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Я почти уверен, что для этого вам придется прибегнуть к специфике платформы.

Во-первых, вам нужно каким-то образом получить идентификатор / дескриптор ранее активного приложения.В Windows это можно сделать с помощью GetWindow(), как указано здесь .В оконных менеджерах EWMH вы можете использовать свойство _NET_CLIENT_LIST_STACKING .

Во-вторых, вам нужно будет попросить это окно выполнить действие вставки.Опять же, в Windows SendMessage(window, WM_PASTE, 0, 0) (документы для [SendMessage] и WM_PASTE ).На самом деле, я не уверен, как бы вы достигли этого в X11.

Существует около 70 000 случаев, когда описанный выше подход не сработает, но, возможно, он поможет вам начать?

1 голос
/ 07 декабря 2011

Вам необходимо использовать класс QClipboard .

Но я не уверен, что понял вопрос. Что означает «произвольное местоположение»? Вы хотите вставить буфер обмена вне вашего приложения Qt? (Я не думаю, что X11 и ICCCM и EWMH разрешает это).

...