cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008
-
7 nov. 2006 à 16:56
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008
-
9 nov. 2006 à 17:20
Il y a quelques mois j'avais demandé sur ce forum comment créer un événement qui se déclanche quand un fichier est séléctionné. On m'avais alors proposé le code suivant :
ie.Visible = true;
ie.Navigate( url, ref o, ref o, ref o, ref o );
Console.ReadLine( );
}
Ce code marchait, mais depuis que j'ai installé Internet Explorer 7 sur mon ordinateur ça ne fonctionne plus. Y aurait-il une solution pour résoudre le problème (sans repasser à IE 6) ? Doit-on forcément utiliser Shell et la classe InternetExplorer pour créer ce genre d'événements ?
cs_badrbadr
Messages postés475Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention 3 novembre 20081 7 nov. 2006 à 21:19
hein, je savais pas que la classe InternetExplorer et ShellFolderView existait, c'est des objets COM importés?
Sinon, qu'est ce que tu veux dire un fichier sélectionner? sélectionné dans l'explorateur Windows ou dans ta ListBox par exemple?
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 7 nov. 2006 à 21:36
J'importe le composant COM "Microsoft Internet Controls" (shdocvw.dll).
J'entends pas "fichier sélectionné", sélectionné dans l'explorateur windows. As-tu une idée pour rendre ce bout de code fonctionnel ? Ou peu être faut-il écrire différemment l'événement ?
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 7 nov. 2006 à 22:35
En fait, ce que tu me propose badrbadr ne correcspond pas à ce que je voudrais. Dans l'exemple que tu me donne on crée un explorateur windows et il est alors facile de capter un événement "fichier séléctionné" puisque c'est en fait une ligne séléctionné dans un contrôle. Moi ce que je voudrais, c'est un événement qui se produit chaque fois qu'un fichier est séléctionné dans une fenêtre windows correspondant à un dossier. Je vais regarder si la classe FileSystemWatche permet celà.
cs_badrbadr
Messages postés475Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention 3 novembre 20081 7 nov. 2006 à 22:44
Mmmm, je doute fort que FileSysemWatcher aille la "finesse" de surveiller un fichier jusqu'à sa sélection.
Cette classe permet seulement de détecter les événement de modification, de création, de suppression et de modification du nom d'un fichier.
Si tu trouves une solution, partage-là avec nous :)
[:D] @++
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 8 nov. 2006 à 06:45
Salut, j'ai reconnu mon code. Il semblerait que le "model object" d'IE7 est changé, ce que confirme le lien vers le forum de la MSDN donné par Badrbadr :
"This is expected behavior in IE7 as the shell folder view has been separated from the IExplore.exe process. You'll need to script Windows Explorer rather than Internet Explorer to acces the shell folder view."
Soit le nouvel objet "Windows Explorer" est un ActiveX et donc est accessible depuis CSharp, soit faut écrire un wrapper pour les interfaces COM du Shell et/ou de Windows Explorer, et ça c'est plus compliqué ( c'est peut être disponible sur codeproject ).
FileSysemWatcher ne detecte pas ce genre d'évènements.
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 9 nov. 2006 à 17:20
Merci pour ces informations.
J'ai essayé d'importer pas mal de dll qui pourraient contenir la classe "Windows Explorer" mais je n'ai rien trouvé. Une solution qui pourrait me convenir serait d'intégrer un explorateur windows dans mon programme à condition que celui-ci permette un affichage miniature des fichiers. J'ai bien trouvé quelques ActivX qui pourraient permettre de faire cela (par exemple celui-ci), mais ils sont à chaque fois payants.
Pour ce qui est d'écrire un wrapper, je ne vois pas comment faire, ni d'ailleurs ce que cela veux dire...