Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» C#: установка хуков и работа с буфером

Автор: DmitriAl
Дата сообщения: 11.10.2005 21:43
Приветствую всех!

Подскажите, пожалуйста, как на C# установть клавиатурный хук и при нажатии пользователем Ctrl+C брать данные из буфера?

Я надеюсь, существует способ, который не сводится к unmanaged code?
Автор: Zimagor
Дата сообщения: 12.10.2005 00:05
Вообще-то по Ctrl-C принято, наоборот, копировать в буфер, но в общем-то ты волен делать, что заблагорассудится. Перекрывай ProcessCmdKey у формы или нужного контрола, а работа с буфером осуществляется через Clipboard. Вот пример для твоей задачи:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
Keys key = keyData & Keys.KeyCode;
            
if (key == Keys.C && ((keyData & Keys.Control) != Keys.None))
{
IDataObject clipboardObject = Clipboard.GetDataObject();
if (clipboardObject.GetDataPresent(typeof(string)))
MessageBox.Show(clipboardObject.GetData(typeof(string)).ToString());
return true;
}

return base.ProcessCmdKey (ref msg, keyData);
}
Автор: Xarde
Дата сообщения: 12.10.2005 06:08
Сдаётся мне, что он хотел именно установить хук, чтобы перехватывать своим кодом работу с буфером обмена в других программах. Как это сделать штатными средствами - не знаю. ИМХО, только через небезопасный код.
Автор: DmitriAl
Дата сообщения: 12.10.2005 07:57
Zimagor
у меня нет формы, я просто хочу поставить хук, и при нажатии Ctrl+C в любом Application брать из буфера то, что туда положил пользователь.
Автор: Zimagor
Дата сообщения: 12.10.2005 13:48
DmitriAl
Тогда да, видимо, без unsafe не обойтись... Попробуй задать вопрос на http://www.gotdotnet.ru , там должны помочь

Страницы: 1

Предыдущая тема: как заставить функции Длл видеть функции иного файла?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.