BofD
2004-06-27, 13:49:02
Hallo,
gibt es in C++ die Möglichkeit WindowMessages von anderen Programmen abzufangen und späten wieder zu diesen Programmen zurückzusenden? Sozusagen ein "externer Messagehandler". Ich will ein Programm schreiben, dass systemweit alle Messages aufzeichnet.
Also ich hab mir mal folgendes überlegt:
Grundsätzlich braucht man ja erstmal ein normalen MessageLoop. Etwa so:
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
MSG msg;
while (GetMessage(..))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
Normalerweise würde man ja statt GetMessage(..) einfach GetMessage(&msg, (HWND)NULL, 0, 0) schreiben. Ich will aber ja nicht nur von meiner eigenen Anwendung die Messages, sondern von allen.
Gibt es eine Funktion, die alle Messages auf einmal abfängt?
Eine andere Möglichkeit wäre von jedem Fenster einzeln die Messages nacheinander abzufangen. Nur wie kann ich ein Array von Handles erzeugen, die auf jeweils ein anderes Fenster zeigen?
Oder Geht das ganze auch einfacher indem man direkt auf den MessageQueue zugreifen kann?
gibt es in C++ die Möglichkeit WindowMessages von anderen Programmen abzufangen und späten wieder zu diesen Programmen zurückzusenden? Sozusagen ein "externer Messagehandler". Ich will ein Programm schreiben, dass systemweit alle Messages aufzeichnet.
Also ich hab mir mal folgendes überlegt:
Grundsätzlich braucht man ja erstmal ein normalen MessageLoop. Etwa so:
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
MSG msg;
while (GetMessage(..))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
Normalerweise würde man ja statt GetMessage(..) einfach GetMessage(&msg, (HWND)NULL, 0, 0) schreiben. Ich will aber ja nicht nur von meiner eigenen Anwendung die Messages, sondern von allen.
Gibt es eine Funktion, die alle Messages auf einmal abfängt?
Eine andere Möglichkeit wäre von jedem Fenster einzeln die Messages nacheinander abzufangen. Nur wie kann ich ein Array von Handles erzeugen, die auf jeweils ein anderes Fenster zeigen?
Oder Geht das ganze auch einfacher indem man direkt auf den MessageQueue zugreifen kann?