Dans une application CUI développée sous XP avec MSVC6, je cherche à
écrire deux fonctions. La première permettant de lire les commandes
disponibles dans l'historique (comme doskey / history) et la seconde
permettant de charger automatiquement des commandes dans l'historique à
partir d'un fichier. Le but étant de conserver l'historique des
commandes (accessible par la touche F7) entre plusieurs sessions. J'ai
jeté un oeil sur MSDN et à priori aucune API console documentée permet
de réaliser cela. En revanche doskey.exe semble utiliser des API non
documentées :
GetConsoleCommandHistory
GetConsoleCommandHistoryLength
...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian ASTOR
Gilles wrote:
Dans une application CUI développée sous XP avec MSVC6, je cherche à écrire deux fonctions. La première permettant de lire les commandes disponibles dans l'historique (comme doskey / history) et la seconde permettant de charger automatiquement des commandes dans l'historique à partir d'un fichier. Le but étant de conserver l'historique des commandes (accessible par la touche F7) entre plusieurs sessions. J'ai jeté un oeil sur MSDN et à priori aucune API console documentée permet de réaliser cela. En revanche doskey.exe semble utiliser des API non documentées : GetConsoleCommandHistory GetConsoleCommandHistoryLength ...
Auriez-vous quelques pistes ?
Ca marche pour moi, mais apparemment qu'avec la version Unicode pour la longueur (GetConsoleCommandHistoryLengthW()), GetConsoleCommandHistoryLengthW() et GetConsoleCommandHistoryW() (ou A()) étant appelées dynamiquement de kernel32.dll, et qu'à partir d'une fenêtre console (L"cmd.exe" en paramètre)
Gilles wrote:
Dans une application CUI développée sous XP avec MSVC6, je cherche à
écrire deux fonctions. La première permettant de lire les commandes
disponibles dans l'historique (comme doskey / history) et la seconde
permettant de charger automatiquement des commandes dans l'historique à
partir d'un fichier. Le but étant de conserver l'historique des
commandes (accessible par la touche F7) entre plusieurs sessions. J'ai
jeté un oeil sur MSDN et à priori aucune API console documentée permet
de réaliser cela. En revanche doskey.exe semble utiliser des API non
documentées :
GetConsoleCommandHistory
GetConsoleCommandHistoryLength
...
Auriez-vous quelques pistes ?
Ca marche pour moi, mais apparemment qu'avec la version Unicode pour la
longueur (GetConsoleCommandHistoryLengthW()),
GetConsoleCommandHistoryLengthW() et
GetConsoleCommandHistoryW() (ou A()) étant appelées dynamiquement de
kernel32.dll, et qu'à partir d'une fenêtre console (L"cmd.exe" en paramètre)
Dans une application CUI développée sous XP avec MSVC6, je cherche à écrire deux fonctions. La première permettant de lire les commandes disponibles dans l'historique (comme doskey / history) et la seconde permettant de charger automatiquement des commandes dans l'historique à partir d'un fichier. Le but étant de conserver l'historique des commandes (accessible par la touche F7) entre plusieurs sessions. J'ai jeté un oeil sur MSDN et à priori aucune API console documentée permet de réaliser cela. En revanche doskey.exe semble utiliser des API non documentées : GetConsoleCommandHistory GetConsoleCommandHistoryLength ...
Auriez-vous quelques pistes ?
Ca marche pour moi, mais apparemment qu'avec la version Unicode pour la longueur (GetConsoleCommandHistoryLengthW()), GetConsoleCommandHistoryLengthW() et GetConsoleCommandHistoryW() (ou A()) étant appelées dynamiquement de kernel32.dll, et qu'à partir d'une fenêtre console (L"cmd.exe" en paramètre)
Gilles
"Christian ASTOR" a écrit dans le message de news:470105f9$0$21146$ | Gilles wrote: | || Dans une application CUI développée sous XP avec MSVC6, je cherche à || écrire deux fonctions. La première permettant de lire les commandes || disponibles dans l'historique (comme doskey / history) et la seconde || permettant de charger automatiquement des commandes dans || l'historique à partir d'un fichier. Le but étant de conserver || l'historique des commandes (accessible par la touche F7) entre || plusieurs sessions. J'ai jeté un oeil sur MSDN et à priori aucune || API console documentée permet de réaliser cela. En revanche || doskey.exe semble utiliser des API non documentées : || GetConsoleCommandHistory || GetConsoleCommandHistoryLength || ... || || Auriez-vous quelques pistes ? | | Ca marche pour moi, mais apparemment qu'avec la version Unicode pour | la longueur (GetConsoleCommandHistoryLengthW()), | GetConsoleCommandHistoryLengthW() et | GetConsoleCommandHistoryW() (ou A()) étant appelées dynamiquement de | kernel32.dll, et qu'à partir d'une fenêtre console (L"cmd.exe" en | paramètre)
Merci Christian,
Pourriez-vous m'indiquer les prototypes de ces deux API ?
Merci par avance.
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news:470105f9$0$21146$7a628cd7@news.club-internet.fr
| Gilles wrote:
|
|| Dans une application CUI développée sous XP avec MSVC6, je cherche à
|| écrire deux fonctions. La première permettant de lire les commandes
|| disponibles dans l'historique (comme doskey / history) et la seconde
|| permettant de charger automatiquement des commandes dans
|| l'historique à partir d'un fichier. Le but étant de conserver
|| l'historique des commandes (accessible par la touche F7) entre
|| plusieurs sessions. J'ai jeté un oeil sur MSDN et à priori aucune
|| API console documentée permet de réaliser cela. En revanche
|| doskey.exe semble utiliser des API non documentées :
|| GetConsoleCommandHistory
|| GetConsoleCommandHistoryLength
|| ...
||
|| Auriez-vous quelques pistes ?
|
| Ca marche pour moi, mais apparemment qu'avec la version Unicode pour
| la longueur (GetConsoleCommandHistoryLengthW()),
| GetConsoleCommandHistoryLengthW() et
| GetConsoleCommandHistoryW() (ou A()) étant appelées dynamiquement de
| kernel32.dll, et qu'à partir d'une fenêtre console (L"cmd.exe" en
| paramètre)
Merci Christian,
Pourriez-vous m'indiquer les prototypes de ces deux API ?
"Christian ASTOR" a écrit dans le message de news:470105f9$0$21146$ | Gilles wrote: | || Dans une application CUI développée sous XP avec MSVC6, je cherche à || écrire deux fonctions. La première permettant de lire les commandes || disponibles dans l'historique (comme doskey / history) et la seconde || permettant de charger automatiquement des commandes dans || l'historique à partir d'un fichier. Le but étant de conserver || l'historique des commandes (accessible par la touche F7) entre || plusieurs sessions. J'ai jeté un oeil sur MSDN et à priori aucune || API console documentée permet de réaliser cela. En revanche || doskey.exe semble utiliser des API non documentées : || GetConsoleCommandHistory || GetConsoleCommandHistoryLength || ... || || Auriez-vous quelques pistes ? | | Ca marche pour moi, mais apparemment qu'avec la version Unicode pour | la longueur (GetConsoleCommandHistoryLengthW()), | GetConsoleCommandHistoryLengthW() et | GetConsoleCommandHistoryW() (ou A()) étant appelées dynamiquement de | kernel32.dll, et qu'à partir d'une fenêtre console (L"cmd.exe" en | paramètre)
Merci Christian,
Pourriez-vous m'indiquer les prototypes de ces deux API ?
Merci par avance.
Christian ASTOR
Gilles wrote:
Merci Christian,
Pourriez-vous m'indiquer les prototypes de ces deux API ?
Merci par avance.
Par ex =>
typedef DWORD (WINAPI*GCCHLW) (IN LPWSTR sExeName); typedef DWORD (WINAPI*GCCHW) (OUT LPWSTR sCommands, IN DWORD nBufferLength, IN LPWSTR sExeName);
"Christian ASTOR" a écrit dans le message de news:47011622$0$21144$ | Gilles wrote: || || Merci Christian, || || Pourriez-vous m'indiquer les prototypes de ces deux API ? || || Merci par avance. | | | Par ex => | | typedef DWORD (WINAPI*GCCHLW) (IN LPWSTR sExeName); | typedef DWORD (WINAPI*GCCHW) (OUT LPWSTR sCommands, IN DWORD | nBufferLength, IN LPWSTR sExeName);
Merci Christian !
Tout est en ordre pour la première partie (dump) En revanche, comment "injecter" des commandes dans l'historique ? Peut-être une nouvelle fois avec une API non documentée ;-)
De plus, connaitriez-vous les prototypes des fonctions suivantes :
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news:47011622$0$21144$7a628cd7@news.club-internet.fr
| Gilles wrote:
||
|| Merci Christian,
||
|| Pourriez-vous m'indiquer les prototypes de ces deux API ?
||
|| Merci par avance.
|
|
| Par ex =>
|
| typedef DWORD (WINAPI*GCCHLW) (IN LPWSTR sExeName);
| typedef DWORD (WINAPI*GCCHW) (OUT LPWSTR sCommands, IN DWORD
| nBufferLength, IN LPWSTR sExeName);
Merci Christian !
Tout est en ordre pour la première partie (dump)
En revanche, comment "injecter" des commandes dans l'historique ?
Peut-être une nouvelle fois avec une API non documentée ;-)
De plus, connaitriez-vous les prototypes des fonctions suivantes :
"Christian ASTOR" a écrit dans le message de news:47011622$0$21144$ | Gilles wrote: || || Merci Christian, || || Pourriez-vous m'indiquer les prototypes de ces deux API ? || || Merci par avance. | | | Par ex => | | typedef DWORD (WINAPI*GCCHLW) (IN LPWSTR sExeName); | typedef DWORD (WINAPI*GCCHW) (OUT LPWSTR sCommands, IN DWORD | nBufferLength, IN LPWSTR sExeName);
Merci Christian !
Tout est en ordre pour la première partie (dump) En revanche, comment "injecter" des commandes dans l'historique ? Peut-être une nouvelle fois avec une API non documentée ;-)
De plus, connaitriez-vous les prototypes des fonctions suivantes :
Tout est en ordre pour la première partie (dump) En revanche, comment "injecter" des commandes dans l'historique ? Peut-être une nouvelle fois avec une API non documentée ;-)
De plus, connaitriez-vous les prototypes des fonctions suivantes :
Tout est en ordre pour la première partie (dump)
En revanche, comment "injecter" des commandes dans l'historique ?
Peut-être une nouvelle fois avec une API non documentée ;-)
De plus, connaitriez-vous les prototypes des fonctions suivantes :
Tout est en ordre pour la première partie (dump) En revanche, comment "injecter" des commandes dans l'historique ? Peut-être une nouvelle fois avec une API non documentée ;-)
De plus, connaitriez-vous les prototypes des fonctions suivantes :
"Christian ASTOR" a écrit dans le message de news:470141d8$0$21144$ | Pour injecter dans l'historique, je ne vois pas (doskey n'a pas l'air | de pouvoir le faire où ai-je loupé une option ?)
Non, justement aucune option doskey pour cela ! Mais il y a bien un composant qui sache le faire : (cmd.exe ?, csrss ?, ntvdm.exe ?, ...)
| Pour les fonctions : | | BOOL SetConsoleCommandHistoryMode(IN DWORD nFlags); | Mais elle a été apparemment supprimée sous Vista... | | BOOL SetConsoleNumberOfCommandsW(IN DWORD nNumber, IN LPWSTR | sExeName); VOID ExpungeConsoleCommandHistoryW(IN LPWSTR sExeName);
Merci beaucoup !
Une nouvelle fois, Bravo !!
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news:470141d8$0$21144$7a628cd7@news.club-internet.fr
| Pour injecter dans l'historique, je ne vois pas (doskey n'a pas l'air
| de pouvoir le faire où ai-je loupé une option ?)
Non, justement aucune option doskey pour cela !
Mais il y a bien un composant qui sache le faire :
(cmd.exe ?, csrss ?, ntvdm.exe ?, ...)
| Pour les fonctions :
|
| BOOL SetConsoleCommandHistoryMode(IN DWORD nFlags);
| Mais elle a été apparemment supprimée sous Vista...
|
| BOOL SetConsoleNumberOfCommandsW(IN DWORD nNumber, IN LPWSTR
| sExeName); VOID ExpungeConsoleCommandHistoryW(IN LPWSTR sExeName);
"Christian ASTOR" a écrit dans le message de news:470141d8$0$21144$ | Pour injecter dans l'historique, je ne vois pas (doskey n'a pas l'air | de pouvoir le faire où ai-je loupé une option ?)
Non, justement aucune option doskey pour cela ! Mais il y a bien un composant qui sache le faire : (cmd.exe ?, csrss ?, ntvdm.exe ?, ...)
| Pour les fonctions : | | BOOL SetConsoleCommandHistoryMode(IN DWORD nFlags); | Mais elle a été apparemment supprimée sous Vista... | | BOOL SetConsoleNumberOfCommandsW(IN DWORD nNumber, IN LPWSTR | sExeName); VOID ExpungeConsoleCommandHistoryW(IN LPWSTR sExeName);
Merci beaucoup !
Une nouvelle fois, Bravo !!
Gilles
"Christian ASTOR" a écrit dans le message de news:470141d8$0$21144$
J'ai un problème avec cette API ! Elle ne fonctionne qu'une seule fois. A la première invocation l'historique est bien supprimé en revanche doskey semble perturbé. En effet, si ensuite j'ajoute des nouvelles commandes dans l'historique (par saisies dans la console cmd par exemple) alors d'une part cette API ne fonctionne plus et d'autre part doskey /history ne dump plus rien. Toutefois les touches F7 / Alt-F7 continuent de fonctionner correctement. Le vidage de l'historique par Alt-F7 permet de rétablir le fonctionnement. Rencontrez-vous le même problème ?
Merci par avance.
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news:470141d8$0$21144$7a628cd7@news.club-internet.fr
J'ai un problème avec cette API ! Elle ne fonctionne qu'une seule fois.
A la première invocation l'historique est bien supprimé en revanche
doskey semble perturbé. En effet, si ensuite j'ajoute des nouvelles
commandes dans l'historique (par saisies dans la console cmd par
exemple) alors d'une part cette API ne fonctionne plus et d'autre part
doskey /history ne dump plus rien. Toutefois les touches F7 / Alt-F7
continuent de fonctionner correctement. Le vidage de l'historique par
Alt-F7 permet de rétablir le fonctionnement. Rencontrez-vous le même
problème ?
J'ai un problème avec cette API ! Elle ne fonctionne qu'une seule fois. A la première invocation l'historique est bien supprimé en revanche doskey semble perturbé. En effet, si ensuite j'ajoute des nouvelles commandes dans l'historique (par saisies dans la console cmd par exemple) alors d'une part cette API ne fonctionne plus et d'autre part doskey /history ne dump plus rien. Toutefois les touches F7 / Alt-F7 continuent de fonctionner correctement. Le vidage de l'historique par Alt-F7 permet de rétablir le fonctionnement. Rencontrez-vous le même problème ?
Merci par avance.
Christian ASTOR
Gilles wrote:
"Christian ASTOR" a écrit dans le message de news:470141d8$0$21144$
J'ai un problème avec cette API ! Elle ne fonctionne qu'une seule fois. A la première invocation l'historique est bien supprimé en revanche doskey semble perturbé.
Oui, mais c'est ce que fait doskey/reinstall : ça ne marche qu'une fois avec les mêmes symptômes.
Gilles wrote:
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news:470141d8$0$21144$7a628cd7@news.club-internet.fr
J'ai un problème avec cette API ! Elle ne fonctionne qu'une seule fois.
A la première invocation l'historique est bien supprimé en revanche
doskey semble perturbé.
Oui, mais c'est ce que fait doskey/reinstall : ça ne marche qu'une fois
avec les mêmes symptômes.
J'ai un problème avec cette API ! Elle ne fonctionne qu'une seule fois. A la première invocation l'historique est bien supprimé en revanche doskey semble perturbé.
Oui, mais c'est ce que fait doskey/reinstall : ça ne marche qu'une fois avec les mêmes symptômes.
Gilles
"Christian ASTOR" a écrit dans le message de news:470280b0$0$21146$
| Oui, mais c'est ce que fait doskey/reinstall : ça ne marche qu'une | fois avec les mêmes symptômes.
Tout à fait exact Christian ! Je viens de tester et le comportement est identique :-( En revanche Alt-F7 fait le job ! Bizarre !
Encore merci :-)
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news:470280b0$0$21146$7a628cd7@news.club-internet.fr
| Oui, mais c'est ce que fait doskey/reinstall : ça ne marche qu'une
| fois avec les mêmes symptômes.
Tout à fait exact Christian !
Je viens de tester et le comportement est identique :-(
En revanche Alt-F7 fait le job ! Bizarre !
Encore merci :-)
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr