2014-09-03 11 views
11

Ho un metodo molto semplice che scrive un file localmente, ma voglio solo accenderlo se l'utente sembra che stia per uscire dall'app, perché sparando ogni volta che si avvia il trascinamento causerebbe la presenza di molti file non necessari scritto.Evento durante il trascinamento di una destinazione di rilascio valida all'esterno dell'app?

Quindi la mia domanda è: se un utente trascina qualcosa all'interno dell'app al di fuori dell'app, è possibile rilevare quando si trascina su un target di rilascio valido (ad esempio desktop o windows explorer)?

EDIT: A un livello più generale, la mia domanda è: come posso rispondere agli eventi mouse/trascinamento che si verificano all'esterno della della mia app?

+0

Come ho capito, vuoi catturare gli eventi del mouse al di fuori della tua app? Non è vero? – Narek

+0

@Narek Sarebbe fantastico. Tutto ciò che mi permetterebbe di eseguire codice in risposta a un'azione di trascinamento dell'utente al di fuori dell'app sarebbe molto utile, soprattutto se posso ricevere informazioni su ciò che il cursore è attualmente sopra. – MoonBoots89

+0

Forse questo articolo ti aiuta [link] (http: //www.codeproject.it/Articoli/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C) – Narek

risposta

3

Non del tutto sicuro di cosa sia esattamente si sta cercando di raggiungere, ma questo può aiutare:

WPF: Drag and drop virtual files into Windows explorer

Per la maggior parte degli eventi drag/drop dovrebbero sparare senza riguardo a dove si sta cadendo a (credo), ma puoi sicuramente essere avvisato quando è stato effettuato un drop.

Come dichiarato da @Quarzy, a meno che non si stia comunicando con l'altra app, potrebbe non esserci alcun modo diretto di testare i dati che il sistema di trascinamento/rilascio di Windows sottostante non espone.

Più in particolare che i punti di domanda a questo articolo: http://blogs.msdn.com/b/delay/archive/2009/11/04/creating-something-from-nothing-asynchronously-developer-friendly-virtual-file-implementation-for-net-improved.aspx

vi posto questo puramente perché mi chiedo se forse può portare ad altre cose, a parte che si potrebbe essere in grado di ottenere l'HWND del controllo sotto la cursore - possibilmente http://social.msdn.microsoft.com/Forums/windows/en-US/3df9fc84-4020-4ae1-8b4f-942bce65568f/find-the-object-under-the-mouse?forum=winforms come punto di partenza.

Potrebbe quindi esserci un modo per interrogare se quel particolare controllo è un bersaglio di rilascio valido tramite interop.

Buona fortuna!

3

Questa potrebbe essere una risposta possibile per la vostra domanda: Register a global hook to detect whether mouse dragging files/text

Come mai il seguente suggerimento potrebbe aiutare (si richiede di creare C++ lib esterno):

  1. Capture messaggio altra finestra possibili processi (Global gancio WH_GETMESSAGE) (Vedi questo link How to Create a global WH_GETMESSAGE HOOK without DLL)
  2. ascolto per WM_DROPFILES

vedi il seguente link: http://www.experts-exchange.com/Programming/Languages/CPP/Q_10203575.html

+0

"Non c'è nessun gancio per quello, mi dispiace." Come ti aiuta? –

Problemi correlati