Отловить изменение содержимого буфера обмена - C#
Формулировка задачи:
здравствуйте, мой первый вопрос, поэтому если не в том разделе написал, прошу прощения.
в программе обрабатываются сообщения
при изменении содержимого буфера вызывается функция
при отладке после вызова функции SubString (выделенная строчка) - управление передается в функцию обработки сообщений, ошибок не появляется, но и строчки в меню не добавляются.
При использовании закомментированной строчки (курсором выделена) все работает.
Может кто объяснить, в чем проблема?
protected override void WndProc(ref Message m) { //проверка на зарегестрированную комбинацию клавиш if ((m.Msg == 0x0312) && (m.WParam.ToString() == glAtom.ToString())) { //показываю меню MenuBuffer.Show(Cursor.Position); base.WndProc(ref m); return; } switch (m.Msg) { //изменилось содержимое уфера case WM_DRAWCLIPBOARD: { ClipboardChanged(); //знаю зачем, но и без этого работает SendMessage(nextClipboardViewer, WM_DRAWCLIPBOARD, IntPtr.Zero, IntPtr.Zero); break; } case WM_CHANGECBCHAIN: { if (m.WParam == nextClipboardViewer) { nextClipboardViewer = m.LParam; } else { SendMessage(nextClipboardViewer, WM_CHANGECBCHAIN, m.WParam, m.LParam); } m.Result = IntPtr.Zero; // уведомляем систему об обработке сообщения break; } default: { break; } } base.WndProc(ref m); }
private void ClipboardChanged() { string data = ""; if (Clipboard.ContainsText()) { data = Clipboard.GetText(); if (data != "") { //заносим в список BufferContentList.Insert(0, data); //добавляем из списка for (int i = 0; i < BufferContentList.Count(); i++) { [I] //MenuBuffer.Items.Add(BufferContentList[i]);[/I] [B]MenuBuffer.Items.Add(BufferContentList[i].Substring(0, 8));[/B] } } } }
Решение задачи: «Отловить изменение содержимого буфера обмена»
textual
Листинг программы
WndProc
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д