2010-11-05 27 views

Répondre

1

Il n'y a pas de crochet pour cela, désolé.

3

Il n'est pas géré par les messages Windows, même si une boucle de message est requise pour le faire fonctionner. Exigence COM classique Commencez à lire sur RegisterDragDrop() pour voir la plomberie. Notable est que l'aspect UIPI de l'UAC entrave, vous ne pouvez pas D + D d'un processus non élevé à un élevé. ChangeWindowsMessageFilter() est la solution de contournement habituelle, cela ne fonctionne pas pour D + D. Pas de solution de contournement.

+0

L'application ne nécessite pas de privilèges d'escalade (pardonnez le pub, mais regardez la vidéo sur http://windroplr.com pour comprendre ce que j'essaie d'obtenir). Ce que j'aimerais, c'est - au lieu de glisser sur l'icône de la barre d'état avec tous les hacks qui l'impliquent - dès que j'ai détecté que la souris traînait quelque chose, quelque part, rend la cible visible. Est-ce que cette chose est même possible à distance? Je veux dire même si je dois aller au fond de la victoire, j'ai juste besoin de quelques conseils pour me lancer. J'ai un peu plus de trois semaines d'expérience avec .net alors ... Je ne sais même pas ce que COM est: S – biasedbit

+0

Cela n'a rien à voir avec un crochet global, juste une fenêtre au sommet. Assez facile de démarrer avec Windows Forms: http://stackoverflow.com/questions/68598/how-do-i-drag-and-drop-files-into-ac-application/89470#89470 –

+0

Le glisser-déposer dans un forme/fenêtre est un morceau de gâteau. Ce que je voulais, c'était montrer seulement cette cible/fenêtre glisser-déposer (qui est cachée par défaut) quand la souris traînait quelque chose, n'importe où ailleurs - d'autres fenêtres, bureau, etc. D'où la référence à un crochet global. – biasedbit

0

Vous devrez probablement utiliser un hook global pour injecter une DLL dans chaque processus en cours, puis cette DLL peut rediriger manuellement les fonctions DoDragDrop() et SHDoDragDrop() dans la table IMPORTS de chaque processus. Lorsque les fonctions redirigées sont appelées, vous pouvez demander à la DLL d'informer votre application principale si nécessaire.