Как заблокировать буфер обмена? - PullRequest
4 голосов
/ 02 июня 2010

Мне было интересно, есть ли в любом случае заблокировать и разблокировать буфер обмена из C #.По сути, я бы написал что-то в это, и я не хочу, чтобы кто-то еще писал в это, прежде чем я заберу свои вещи.

Как я могу это сделать?

Ответы [ 4 ]

3 голосов
/ 02 июня 2010

НЕ делайте этого. Буфер обмена для удобства пользователя, а не ПРОГРАММИСТ! Вы будете вызывать ошибки и сбои в других программах, которые пытаются (правильно) использовать буфер обмена, в том числе в программах, которые следят за обновлениями.

«Программы не должны передавать данные в наш из буфера обмена без явная инструкция от пользователь.»
- Чарльз Петцольд, Программирование Windows 3.1, Microsoft Press, 1992

1 голос
/ 02 июня 2010

Функция API OpenClipboard (), за которой следует EmptyClipboard (), блокирует буфер обмена до вызова CloseClipboard. Вы, вероятно, должны передать дескриптор окна в целевом процессе. Не знаю, сработает ли это на самом деле. Посетите pinvoke.net для необходимых деклараций.

1 голос
/ 02 июня 2010

Как говорит @shambulator, это не то, для чего предназначен буфер обмена. Возможно, вам следует попробовать другую тактику. Интеграция с унаследованными системами может быть решена многими способами (большинство из них, увы!).

Система, в которую вы можете отправлять только нажатия клавиш: это приложение для Windows? Можете ли вы покопаться в его оконной структуре, чтобы явно установить тексты внутри текстовых полей по их HWND ? Есть ли в системе какой-либо тип файлового ввода-вывода, который вы могли бы использовать? Возможно, вы могли бы покопаться в его базе данных?

0 голосов
/ 02 июня 2010

Нет, буфер обмена не работает таким образом. Что, если пользователь хотел скопировать что-то в другое приложение, но не смог, потому что ваш пользователь как-то его заблокировал?

Если вы пытаетесь соединить два процесса, изучите альтернативы, предназначенные для взаимодействия между процессами, такие как удаленное взаимодействие, именованные каналы, сокеты или общая память. Удаленное взаимодействие, вероятно, первое место, где нужно искать приложения, написанные на C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...