Sto cercando di capire se il cursore del mouse si trova sullo schermo del desktop. Ecco il mio codice:Come sapere se il cursore del mouse si trova sullo schermo del desktop?
[DllImport("user32.dll")]
public static extern bool GetCursorPos(out Point lpPoint);
[DllImport("user32.dll")]
public static extern IntPtr WindowFromPoint(Point Point);
[DllImport("user32.dll", SetLastError = false)]
public static extern IntPtr GetDesktopWindow();
public static bool IsMouseOverDesktop()
{
Point mouseCursor;
GetCursorPos(out mouseCursor);
return WindowFromPoint(mouseCursor) == GetDesktopWindow();
}
ma non funziona. Quando il cursore del mouse si trova sul desktop, WindowFromPoint e GetDesktopWindow restituiscono valori diversi.
La finestra del desktop potrebbe non essere quella che si pensa. La finestra del desktop è la finestra più in alto. Non è * la * finestra che * explorer * crea e che contiene icone, che immagino sia la finestra effettiva che stai cercando di determinare se il mouse è finito. –
Forse questo sarà di aiuto: http://stackoverflow.com/questions/9222451/che-è-la differenza-differente-la-designtopesterno-e-openinputdesktop-apis-in – DonBoitnott
Non penso sia corretto dire è il più alto (potrei sbagliarmi però). È più accurato dire che è il genitore di tutte le finestre. Ti consiglio di rompere Open Spy ++ e capire quale finestra WindowFromPoint ti sta dando e poi andare da lì. –