Jeśli mam aplikację konsolową z uchwytem, ustaw ją tak;C++: Jak ustawić nowy wndProc dla aplikacji konsolowej?
HWND hWnd = GetConsoleWindow();
Następnie, jak skonfigurować nowy wndProc dla okna?
Próbowałem za pomocą
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)conProc);
Z conProc zdefiniowany jako
LRESULT CALLBACK conProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_NCHITTEST:
return HTCAPTION;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
Ale to nie działa i mówi: "Error code: 5 - Odmowa dostępu" na GetLastError()
rozumiem że jest to dość trudne do zmodyfikowania aplikacji konsolowej w ten sposób, ponieważ jest to aplikacja csrss.exe i wszystkie, ale nadal chciałbym spróbować .. Dzięki.
W zależności od tego, co to jest * do *, można znaleźć [projekt Console] (http: // SourceForge .net/projects/console /) użyteczne. –
To ciekawe, ponieważ chciałem powiedzieć, że możesz pobrać "WNDCLASSEX" z nim związany i stworzyć własne okno oparte na tym, ale okazuje się, że chwytanie 'WNDCLASSEX' jest trochę trudne. 'GetClassInfoEx' wymaga uchwytu modułu, a uzyskanie tego uchwytu jest denerwujące. Nawet 'CreateToolhelp32Snapshot' wyraźnie stwierdza, że nie można go używać z csrss.exe. – chris