Console app clipboard монитор - C#
Формулировка задачи:
Всем привет, нужна помощь. Не могу разобраться.
Делаю консольное приложение, должно мониторить в фоне изменение буфера.
Делал по https://gist.github.com/glombard/7986317. Всё ок, инициализируется, но при копировании ничего не проиходит. Есть идеи, что происходит?
Аналогично, что и здесь Постоянная работа метода
Пулял и в мейне и в отдельном потоке (SetApartmentState(ApartmentState.STA) - это не забывал).
Или инициализация не та? Или обработка? Идеи?
Thread staThread = new Thread(x => { ClipboardNotification d = new ClipboardNotification(); }); staThread.SetApartmentState(ApartmentState.STA); staThread.Start(); staThread.Join(); Console.ReadLine();
Решение задачи: «Console app clipboard монитор»
textual
Листинг программы
Thread staThread = new Thread(x => { ClipboardNotification.ClipboardUpdate += ClipboardNotification_ClipboardUpdate; ClipboardNotification.Listen(); }); staThread.SetApartmentState(ApartmentState.STA); staThread.Start(); private static void ClipboardNotification_ClipboardUpdate(object sender, EventArgs e) { Console.WriteLine("Clipboard update"); } public sealed class ClipboardNotification { /// <summary> /// Occurs when the contents of the clipboard is updated. /// </summary> public static event EventHandler ClipboardUpdate; private static NotificationForm _form = new NotificationForm(); public static void Listen() { Application.Run(); } /// <summary> /// Raises the <see cref="ClipboardUpdate"/> event. /// </summary> /// <param name="e">Event arguments for the event.</param> private static void OnClipboardUpdate(EventArgs e) { var handler = ClipboardUpdate; if (handler != null) { handler(null, e); } } /// <summary> /// Hidden form to recieve the WM_CLIPBOARDUPDATE message. /// </summary> private class NotificationForm : Form { public NotificationForm() { NativeMethods.SetParent(Handle, NativeMethods.HWND_MESSAGE); NativeMethods.AddClipboardFormatListener(Handle); } protected override void WndProc(ref Message m) { if (m.Msg == NativeMethods.WM_CLIPBOARDUPDATE) { OnClipboardUpdate(null); } base.WndProc(ref m); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д