Attualmente sto lavorando a un programma che utilizza una funzionalità che dovrebbe avvisarmi quando la finestra di un altro processo sta massimizzando/massimizzando. Con l'evento di massimizzazione intendo premere i simboli accanto al pulsante di chiusura nell'angolo in alto a destra.Finestra SetWinEventHook Evento massimizzato
Per riuscirci, utilizzo la funzione SetWinEventHook. Il problema è che non riesco a trovare il codice evento corretto per catturare questo evento. Ho provato le costanti EVENT_SYSTEM_MOVESIZESTART, EVENT_SYSTEM_MOVESIZEEND, EVENT_SYSTEM_MINIMIZESTART and EVENT_SYSTEM_MINIMIZEEND
ma non sembrano attivarsi sull'evento di massimizzazione. Tuttavia, posso tracciare altri eventi, quindi la mia implementazione di SetWinEventHook funziona.
Qualcuno ha un'idea su come acquisire l'evento di massimizzazione da un altro processo?
Grazie in anticipo.
Cordiali saluti, Bob
Codice esempio:
// To catch the event
SetWinEventHook(EVENT_MIN, EVENT_MAX, IntPtr.Zero, new WinEventDelegate(WinEventProc), GetProcess(), 0, 0);
// The handler
private void WinEventProc(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime)
{
// TODO: Filter maximize event here
if (eventType == ?)
{
// Do something
}
}
Che con 'SetWindowsHookEx '? – bash0r
Si può attendere un evento di ridimensionamento, quindi controllare se riempie un intero schermo? – tbridge
Ci deve essere un modo migliore, ma un gancio CBT può catturarlo. – chris