2010-01-15 3 views
6

Sembra divertente ... solo un piccolo esperimento.
Volevo simulare un trascinamento di un file su un'applicazione/finestra utilizzando Invia messaggio. È possibile?Drag Drop con SendMessage

Non ho il codice per l'applicazione ma sull'eseguibile.

L'applicazione è IP Messenger.

Quello che volevo fare è utilizzare "Invia a" funzionalità per inviare il file a un .exe, che sarà
finestra IPMessenger trovare e simulare un drag drop thr codice.

L'utente seleziona il file e fa clic con il pulsante destro del mouse "invia a" all'exe che eseguirà il trascinamento dal codice.

** Nota: Messenger IP supporta il funzionamento drag-drop per i file

THX
Amit

+0

Hi Amitd Ho esattamente lo stesso problema si fa a trovare la risposta ancora? – AliPST

+0

niente di più .. continua a cercare .. si aggiornerà se necessario :) – Amitd

+0

La soluzione seguente funziona? – Default

risposta

3

C'è il WM_DROPFILES Message. Immagino che potresti usare CreateToolhelp32Snapshot per individuare la finestra che è IP Messenger e quindi creare la struttura DROPFILES da inviare con il messaggio WM_DROPFILES.

Il collegamento finale sarebbe Codeproject, con qualche aiuto sulla creazione della struttura DROPFILES: How to Implement Drag and Drop Between Your Program and Explorer.


Invece di utilizzare CreatToolhelp32Snapshot si potrebbero utilizzare FindWindow funzione. Qui si ottiene direttamente lo HWND per IP Messenger, invece di CTh32S, che individuerà solo il HANDLE per il processo.

Al termine, creare la struttura DROPFILES. Leggere i commenti sul collegamento CodeProject nella sezione "Inizializzazione di trascinamento della selezione" per ulteriori informazioni su come.

E infine lo si invia con sendmessage

SendMessage(ipMessHWND, WM_DROPFILES, (HDROP)&myDropFiles, 0); 
+0

quasi quello che stavo cercando.looks piuttosto complesso. Thx :) – Amitd

+0

Ho aggiunto un po 'di più per, si spera, renderlo più chiaro – Default