Se si dispone di un'applicazione di console con un handle configurato in questo modo;C++: come impostare un nuovo wndProc per un'applicazione console?
HWND hWnd = GetConsoleWindow();
Quindi come impostare un nuovo wndProc per la finestra?
Ho provato ad utilizzare
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)conProc);
Con conProc essere definita come
LRESULT CALLBACK conProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_NCHITTEST:
return HTCAPTION;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
Ma non funziona e dice: "Codice di errore: 5 - Accesso negato" sul GetLastError()
ho capito che è piuttosto difficile modificare l'applicazione della console in questo modo, poiché è un'applicazione csrss.exe e tutto, ma mi piacerebbe ancora provare .. Grazie.
A seconda di ciò che è * per *, è possibile trovare il [progetto Console] (http: // sourceforge .net/projects/console /) utili. –
È interessante perché stavo per dire che potresti prendere il 'WNDCLASSEX' associato ad esso e creare la tua finestra basata su quella, ma si scopre che afferrare' WNDCLASSEX' è un po 'difficile. 'GetClassInfoEx' ha bisogno di un handle di modulo e ottenere quell'handle è fastidioso. Anche 'CreateToolhelp32Snapshot' afferma chiaramente che non è possibile usarlo con csrss.exe. – chris