IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Ne pas voir une fenetre shell quand on lance un process


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut [C#] Ne pas voir une fenetre shell quand on lance un process
    Bonjour je voudrais rechercher un fichier image dans un répertoire.
    Aprés avoir regardé la FAQ j'utilise la fonction GetFiles comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string [] fileEntries = Directory.GetFiles("c:\test");
    Le probleme c'est qu'il me renvoi le message d'eerreur suivant alors que mon répertoire existe bien.
    [/quote]Une exception non gérée du type 'System.IO.IOException' s'est produite dans mscorlib.dll

    Informations supplémentaires : Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.

    --
    Vins

  2. #2
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    je pense que ds ton cas c'est un truc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string [] fileEntries = Directory.GetFiles(@"c:\test\*.jpg");
    pour par exemple tt les fichiers jpg

    @+

  3. #3
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut
    Ok ça passe mais ce que je veux faire ça plante.
    En fait mon application doit regarder dans un dosier, et dés qu'un fichier est mis dans ce dossier je doit le traiter.
    Le probleme est que dés que je lance mon appli ça plante!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string [] fileEntries = Directory.GetFiles(@"c:\test\");
    while( fileEntries.Length == 0)
    	fileEntries = Directory.GetFiles(@"c:\test\");
    Quelqu'un a une idée?

    --
    Vins

  4. #4
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    et si tu ajoutes une extension :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string [] fileEntries = Directory.GetFiles(@"c:\test\*.*");
    while( fileEntries.Length == 0)  fileEntries = Directory.GetFiles(@"c:\test\*.*");
    ca donne quoi ?

    @+

  5. #5
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut
    Une exception non gérée du type 'System.ArgumentException' s'est produite dans mscorlib.dll

    Informations supplémentaires : Caractères non conformes dans le chemin d'accès.
    La c'est erreur!!!!
    Sans les extensions ça marche sans prb, le seul programme c'est ue ça rame et le programme ne répond plus.
    Je vois pas comment je pourrai faire une recherche en permanance sur le répertoire sans que ça plante le prog????

    --
    Vins

  6. #6
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    ta boucle occupe 100 % du cpu
    idee : faire un timer qui declenche ta methode periodiquement tte les x secondes ou minutes. sinon regarde aussi les threads.

    @+

  7. #7
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut
    qu'est ce que les threads???????
    Si je fais un timer toute les 10 milli seconde, ça pourra passer?

    --
    Vins

  8. #8
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    pour les threads :

    http://emerica.developpez.com/csharp/threads/

    sinon tu peux coupler les 2 mais un timer tte les x secondes peux passer. je sais pas trop ce que fait ton application mais sans les threads lorsque ton appli va traiter les fichiers, celle ci sera bloquée.

    alors a toi de voir si pendant le traitement des fichiers ton appli doit repondre pour un utilisateur par exemple, dans ce cas vaut mieux coupler timer et threads.

    je suis clair ou pas ?

    @+

  9. #9
    Membre confirmé

    Inscrit en
    Octobre 2002
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 139
    Par défaut
    Salut,

    tu peux aussi faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string [] fileEntries = Directory.GetFiles("c:\\test");
    qui te retournera tous les fichiers

    krest

  10. #10
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut
    ouai trés claire!
    J'ai utilisé un timer seul et ça passe pour le moment donc je verai bien par la suite si j'ai besoin des threads.
    Une derniere question, je me sert souvent des vecteurs en C++, y'a quelque chose en C# qui est pareil?

    --
    Vins

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Ya un composant microsoft qui fait ça : le FileSystemWatcher. Il scrute un répertoire et t'informe d'un tas d'évenement du genre : fichier supprimé, fichier ajjouté, modifié etc...

    Je crois qu'il souffre de qques problemes (je ne l'ai jamais utilisé serieusement, juste pour m'amuser et pour voir) , regarde le un peu.

    Sinon pour ton probleme de programme qui ne repond plus, c'est tout a fait normal : tu fais une boucle sans fin dans ton thread principal qui est en charge de la gestion des évenements de l'interface... La solution tte trouvée a ton probleme : les threads. Si tu ne veux pas utiliser le FileSystemWatcher et que tu veux faire tes recherches à la main, il faut lancer cette tâche dans un nouveau thread.

    Edit : oups désolé j'ai mis du temps a ecrire mon message et du coup j'ai pas vu les réponses précédentes. Donc oui j'imagine qu'un timer ça peut le faire aussi, mais regarde qd même le FileSystemWatcher, ça pourrait te faire sauver pas mal de temps.

  12. #12
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Citation Envoyé par Vins83
    Ok ça passe mais ce que je veux faire ça plante.
    En fait mon application doit regarder dans un dosier, et dés qu'un fichier est mis dans ce dossier je doit le traiter.
    Le probleme est que dés que je lance mon appli ça plante!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string [] fileEntries = Directory.GetFiles(@"c:\test\");
    while( fileEntries.Length == 0)
    	fileEntries = Directory.GetFiles(@"c:\test\");
    Quelqu'un a une idée?

    --
    Vins
    Si tu fais un GetFiles en continu c'est normal que ça rame,
    Essaye de mettre un Application.DoEvents() dans ta boucle

    ou mieux, essaye plutot ceci pour surveiller les modifications/creation/suppression de fichiers http://faqcsharp.developpez.com/?page=file#file_watcher

  13. #13
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    je suis pas une star en C++ mais je crois que l'equivalent des vecteurs en C# est l'ArrayList.

    @+

  14. #14
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut
    ok merci j'ai regardé ça a l'aire pas mal.
    Derniere question (aprés j'arrete) comment lance-t-on un programme an mode console?
    style ShellExecuteEx en C++?

    --
    Vins

  15. #15
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    http://faqcsharp.developpez.com/?pag...syst_procstart

    Edit : oups j'ai ete un peu vite c'est peu etre pas ce que tu voulais, si ?

    @+

  16. #16
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Pour les Vecteur C++ c bien les Array List

    sinon pour ShellExecute
    http://faqcsharp.developpez.com/?pag...syst_procstart

  17. #17
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut
    ok ça a l'aire bien ça, je lance une appication console donc il m'ouvre une fenetre console execute le programme et le referme, ça fait pas beau, y'a un moyen de faire en sotre de pas voir la fenetre??
    Puis je veux attendre que le prcessus soit terminé pour continuer mon application, c'est possible ça?
    En c++ ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WaitForSingleObject(proc.hProcess, INFINITE);
    --
    Vins

  18. #18
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    Pour ne pas voir la fenetre je ne sais pas comment il faut faire.
    pour ton hstoire d'attendre la fin de l'appli avant de continué tu peux le faire ds un threads et attendre la fin du threads avec la methode join.

    @+

  19. #19
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut
    ouai mais c'est bon j'ai trouvé pour attendre la fin!!
    Si quelqu'un a une idée pour ne pas voir la fenetre?

    --
    Vins

  20. #20
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Citation Envoyé par Vins83
    ouai mais c'est bon j'ai trouvé pour attendre la fin!!
    Si quelqu'un a une idée pour ne pas voir la fenetre?

    --
    Vins

    Dans les propiété de StartInfo, CreateNoWindow

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] je n'arrive pas à voir une exécution ajax
    Par thouraya24 dans le forum AJAX
    Réponses: 10
    Dernier message: 25/11/2012, 22h37
  2. Réponses: 3
    Dernier message: 14/03/2009, 09h44
  3. Réponses: 4
    Dernier message: 08/05/2006, 16h41
  4. [Débutant][VE] Comment afficher une fenetre Shell (bean)
    Par antony dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 11/08/2005, 11h46
  5. [JFrame] Pas moyen d'avoir une fenetre active
    Par deedji dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 24/05/2004, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo