J'utilise quelquefois des commandes DOS sous Windev (depuis la version 4.1) et je n'ai pu résoudre le même genre de problème qu'en créant un fichier batch (.bat) contenant la commande complète, et en exécutant ce fichier batch.
Si celà peut aider...
Bon dev.
Bonjour!
J'utilise quelquefois des commandes DOS sous Windev (depuis la version
4.1) et je n'ai pu résoudre le même genre de problème qu'en créant un
fichier batch (.bat) contenant la commande complète, et en exécutant
ce fichier batch.
J'utilise quelquefois des commandes DOS sous Windev (depuis la version 4.1) et je n'ai pu résoudre le même genre de problème qu'en créant un fichier batch (.bat) contenant la commande complète, et en exécutant ce fichier batch.
Si celà peut aider...
Bon dev.
STASZEWSKI André
Georges PEYRE wrote:
Val a couché sur son écran :
Assure toi donc que ton programme Windev et ton programme MSDOS sont dans le même dossier, cela vient peut-être de là aussi. Fais attention également aux 8 caractères maxi des noms de fichiers sous MSDOS.
A+
Val
Par rapport au format de la commande passée je n'ai aucun problème MonProgDos.exe MonFichier.xxx >Resultat.txt
Le programme MponProgDos.exe se passe très bien quelle que soit la longueur des noms de fichiers à partir du moment ou je lui fourni le chemin de répertoire du fichier MonFichier.xxx passé en parametre
Non le problème est vraiment dû au fait que l'indirection et le fichier Resultat.txt ne sont pas pris en compte
D'ailleurs j'ai fait une autre tentative en créant un fichier .bat que je lance ensuite avec LanceAppli exemple : PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
Dans ce cas l'execution se passe correctement :') : le fichier est bien cree mais je me retrouve alors apres execution avec la fenêtre MSDOS ouverte qui contient la ligne de commande executée mais je ne sais alors pas comment fermer la fenêtre avec Windev :/
Cordialement
Et si tu rajoutes la commande "Exit" dans ton fichier BAT (précédé d'une cde shell je pense)... -- Cordialement, André STASZEWSKI Nouvelle version 3.0 de Photo Visu sur www.PlaneteDev.fr.st
Georges PEYRE wrote:
Val a couché sur son écran :
Assure toi donc que ton programme Windev et ton programme MSDOS sont
dans le même dossier, cela vient peut-être de là aussi.
Fais attention également aux 8 caractères maxi des noms de fichiers
sous MSDOS.
A+
Val
Par rapport au format de la commande passée je n'ai aucun problème
MonProgDos.exe MonFichier.xxx >Resultat.txt
Le programme MponProgDos.exe se passe très bien quelle que soit la
longueur des noms de fichiers à partir du moment ou je lui fourni le
chemin de répertoire du fichier MonFichier.xxx passé en parametre
Non le problème est vraiment dû au fait que l'indirection et le
fichier Resultat.txt ne sont pas pris en compte
D'ailleurs j'ai fait une autre tentative en créant un fichier .bat que
je lance ensuite avec LanceAppli
exemple :
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")
Dans ce cas l'execution se passe correctement :') : le fichier est
bien cree mais je me retrouve alors apres execution avec la fenêtre
MSDOS ouverte qui contient la ligne de commande executée mais je ne
sais alors pas comment fermer la fenêtre avec Windev :/
Cordialement
Et si tu rajoutes la commande "Exit" dans ton fichier BAT (précédé d'une cde
shell je pense)...
--
Cordialement,
André STASZEWSKI
Nouvelle version 3.0 de Photo Visu sur www.PlaneteDev.fr.st
Assure toi donc que ton programme Windev et ton programme MSDOS sont dans le même dossier, cela vient peut-être de là aussi. Fais attention également aux 8 caractères maxi des noms de fichiers sous MSDOS.
A+
Val
Par rapport au format de la commande passée je n'ai aucun problème MonProgDos.exe MonFichier.xxx >Resultat.txt
Le programme MponProgDos.exe se passe très bien quelle que soit la longueur des noms de fichiers à partir du moment ou je lui fourni le chemin de répertoire du fichier MonFichier.xxx passé en parametre
Non le problème est vraiment dû au fait que l'indirection et le fichier Resultat.txt ne sont pas pris en compte
D'ailleurs j'ai fait une autre tentative en créant un fichier .bat que je lance ensuite avec LanceAppli exemple : PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
Dans ce cas l'execution se passe correctement :') : le fichier est bien cree mais je me retrouve alors apres execution avec la fenêtre MSDOS ouverte qui contient la ligne de commande executée mais je ne sais alors pas comment fermer la fenêtre avec Windev :/
Cordialement
Et si tu rajoutes la commande "Exit" dans ton fichier BAT (précédé d'une cde shell je pense)... -- Cordialement, André STASZEWSKI Nouvelle version 3.0 de Photo Visu sur www.PlaneteDev.fr.st
Georges PEYRE
Bonjour,
STASZEWSKI André avait soumis l'idée :
Et si tu rajoutes la commande "Exit" dans ton fichier BAT (précédé d'une cde shell je pense)...
J'ai bien rajouté EXIT de la façon suivante mais elle ne ferme pas la fenêtre MSDOS : il y a execution sans erreur
MonProgDos.exe MonFichier.xxx >Resultat.txt PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
Cordialement
-- Elle est pas belle la vie ?
Bonjour,
STASZEWSKI André avait soumis l'idée :
Et si tu rajoutes la commande "Exit" dans ton fichier BAT (précédé d'une cde
shell je pense)...
J'ai bien rajouté EXIT de la façon suivante mais elle ne ferme pas la
fenêtre MSDOS : il y a execution sans erreur
MonProgDos.exe MonFichier.xxx >Resultat.txt
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")
Et si tu rajoutes la commande "Exit" dans ton fichier BAT (précédé d'une cde shell je pense)...
J'ai bien rajouté EXIT de la façon suivante mais elle ne ferme pas la fenêtre MSDOS : il y a execution sans erreur
MonProgDos.exe MonFichier.xxx >Resultat.txt PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
Cordialement
-- Elle est pas belle la vie ?
Bruno PROSPERO
"Michel CHANU" a écrit dans le message de news:
Bonjour!
J'utilise quelquefois des commandes DOS sous Windev (depuis la version 4.1) et je n'ai pu résoudre le même genre de problème qu'en créant un fichier batch (.bat) contenant la commande complète, et en exécutant ce fichier batch.
Si celà peut aider...
Bon dev.
Bonjour,
soit un fichier toto.bat avec : (lance la calculatrice windows et ferme la fenêtre dos) calc exit
et la commande windev suivante : LanceAppli("c:temptoto.bat",exeIconise,exeBloquant,"c:temp")
ça marche! La calculatrice se lance, la fenêtre dos est icônisée, puis à la fermeture de la calculatrice, la fenêtre dos se ferme.
Cordialement,
Bruno PROSPERO Indépendant
"Michel CHANU" <michel.chanu@club-internet.fr> a écrit dans le message de
news:e7793085.0405231058.3d77bc93@posting.google.com...
Bonjour!
J'utilise quelquefois des commandes DOS sous Windev (depuis la version
4.1) et je n'ai pu résoudre le même genre de problème qu'en créant un
fichier batch (.bat) contenant la commande complète, et en exécutant
ce fichier batch.
Si celà peut aider...
Bon dev.
Bonjour,
soit un fichier toto.bat avec : (lance la calculatrice windows et ferme la
fenêtre dos)
calc
exit
et la commande windev suivante :
LanceAppli("c:temptoto.bat",exeIconise,exeBloquant,"c:temp")
ça marche! La calculatrice se lance, la fenêtre dos est icônisée, puis à la
fermeture de la calculatrice, la fenêtre dos se ferme.
J'utilise quelquefois des commandes DOS sous Windev (depuis la version 4.1) et je n'ai pu résoudre le même genre de problème qu'en créant un fichier batch (.bat) contenant la commande complète, et en exécutant ce fichier batch.
Si celà peut aider...
Bon dev.
Bonjour,
soit un fichier toto.bat avec : (lance la calculatrice windows et ferme la fenêtre dos) calc exit
et la commande windev suivante : LanceAppli("c:temptoto.bat",exeIconise,exeBloquant,"c:temp")
ça marche! La calculatrice se lance, la fenêtre dos est icônisée, puis à la fermeture de la calculatrice, la fenêtre dos se ferme.
Cordialement,
Bruno PROSPERO Indépendant
Georges PEYRE
Bonjour
Bruno PROSPERO avait soumis l'idée :
soit un fichier toto.bat avec : (lance la calculatrice windows et ferme la fenêtre dos) calc exit
et la commande windev suivante : LanceAppli("c:temptoto.bat",exeIconise,exeBloquant,"c:temp")
ça marche! La calculatrice se lance, la fenêtre dos est icônisée, puis à la fermeture de la calculatrice, la fenêtre dos se ferme.
Dans mon exemple cà ne marche pas !
PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
exit s'xecute bien sans erreur mais ne ferme pas la fen^tre msdos D'ailleurs si j'execute LANCE.BAT à partir de la ligne de commande du menu démarrage c'est la même chose : pas de fermeture de la fenêtre MSDOS
Par contre si j'ouvre d'abord la fen^tre MSDOS et que je tape LANCE le programme est lancé est la fen^tre MSDOS est alors fermée !
Pourquoi tant de haine !!! :-@
Cordialement
-- Elle est pas belle la vie ?
Bonjour
Bruno PROSPERO avait soumis l'idée :
soit un fichier toto.bat avec : (lance la calculatrice windows et ferme la
fenêtre dos)
calc
exit
et la commande windev suivante :
LanceAppli("c:temptoto.bat",exeIconise,exeBloquant,"c:temp")
ça marche! La calculatrice se lance, la fenêtre dos est icônisée, puis à la
fermeture de la calculatrice, la fenêtre dos se ferme.
Dans mon exemple cà ne marche pas !
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")
exit s'xecute bien sans erreur mais ne ferme pas la fen^tre msdos
D'ailleurs si j'execute LANCE.BAT à partir de la ligne de commande du
menu démarrage c'est la même chose : pas de fermeture de la fenêtre
MSDOS
Par contre si j'ouvre d'abord la fen^tre MSDOS et que je tape LANCE le
programme est lancé est la fen^tre MSDOS est alors fermée !
soit un fichier toto.bat avec : (lance la calculatrice windows et ferme la fenêtre dos) calc exit
et la commande windev suivante : LanceAppli("c:temptoto.bat",exeIconise,exeBloquant,"c:temp")
ça marche! La calculatrice se lance, la fenêtre dos est icônisée, puis à la fermeture de la calculatrice, la fenêtre dos se ferme.
Dans mon exemple cà ne marche pas !
PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
exit s'xecute bien sans erreur mais ne ferme pas la fen^tre msdos D'ailleurs si j'execute LANCE.BAT à partir de la ligne de commande du menu démarrage c'est la même chose : pas de fermeture de la fenêtre MSDOS
Par contre si j'ouvre d'abord la fen^tre MSDOS et que je tape LANCE le programme est lancé est la fen^tre MSDOS est alors fermée !
Pourquoi tant de haine !!! :-@
Cordialement
-- Elle est pas belle la vie ?
michel.chanu
Bonjour!
Peut-être allons-nous y arriver. Voilà un petit bout de programme que j'utilise depuis des années sous Windev et qui me permet de savoir si je suis connecté à un réseau (depuis, il existe un composant plus pratique).
But: créer un fichier à partir d'une commande DOS permettant de lister tous les postes connectés en réseau et le lire.
// Environnement NT ou plus // Création d'un fichier batch (la commande utilisée ne peut pas être lancée directement) SI PAS fSauveTexte(ComplèteRep(fRépertoireTemp())+"Batch.bat","net view >> "+ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS // Il est impossible de savoir si nous sommes sur un réseau FinProgramme("Il est impossible de définir si une connexion réseaux existe. Abandon") FIN // Le résultat de la commande se trouve dans le fichier "Texte.txt" SI PAS DDELance(ComplèteRep(fRépertoireTemp())+"Batch.bat",DDEIconise,Vrai) ALORS // Il est impossible de savoir si nous sommes sur un réseau FinProgramme("Il est impossible de définir si une connexion réseau existe. Abandon") FIN // Suppression du fichier Batch SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"Batch.bat") ALORS Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"Batch.bat"" n'a pas pu être supprimé automatiquement.","Veuillez le supprimer manuellement SVP") FIN // Ouverture du fichier résultant Texte = fChargeTexte(ComplèteRep(fRépertoireTemp())+"texte.txt") // La commande renvoie la liste des postes connectés, si "" n'existe pas, le poste est hors réseau (gb_HorsRéseau est à vrai initialement) SI Position(Texte,"") <> 0 ALORS gb_HorsRéseau = Faux FIN // Suppression du fichier résultant. SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"texte.txt"" n'a pas pu être supprimé automatiquement.","Veuillez le supprimer manuellement SVP") FIN
La commande batch s'exécute et se ferme sans que je sois obliger de faire autre chose que ce qu'il y a d'écrit ci-dessus.
J'espère que celà t'avancera...
Cordialement.
Bonjour!
Peut-être allons-nous y arriver. Voilà un petit bout de programme que
j'utilise depuis des années sous Windev et qui me permet de savoir si
je suis connecté à un réseau (depuis, il existe un composant plus
pratique).
But: créer un fichier à partir d'une commande DOS permettant de lister
tous les postes connectés en réseau et le lire.
// Environnement NT ou plus
// Création d'un fichier batch (la commande utilisée ne peut pas être
lancée directement)
SI PAS fSauveTexte(ComplèteRep(fRépertoireTemp())+"Batch.bat","net
view >> "+ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS
// Il est impossible de savoir si nous sommes sur un réseau
FinProgramme("Il est impossible de définir si une connexion réseaux
existe. Abandon")
FIN
// Le résultat de la commande se trouve dans le fichier "Texte.txt"
SI PAS DDELance(ComplèteRep(fRépertoireTemp())+"Batch.bat",DDEIconise,Vrai)
ALORS
// Il est impossible de savoir si nous sommes sur un réseau
FinProgramme("Il est impossible de définir si une connexion réseau
existe. Abandon")
FIN
// Suppression du fichier Batch
SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"Batch.bat") ALORS
Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"Batch.bat""
n'a pas pu être supprimé automatiquement.","Veuillez le supprimer
manuellement SVP")
FIN
// Ouverture du fichier résultant
Texte = fChargeTexte(ComplèteRep(fRépertoireTemp())+"texte.txt")
// La commande renvoie la liste des postes connectés, si "\"
n'existe pas, le poste est hors réseau (gb_HorsRéseau est à vrai
initialement)
SI Position(Texte,"\") <> 0 ALORS
gb_HorsRéseau = Faux
FIN
// Suppression du fichier résultant.
SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS
Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"texte.txt""
n'a pas pu être supprimé automatiquement.","Veuillez le supprimer
manuellement SVP")
FIN
La commande batch s'exécute et se ferme sans que je sois obliger de
faire autre chose que ce qu'il y a d'écrit ci-dessus.
Peut-être allons-nous y arriver. Voilà un petit bout de programme que j'utilise depuis des années sous Windev et qui me permet de savoir si je suis connecté à un réseau (depuis, il existe un composant plus pratique).
But: créer un fichier à partir d'une commande DOS permettant de lister tous les postes connectés en réseau et le lire.
// Environnement NT ou plus // Création d'un fichier batch (la commande utilisée ne peut pas être lancée directement) SI PAS fSauveTexte(ComplèteRep(fRépertoireTemp())+"Batch.bat","net view >> "+ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS // Il est impossible de savoir si nous sommes sur un réseau FinProgramme("Il est impossible de définir si une connexion réseaux existe. Abandon") FIN // Le résultat de la commande se trouve dans le fichier "Texte.txt" SI PAS DDELance(ComplèteRep(fRépertoireTemp())+"Batch.bat",DDEIconise,Vrai) ALORS // Il est impossible de savoir si nous sommes sur un réseau FinProgramme("Il est impossible de définir si une connexion réseau existe. Abandon") FIN // Suppression du fichier Batch SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"Batch.bat") ALORS Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"Batch.bat"" n'a pas pu être supprimé automatiquement.","Veuillez le supprimer manuellement SVP") FIN // Ouverture du fichier résultant Texte = fChargeTexte(ComplèteRep(fRépertoireTemp())+"texte.txt") // La commande renvoie la liste des postes connectés, si "" n'existe pas, le poste est hors réseau (gb_HorsRéseau est à vrai initialement) SI Position(Texte,"") <> 0 ALORS gb_HorsRéseau = Faux FIN // Suppression du fichier résultant. SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"texte.txt"" n'a pas pu être supprimé automatiquement.","Veuillez le supprimer manuellement SVP") FIN
La commande batch s'exécute et se ferme sans que je sois obliger de faire autre chose que ce qu'il y a d'écrit ci-dessus.
J'espère que celà t'avancera...
Cordialement.
Georges PEYRE
Bonjour et merci pour ton aide mais la différence entre ton code et le mien est que en plus de l'indirection pour créer le fichier Resultat.txt j'ai également un paramètre à passer au programme MonProgDos et apparemment cette forme de commande n'est pas compatible avec DDELance ou LanceAppli
Par contre je ne comprends pas la différence de comportement au niveau du DOS :
Avec cet exemple ... PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
Pour vérifier que le contenu obtenu dans LANCE.BAT est correct ... Si j'ouvre la fenêtre MSDOS et que je tape LANCE.BAT l'exécution est correcte ( Resultat.txt est bien créé ) et la commande EXIT ferme la fenêtre MSDOS
Par contre ...
Si tape LANCE.BAT en ligne de commande dans la fenêtre Executer du menu Démarrer de Windows j'ai le même type d'execution qu'avec LanceAppli c'est à dire que l'exécution est correcte ( Resultat.txt est bien créé ) mais la commande EXIT NE FERME PAS la fenêtre DOS
Pourquoi ?? :/ :/
Cordialement
Michel CHANU vient de nous annoncer :
Bonjour!
Peut-être allons-nous y arriver. Voilà un petit bout de programme que j'utilise depuis des années sous Windev et qui me permet de savoir si je suis connecté à un réseau (depuis, il existe un composant plus pratique).
But: créer un fichier à partir d'une commande DOS permettant de lister tous les postes connectés en réseau et le lire.
// Environnement NT ou plus // Création d'un fichier batch (la commande utilisée ne peut pas être lancée directement) SI PAS fSauveTexte(ComplèteRep(fRépertoireTemp())+"Batch.bat","net view >> "+ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS // Il est impossible de savoir si nous sommes sur un réseau FinProgramme("Il est impossible de définir si une connexion réseaux existe. Abandon") FIN // Le résultat de la commande se trouve dans le fichier "Texte.txt" SI PAS DDELance(ComplèteRep(fRépertoireTemp())+"Batch.bat",DDEIconise,Vrai) ALORS // Il est impossible de savoir si nous sommes sur un réseau FinProgramme("Il est impossible de définir si une connexion réseau existe. Abandon") FIN // Suppression du fichier Batch SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"Batch.bat") ALORS Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"Batch.bat"" n'a pas pu être supprimé automatiquement.","Veuillez le supprimer manuellement SVP") FIN // Ouverture du fichier résultant Texte = fChargeTexte(ComplèteRep(fRépertoireTemp())+"texte.txt") // La commande renvoie la liste des postes connectés, si "" n'existe pas, le poste est hors réseau (gb_HorsRéseau est à vrai initialement) SI Position(Texte,"") <> 0 ALORS gb_HorsRéseau = Faux FIN // Suppression du fichier résultant. SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"texte.txt"" n'a pas pu être supprimé automatiquement.","Veuillez le supprimer manuellement SVP") FIN
La commande batch s'exécute et se ferme sans que je sois obliger de faire autre chose que ce qu'il y a d'écrit ci-dessus.
J'espère que celà t'avancera...
Cordialement.
-- Elle est pas belle la vie ?
Bonjour et merci pour ton aide mais la différence entre ton code et le
mien est que en plus de l'indirection pour créer le fichier
Resultat.txt j'ai également un paramètre à passer au programme
MonProgDos et apparemment cette forme de commande n'est pas compatible
avec DDELance ou LanceAppli
Par contre je ne comprends pas la différence de comportement au niveau
du DOS :
Avec cet exemple ...
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")
Pour vérifier que le contenu obtenu dans LANCE.BAT est correct ...
Si j'ouvre la fenêtre MSDOS et que je tape LANCE.BAT l'exécution est
correcte ( Resultat.txt est bien créé ) et la commande EXIT ferme la
fenêtre MSDOS
Par contre ...
Si tape LANCE.BAT en ligne de commande dans la fenêtre Executer du menu
Démarrer de Windows j'ai le même type d'execution qu'avec LanceAppli
c'est à dire que l'exécution est correcte ( Resultat.txt est bien créé
) mais la commande EXIT NE FERME PAS la fenêtre DOS
Pourquoi ?? :/ :/
Cordialement
Michel CHANU vient de nous annoncer :
Bonjour!
Peut-être allons-nous y arriver. Voilà un petit bout de programme que
j'utilise depuis des années sous Windev et qui me permet de savoir si
je suis connecté à un réseau (depuis, il existe un composant plus
pratique).
But: créer un fichier à partir d'une commande DOS permettant de lister
tous les postes connectés en réseau et le lire.
// Environnement NT ou plus
// Création d'un fichier batch (la commande utilisée ne peut pas être
lancée directement)
SI PAS fSauveTexte(ComplèteRep(fRépertoireTemp())+"Batch.bat","net
view >> "+ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS
// Il est impossible de savoir si nous sommes sur un réseau
FinProgramme("Il est impossible de définir si une connexion réseaux
existe. Abandon")
FIN
// Le résultat de la commande se trouve dans le fichier "Texte.txt"
SI PAS DDELance(ComplèteRep(fRépertoireTemp())+"Batch.bat",DDEIconise,Vrai)
ALORS
// Il est impossible de savoir si nous sommes sur un réseau
FinProgramme("Il est impossible de définir si une connexion réseau
existe. Abandon")
FIN
// Suppression du fichier Batch
SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"Batch.bat") ALORS
Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"Batch.bat""
n'a pas pu être supprimé automatiquement.","Veuillez le supprimer
manuellement SVP")
FIN
// Ouverture du fichier résultant
Texte = fChargeTexte(ComplèteRep(fRépertoireTemp())+"texte.txt")
// La commande renvoie la liste des postes connectés, si "\"
n'existe pas, le poste est hors réseau (gb_HorsRéseau est à vrai
initialement)
SI Position(Texte,"\") <> 0 ALORS
gb_HorsRéseau = Faux
FIN
// Suppression du fichier résultant.
SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS
Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"texte.txt""
n'a pas pu être supprimé automatiquement.","Veuillez le supprimer
manuellement SVP")
FIN
La commande batch s'exécute et se ferme sans que je sois obliger de
faire autre chose que ce qu'il y a d'écrit ci-dessus.
Bonjour et merci pour ton aide mais la différence entre ton code et le mien est que en plus de l'indirection pour créer le fichier Resultat.txt j'ai également un paramètre à passer au programme MonProgDos et apparemment cette forme de commande n'est pas compatible avec DDELance ou LanceAppli
Par contre je ne comprends pas la différence de comportement au niveau du DOS :
Avec cet exemple ... PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
Pour vérifier que le contenu obtenu dans LANCE.BAT est correct ... Si j'ouvre la fenêtre MSDOS et que je tape LANCE.BAT l'exécution est correcte ( Resultat.txt est bien créé ) et la commande EXIT ferme la fenêtre MSDOS
Par contre ...
Si tape LANCE.BAT en ligne de commande dans la fenêtre Executer du menu Démarrer de Windows j'ai le même type d'execution qu'avec LanceAppli c'est à dire que l'exécution est correcte ( Resultat.txt est bien créé ) mais la commande EXIT NE FERME PAS la fenêtre DOS
Pourquoi ?? :/ :/
Cordialement
Michel CHANU vient de nous annoncer :
Bonjour!
Peut-être allons-nous y arriver. Voilà un petit bout de programme que j'utilise depuis des années sous Windev et qui me permet de savoir si je suis connecté à un réseau (depuis, il existe un composant plus pratique).
But: créer un fichier à partir d'une commande DOS permettant de lister tous les postes connectés en réseau et le lire.
// Environnement NT ou plus // Création d'un fichier batch (la commande utilisée ne peut pas être lancée directement) SI PAS fSauveTexte(ComplèteRep(fRépertoireTemp())+"Batch.bat","net view >> "+ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS // Il est impossible de savoir si nous sommes sur un réseau FinProgramme("Il est impossible de définir si une connexion réseaux existe. Abandon") FIN // Le résultat de la commande se trouve dans le fichier "Texte.txt" SI PAS DDELance(ComplèteRep(fRépertoireTemp())+"Batch.bat",DDEIconise,Vrai) ALORS // Il est impossible de savoir si nous sommes sur un réseau FinProgramme("Il est impossible de définir si une connexion réseau existe. Abandon") FIN // Suppression du fichier Batch SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"Batch.bat") ALORS Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"Batch.bat"" n'a pas pu être supprimé automatiquement.","Veuillez le supprimer manuellement SVP") FIN // Ouverture du fichier résultant Texte = fChargeTexte(ComplèteRep(fRépertoireTemp())+"texte.txt") // La commande renvoie la liste des postes connectés, si "" n'existe pas, le poste est hors réseau (gb_HorsRéseau est à vrai initialement) SI Position(Texte,"") <> 0 ALORS gb_HorsRéseau = Faux FIN // Suppression du fichier résultant. SI PAS fSupprime(ComplèteRep(fRépertoireTemp())+"texte.txt") ALORS Info("Le fichier: """+ComplèteRep(fRépertoireTemp())+"texte.txt"" n'a pas pu être supprimé automatiquement.","Veuillez le supprimer manuellement SVP") FIN
La commande batch s'exécute et se ferme sans que je sois obliger de faire autre chose que ce qu'il y a d'écrit ci-dessus.
J'espère que celà t'avancera...
Cordialement.
-- Elle est pas belle la vie ?
Bertrand
Georges PEYRE a couché sur son écran :
Bonjour et merci pour ton aide mais la différence entre ton code et le mien est que en plus de l'indirection pour créer le fichier Resultat.txt j'ai également un paramètre à passer au programme MonProgDos et apparemment cette forme de commande n'est pas compatible avec DDELance ou LanceAppli
Par contre je ne comprends pas la différence de comportement au niveau du DOS :
Avec cet exemple ... PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
Pour vérifier que le contenu obtenu dans LANCE.BAT est correct ... Si j'ouvre la fenêtre MSDOS et que je tape LANCE.BAT l'exécution est correcte ( Resultat.txt est bien créé ) et la commande EXIT ferme la fenêtre MSDOS
Par contre ...
Si tape LANCE.BAT en ligne de commande dans la fenêtre Executer du menu Démarrer de Windows j'ai le même type d'execution qu'avec LanceAppli c'est à dire que l'exécution est correcte ( Resultat.txt est bien créé ) mais la commande EXIT NE FERME PAS la fenêtre DOS
Pourquoi ?? :/ :/
Cordialement
et si tu fait demarrer/executer et que tu tapes : command /c lance.bat, ça donne quoi ?
Georges PEYRE a couché sur son écran :
Bonjour et merci pour ton aide mais la différence entre ton code et le mien
est que en plus de l'indirection pour créer le fichier Resultat.txt j'ai
également un paramètre à passer au programme MonProgDos et apparemment cette
forme de commande n'est pas compatible avec DDELance ou LanceAppli
Par contre je ne comprends pas la différence de comportement au niveau du DOS
:
Avec cet exemple ...
PrgLance est une chaîne
PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT"
fSauveTexte("LANCE.BAT",PrgLance)
LanceAppli("LANCE.BAT")
Pour vérifier que le contenu obtenu dans LANCE.BAT est correct ...
Si j'ouvre la fenêtre MSDOS et que je tape LANCE.BAT l'exécution est correcte
( Resultat.txt est bien créé ) et la commande EXIT ferme la fenêtre MSDOS
Par contre ...
Si tape LANCE.BAT en ligne de commande dans la fenêtre Executer du menu
Démarrer de Windows j'ai le même type d'execution qu'avec LanceAppli c'est à
dire que l'exécution est correcte ( Resultat.txt est bien créé ) mais la
commande EXIT NE FERME PAS la fenêtre DOS
Pourquoi ?? :/ :/
Cordialement
et si tu fait demarrer/executer et que tu tapes : command /c lance.bat,
ça donne quoi ?
Bonjour et merci pour ton aide mais la différence entre ton code et le mien est que en plus de l'indirection pour créer le fichier Resultat.txt j'ai également un paramètre à passer au programme MonProgDos et apparemment cette forme de commande n'est pas compatible avec DDELance ou LanceAppli
Par contre je ne comprends pas la différence de comportement au niveau du DOS :
Avec cet exemple ... PrgLance est une chaîne PrgLance = "MonProgDos.exe MonFichier.xxx >Resultat.txt" + RC + "EXIT" fSauveTexte("LANCE.BAT",PrgLance) LanceAppli("LANCE.BAT")
Pour vérifier que le contenu obtenu dans LANCE.BAT est correct ... Si j'ouvre la fenêtre MSDOS et que je tape LANCE.BAT l'exécution est correcte ( Resultat.txt est bien créé ) et la commande EXIT ferme la fenêtre MSDOS
Par contre ...
Si tape LANCE.BAT en ligne de commande dans la fenêtre Executer du menu Démarrer de Windows j'ai le même type d'execution qu'avec LanceAppli c'est à dire que l'exécution est correcte ( Resultat.txt est bien créé ) mais la commande EXIT NE FERME PAS la fenêtre DOS
Pourquoi ?? :/ :/
Cordialement
et si tu fait demarrer/executer et que tu tapes : command /c lance.bat, ça donne quoi ?
Bertrand
> et si tu fait demarrer/executer et que tu tapes : command /c lance.bat, ça donne quoi ?
sorry, ça ne peux pas marcher : il faut mettre command /C chemin_completlance.bat
>
et si tu fait demarrer/executer et que tu tapes : command /c lance.bat, ça
donne quoi ?
sorry, ça ne peux pas marcher : il faut mettre
command /C chemin_completlance.bat