Прослушивание сообщений ОС в C # - PullRequest
1 голос
/ 08 апреля 2011

Есть ли в C # методы, аналогичные методу WndProc для прослушивания сообщений ОС. Я не могу использовать WndProc, потому что мой класс не является ни Form, ни унаследованным от Control (его DLL)

protected override void WndProc(ref System.Windows.Forms.Message m)
    {
        switch (m.Msg)
        {
            // listen os messages


            // Ueye Message
            case uEye.IS_UEYE_MESSAGE:
                //fetch frame
                break;
        }
        base.WndProc(ref m);
    }

Ответы [ 5 ]

1 голос
/ 08 апреля 2011

WMI будет делать, если вы хотите прослушивать определенные сообщения.Однажды у меня был проект (см. Комментарий к вопросу), который прослушивал съемные USB-накопители, и WMI работал нормально.

Вы также можете использовать взаимодействие, но я нахожу это грязным, но YMMV.

0 голосов
/ 08 апреля 2011

Если у вас есть форма (видимая или иная), посмотрите на Form.WndProc.

Если нет, вы можете попробовать использовать Application.AddMessageFilter , чтобы добавить фильтр сообщений для мониторинга Windowsсообщения.

0 голосов
/ 08 апреля 2011

Проверьте это: http://social.msdn.microsoft.com/Forums/en-IE/winforms/thread/b44f06fb-fc4a-4fac-87cd-48b2953ea5fa

Кажется возможным переопределить WndProc, но я сам не пробовал!

0 голосов
/ 08 апреля 2011

Стандартный подход к получению оконных сообщений при отсутствии видимого окна заключается в создании невидимого окна для приема сообщений.

0 голосов
/ 08 апреля 2011

Вы должны использовать Windows.Interop

для доступа к Win API

...