Как зарегистрировать WndProc в консольном приложении
Для обработки сообщений это можно сделать в WinForms, но можно ли организовать WndProc не прибегая формы?
Как реализовать его в консольном приложение?
Ответы (1 шт):
Автор решения: Rudnight
→ Ссылка
Нашёл решение, сделал так, по другому не получается!
Мне нужно было сделать просмотр подключения и отключение usb флешек в консоли.
public class Program : Form
{
[STAThread]
public static void Main(string[] args)
{
Application.Run(new Program());
}
protected override void WndProc(ref Message m)
{
int WM_DEVICECHANGE = 537;
IntPtr flashOut = (IntPtr)32772;
IntPtr flashIn = (IntPtr)32768;
if (m.Msg == WM_DEVICECHANGE)
{
Console.WriteLine($"Изменение устройства {m.WParam} - {m.LParam}\r\n");
if (m.WParam == flashIn)
{
Console.WriteLine("Обнаружена флешка ");
}
if (m.WParam == flashOut)
{
Console.WriteLine("Флешка извлечена");
}
}
base.WndProc(ref m);
}
}