API GetMessage для другого процесса, такого как Spy++
Я пытаюсь посмотреть другой процесс, если окно мигает.
Я пытался использовать API GetMessage в user32, но он не получает никакого сообщения от данного дескриптора. Я пытаюсь поймать "сообщение 0x0118", которое появляется в Spy++ при запуске окна
[DllImport("user32.dll")]
static extern int GetMessage(out tagMSG lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint wMsgFilterMax);
var p = Process.GetProcessesByName("process").FirstOrDefault();
tagMSG msg = new tagMSG();
DWORD res = 1;
while (res != 0)
{
res = GetMessage(out msg, p.MainWindowHandle, 0, 0);
if (res == -1)
{
Console.Write("-1");
}
else
{
if (msg.message == 0x0118)
{
Console.WriteLine("flashing");
}
else
{
Console.WriteLine(msg.message.ToString("x2"));
}
}
}
class POINT
{
public long x;
public long y;
}
class tagMSG
{
public HWND hwnd;
public UINT message;
public WPARAM wParam;
public LPARAM lParam;
public DWORD time;
public POINT pt;
public DWORD lPrivate;
}
using HWND = System.IntPtr;
using UINT = System.UInt32;
using WPARAM = System.IntPtr;
using LPARAM = System.IntPtr;
using DWORD = System.Int32;
когда запускается этот код, он останавливается на строке GetMessage и ожидает сообщения, но сообщение не приходит. Я сравнивал Handle в spy++ с p.MainWindowHandle - это равно. Примечание. Запуск Visual Studio от имени администратора.