Commande DOS
Commande DOS
Bonjour à tous
Il y a longtemps que je ne suis plus passer sur ce forum !
J'ai une question :
Comment exécuter une commande DOS avec PureBasic ?
Par exemple ce voudrais lancer "powercfg /batteryreport" pour connaitre l'état de santé de ma batterie.
J'espère de vous aurez la réponse comme à votre habitude.
En vous souhaitant une bon Week End
Denis
Il y a longtemps que je ne suis plus passer sur ce forum !
J'ai une question :
Comment exécuter une commande DOS avec PureBasic ?
Par exemple ce voudrais lancer "powercfg /batteryreport" pour connaitre l'état de santé de ma batterie.
J'espère de vous aurez la réponse comme à votre habitude.
En vous souhaitant une bon Week End
Denis
Denis
Bonne Jounée à tous
Bonne Jounée à tous
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Commande DOS
Bonjour Denis.
RunProgram était pour moi la solution. Mais je n'arrive pas à obtenir le résultat de powercfg /batteryreport.
Avec le paramétre /list par contre ça fonctionne !!
RunProgram était pour moi la solution. Mais je n'arrive pas à obtenir le résultat de powercfg /batteryreport.
Avec le paramétre /list par contre ça fonctionne !!
Code : Tout sélectionner
EnableExplicit
Define Run = RunProgram("PowerCfg.exe", " /list", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Ascii)
Define Output.s
If Run
While ProgramRunning(Run)
If AvailableProgramOutput(Run)
Output + ReadProgramString(Run) + Chr(13)
EndIf
Wend
CloseProgram(Run) ; Close the connection to the program
EndIf
Debug Output
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Commande DOS
Bonjour brossden,
Le code le plus court: (sachant que la sortie de cette commande se fait sous forme d'une page HTML)
Ne pas oublier #PB_Program_Wait avant d'ouvrir le rapport car il est lent à générer.
Après, si tu tapes powercfg /batteryreport /? tu as d'autres possibilités de sorties, dont le format XML si tu veux extraire des valeurs sans avoir à filtrer le HTML.

Le code le plus court: (sachant que la sortie de cette commande se fait sous forme d'une page HTML)
Code : Tout sélectionner
RunProgram("powercfg", "/batteryreport", GetTemporaryDirectory(), #PB_Program_Hide | #PB_Program_Wait)
RunProgram(GetTemporaryDirectory() + "battery-report.html")
Après, si tu tapes powercfg /batteryreport /? tu as d'autres possibilités de sorties, dont le format XML si tu veux extraire des valeurs sans avoir à filtrer le HTML.

Re: Commande DOS
Code : Tout sélectionner
prog$ = "cmd.exe"
dosbox = RunProgram(prog$, "", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide|#PB_Program_Ascii)
If dosbox
OpenWindow(0,0,0,400,500,"Results from DosBox",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
StartDrawing(WindowOutput(0))
DrawText(65,200, "En cours...", #Black, GetSysColor_(#COLOR_BTNFACE))
StopDrawing()
NewList results.s()
; WriteProgramStringN(dosbox, "ping google.com", #PB_Ascii)
WriteProgramStringN(dosbox, "powercfg /?", #PB_Ascii)
; WriteProgramStringN(dosbox, "powercfg /batteryreport", #PB_Ascii)
WriteProgramData(dosbox, #PB_Program_Eof, 0)
While ProgramRunning(dosbox)
If AvailableProgramOutput(dosbox)
AddElement(results())
sOEM_in_unicode.s = ReadProgramString(dosbox, #PB_Ascii)
iByteLength = Len(sOEM_in_unicode) + 2
sOem_in_Ascii.s = Space(iByteLength)
PokeS(@sOem_in_Ascii, sOEM_in_unicode, -1, #PB_Ascii)
sunicode.s = Space(iByteLength)
OemToChar_(@sOem_in_Ascii, @sunicode)
results() = sunicode
Else
Delay(1)
EndIf
Wend
AddElement(results())
AddElement(results())
results() = "Program finished with exit code = " + Str(ProgramExitCode(dosbox))
CloseProgram(dosbox)
ListViewGadget(0,0,0,400,500)
ForEach results()
AddGadgetItem(0, -1, results())
Next
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Else
MessageRequester("OOPS!", "Can't find " + prog$ )
EndIf
Re: Commande DOS
WOW ! Toujours aussi rapides
Un grand Merci à vous tous c'est super sympa comme dans mon souvenir !
Un grand Merci à vous tous c'est super sympa comme dans mon souvenir !
Denis
Bonne Jounée à tous
Bonne Jounée à tous
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Commande DOS
Brooooosssdeeeennn !!!!
Je te croyais mort !!!
Rien que revoir ton pseudo, j'en croyais pas mes "zieux"
Je suis replongé direct ...dans ma vie périnatale PB

En tout cas...ça fait toujours plaisir de lire les mots d'une vieille branche
PB un jour...PB toujours
Je te croyais mort !!!

Rien que revoir ton pseudo, j'en croyais pas mes "zieux"

Je suis replongé direct ...dans ma vie périnatale PB


En tout cas...ça fait toujours plaisir de lire les mots d'une vieille branche

PB un jour...PB toujours

Re: Commande DOS
Très heureux de te relire !.brossden a écrit : Un grand Merci à vous tous c'est super sympa comme dans mon souvenir !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Commande DOS
Coucou Brossden, cool le signe de vie.
Bon ben voilà, tout a été dit :
- une commande PB : RunProgram()
- un pipe-line entre le programme exécuté, et PB
- une légère traduction des données échangées car les codes caractère ne représentent pas toujours la même chose.
Bon ben voilà, tout a été dit :
- une commande PB : RunProgram()
- un pipe-line entre le programme exécuté, et PB
- une légère traduction des données échangées car les codes caractère ne représentent pas toujours la même chose.
Re: Commande DOS
Salut à tous.
Vous n'allez pas me croire mais depuis que je suis à la retraite je n'ai le temps de rien faire. Entre les dessins 3D pour créer des pièces, la découpe Laser l'utilisation de CNC (fraiseuses à commande numérique) tondre la pelouse... Dur dur la vie de retraité !
Je suis heureux de tous vous voir ici fidèles au poste Kwai chang caine, falsam, Ars, Ollivier ... !!!
Que devenez vous tous ? Retraités, bientôt retraités ou payez-vous encore la mienne pour quelques années !
J'essaierai de passer plus souvent ici promis.
Vous n'allez pas me croire mais depuis que je suis à la retraite je n'ai le temps de rien faire. Entre les dessins 3D pour créer des pièces, la découpe Laser l'utilisation de CNC (fraiseuses à commande numérique) tondre la pelouse... Dur dur la vie de retraité !
Je suis heureux de tous vous voir ici fidèles au poste Kwai chang caine, falsam, Ars, Ollivier ... !!!
Que devenez vous tous ? Retraités, bientôt retraités ou payez-vous encore la mienne pour quelques années !
J'essaierai de passer plus souvent ici promis.
Denis
Bonne Jounée à tous
Bonne Jounée à tous
Re: Commande DOS
héhé parti pour payer la tienne encore un bon moment en espérant en toucher une un jour 

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Commande DOS
Oh que si !!!!brossden a écrit : jeu. 26/mai/2022 16:40 Vous n'allez pas me croire (mais depuis que je suis à la retraite je n'ai le temps de rien faire.)

Tout pareil, on se demande comment on arrivait à avoir une journée de boulot + un autre travail la semaine et encore un autre pour se "reposer" le week end.
Et encore on trouvait du temps pour faire d'autres activités

Maintenant je me demande tous les matins si ça vaut le coup de se lever, car j'ai l'impression de me coucher quelques minutes après

Ce doit être un genre de "Syndrome du retraité".. mon frère qui était d'astreinte dans une grosse boite sur tout LYON et son agglomération, appelé souvent en urgence par les pompiers, travaillait parfois jour et nuit pour éviter des grandes catastrophes, avec la sirène et le bleu (Putain c'est pas à moi qu'ils auraient confié ça, c'est un rêve de gosse

Depuis qu'il est à la retraite, il me dit : "Putain mais où on trouvait le temps d'aller 8h (et le pouce) au boulot !!! "

Ce doit être "passionnant comme passion", j'aimerais trop voir çabrossden a écrit : jeu. 26/mai/2022 16:40 Entre les dessins 3D pour créer des pièces, la découpe Laser l'utilisation de CNC (fraiseuses à commande numérique) tondre la pelouse... Dur dur la vie de retraité !

Moi qui suit déjà émerveillé par le plasma que je me suis acheté, à force d'en avoir marre de faire des aller retour à l'hosto toute la nuit pour me faire retirer les poutres dans l’œil que ma chère meuleuse avait la délicate habitude de m'envoyer

Moi en métallurgie, je suis un peu comme en informatique....

J'ai toujours admiré les pros de la mécanique générale

Gamin, quand je faisais mes études à la XRousse je les croisais dans la cour de l'école, mais on se parlait jamais

En fait, les électriciens snobaient les mécanos, car ils disaient que si il faisaient ce métier, c'était parce qu"ils en avaient pas assez derrière la calandre pour pouvoir faire un métier de réflexion !!! qu'est ce qu'on est con quand on est jeune

Maintenant quand j'en croise un avec tout ce qu'il sait pour pouvoir tailler un bout de métal, je regrette d'avoir écouté mes copains

Pour en avoir le coeur net...Je me suis acheté un petit tour qui était dans une usine de Citroen, j'ai cru que de l'acheter me suffirait...il orne mon atelier depuis des années, c'est cool comme déco

J'ai peur de l’allumer et de me prendre un mord dans ce qui me sert de tronche, tient.... si je recroisait mes anciens électriciens de copains d'école, je les mettrais bien devant pour qu'ils m'expliquent comment ils feraient pour remplacer ne serait-ce qu'un instant, un seul des "handicapés du bulbe" que l'on snobait dans la cour de l'école.

Surement pas autant que moi !!!!brossden a écrit : jeu. 26/mai/2022 16:40Je suis heureux de tous vous voir ici fidèles au poste Kwai chang caine, falsam, Ars, Ollivier ... !!!

Tu as été un des premiers à m’accueillir avec Dobro,

Et ça....les copains de tranchée....ça s'oublie pas !!!

PB un jour, PB toujours, je n'ai de cesse de le répeter

Re: Commande DOS
Salut Kwai chang caine
toujours aussi porté sur le longs discours humoristique à ce que je vois !
Salut Ar-s
ne t'inquiète pas tu y arriveras bien un jour !
Salut à tous ceux qui ont tenter de m'aider mais je me suis mal exprimé et je ne sais pas trop comment vous expliquer la chose.
je sais qu'il est possible d'utiliser un "artifice" pour écrire dans un répertoire système d'un pc distant dont on ne connais le nom du destinataire de ce fichier.
exemple pour écrire dans mon répertoire document il faudrait savoir quel est le nom de l'utilisateur windows
J'ai déjà vu un truc dans le genre : cd c:\%documents% ....
toujours aussi porté sur le longs discours humoristique à ce que je vois !
Salut Ar-s
ne t'inquiète pas tu y arriveras bien un jour !
Salut à tous ceux qui ont tenter de m'aider mais je me suis mal exprimé et je ne sais pas trop comment vous expliquer la chose.
je sais qu'il est possible d'utiliser un "artifice" pour écrire dans un répertoire système d'un pc distant dont on ne connais le nom du destinataire de ce fichier.
exemple pour écrire dans mon répertoire document il faudrait savoir quel est le nom de l'utilisateur windows
J'ai déjà vu un truc dans le genre : cd c:\%documents% ....
Denis
Bonne Jounée à tous
Bonne Jounée à tous
Re: Commande DOS
Sur un PC distant, sans connaitre le nom d'utilisateur, difficile.brossden a écrit : ven. 27/mai/2022 16:27 je sais qu'il est possible d'utiliser un "artifice" pour écrire dans un répertoire système d'un pc distant dont on ne connais le nom du destinataire de ce fichier.
exemple pour écrire dans mon répertoire document il faudrait savoir quel est le nom de l'utilisateur windows
J'ai déjà vu un truc dans le genre : cd c:\%documents% ....
Sur un PC local GetEnvironmentVariable() permet de récupérer tout ce qu'on a en tapant la commande dos SET
Voir aussi UserName(), GetUserDirectory() depuis PB 5.60

Re: Commande DOS
Bonjour,
Pour avoir accès aux dossiers/fichiers d'un PC distant il faut au minimum être administrateur local dudit PC.
Si les PC font parti d'un domaine Active Directory, le compte utilisé pour avoir accès aux dossiers/fichiers doit être administrateur du domaine.
Pour accéder au PC distant, il faut utiliser les partages administratifs s'ils n'ont pas étés désactivés.
Pour afficher les partages administratifs sur son PCDans mon cas, les partages administratifs sont C$, D$, Y$ pour les disques (physiques ou virtuels) plus ADMIN$ et IPC$
Un nom de partage qui se termine par $ est un partage caché.
Pour connaitre les utilisateurs du PC distant, il suffit de regarder dans le partage Users
Pour s'y connecter depuis son PC si on a les bons droits, \\@IP_PC_Distant\Users
Pour se connecter au disque C: du PC distant et avoir accès a l'intégralité du disque, \\@IP_PC_Distant\C$
Accès rapide, WIN+R et \\@IP_PC_Distant\C$ dans Ouvrir :
cage
Pour avoir accès aux dossiers/fichiers d'un PC distant il faut au minimum être administrateur local dudit PC.
Si les PC font parti d'un domaine Active Directory, le compte utilisé pour avoir accès aux dossiers/fichiers doit être administrateur du domaine.
Pour accéder au PC distant, il faut utiliser les partages administratifs s'ils n'ont pas étés désactivés.
Pour afficher les partages administratifs sur son PC
Code : Tout sélectionner
C:\Users\admin>net share
Nom partage Ressource Remarque
-------------------------------------------------------------------------------
ADMIN$ C:\Windows Administration à distance
C$ C:\ Partage par défaut
D$ D:\ Partage par défaut
IPC$ IPC distant
Y$ Y:\ Partage par défaut
EBCAGE Disk C
C:\
EBCAGE Disk D
D:\
EBCAGE Disk Y
Y:\
PUBLIC Y:\PUBLIC
Users C:\Users
La commande s’est terminée correctement.
C:\Users\admin>
Un nom de partage qui se termine par $ est un partage caché.
Pour connaitre les utilisateurs du PC distant, il suffit de regarder dans le partage Users
Pour s'y connecter depuis son PC si on a les bons droits, \\@IP_PC_Distant\Users
Pour se connecter au disque C: du PC distant et avoir accès a l'intégralité du disque, \\@IP_PC_Distant\C$
Accès rapide, WIN+R et \\@IP_PC_Distant\C$ dans Ouvrir :
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Commande DOS
Kwai chang caine
Tu habites dans quelle région?
Moi je suis dans la proche banlieue de LYON à Irigny exactement
Tu habites dans quelle région?
Moi je suis dans la proche banlieue de LYON à Irigny exactement
Denis
Bonne Jounée à tous
Bonne Jounée à tous