événement fichier sélectionné

cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008 - 7 nov. 2006 à 16:56
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 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 :

private static void Main( string[ ] args )
{
    string url =  "C:\";
    object o = null;

    InternetExplorer ie = new InternetExplorer( );
    ie.DocumentComplete += delegate
    {
        try
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine( url );

            ShellFolderView doc = ( ShellFolderView )ie.Document;
            doc.SelectionChanged += delegate
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine( doc.FocusedItem.Name );
            };

            ShellFolderViewOC oc = new ShellFolderViewOC( );
            oc.SetFolderView( doc ); // Redirige les events O_o
        }
        catch
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine( "Error" );
        }
    };

    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 ?

merci d'avance pour votre aide.

Mathmax

9 réponses

cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
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?

[:D] @++
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 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 ?

Mathmax
0
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
7 nov. 2006 à 22:00
Salut,
Après un peu de recherche, je suis tombé sur ce thread http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=696891&SiteID=1
Apparement IE7 ne supporte plus l'ancien modèle.

Regarde ces liens, ce sont des alternatives :
http://www.codeproject.com/cs/miscctrl/foldertreeview.asp
http://www.codeproject.com/cs/files/advancedfileexplorer.asp
http://www.codeproject.com/csharp/tv-lv-basic41.asp

Modifie les à ta guise. Allez bonne chance...

[:D] @++
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 nov. 2006 à 22:20
Salut,

La class FileSystemWatcher ne suffit t'elle pas ?

<hr size="2" />-Blog-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
7 nov. 2006 à 22:33
J'allais lui suggérer ça quand j'ai compris que ce qu'il voulait était simplement d'intégrer un explorateur de dossier dans son programme.

[:D] @++
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 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à.
0
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
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] @++
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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.
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 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...

Mathmax
0
Rejoignez-nous