Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1087 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [resolu] IMPRIMER AVEC WORDPAD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] IMPRIMER AVEC WORDPAD

n°222433
nicolasm
Posté le 01-10-2002 à 17:27:09  profilanswer
 

voila j ouvre bien mon fichier directement avec la commande:
system(PATH_wordpad PATH_fichier);
 
mais je souhaiterais imprimer directement puis refermer
(en gros faire un CTRL-P puis fermeture ou au moins le CTRL-P)
 
1: est-ce possible?
2: possible avec system?
3: sinon avec koi d autre?
 
OS : Win2K
compilo : DEV-C++
EXE : mode-console
fichier en C (pas en C++)


Message édité par nicolasm le 02-10-2002 à 09:59:06
mood
Publicité
Posté le 01-10-2002 à 17:27:09  profilanswer
 

n°222480
Carbon_14
Posté le 01-10-2002 à 19:08:23  profilanswer
 

Question préalable : le but est d'imprimer du texte, ou d'utiliser obligatoirement NOTEPAD pour ce faire ?
 
Peut-être envoyer un message à Notepad une fois lancé (à condition de trouver son hWnd), mais "CTRL+P", marchera-ce ? C'est pas un message Windows....
 
A moins qu'il n'y ait un "notepad machin.txt /P" qui lancerait l'impression ?? Je viens d'essayer, c'est pas bon. :( /print non plus...
 
Une commande DDE "print" ? Ca, ça devrait fonctionner, vu qu'il ne faut pas choisir une imprimante sur la machine, sinon un dialogue de plus. A condition que NOTEPAD accepte DDE.


Message édité par Carbon_14 le 01-10-2002 à 19:08:51
n°222483
Carbon_14
Posté le 01-10-2002 à 19:18:47  profilanswer
 

The simplest soluce :
 
PFE m'a aiguillé (éditeur concurent gratuit multi-document ASCII de NOTEPAD).
 
Faut faire  
path_notepad /p path_fichier
 
Avec PFE, ça devrait aussi marcher (si fichier trop gros), mais j'avais utilisé le commutateur /P en majuscule => il demande l'imprimante voulue (pas pratique pour être discret).

n°222517
gatorette
Posté le 01-10-2002 à 20:44:11  profilanswer
 

Bien que la solution précédente marche très bien, j'aurais tendance à préferer l'utilisation de la fonction ShellExecute (ou ShellExecuteEx si tu souhaites plus de contrôle). Elle a plusieurs avantages : pas besoin de préciser l'éditeur à lancer, compatible même si wordpad disparaît ou n'est pas installé (et encore d'autres).
 
Exemple d'utilisation :

Code :
  1. ShellExecute( NULL, TEXT("print" ), TEXT("mondocument.rtf" ), NULL, NULL, SW_SHOW );


---------------
each day I don't die is cheating
n°222527
Carbon_14
Posté le 01-10-2002 à 21:26:15  profilanswer
 

On reconnait les pros..
 
Son "system(path_notepad /p path_fichier)", il ne provoquerait pas l'affichage d'une feuille furtive ? ShellExecute est plus adapté.

n°222610
gatorette
Posté le 02-10-2002 à 01:03:59  profilanswer
 

J'ai regardé vite fait comment est implémentée la fonction system dans Visual C++ .NET. Apparemment l'argument de la fonction (le programme choisi et ses éventuels paramètres) est lancée au travers de la variable d'environnement système ComSpec qui semble indiquer le programme implémentant la ligne de commande (par défaut Cmd.exe sous Windows NT/2000/XP et Command.exe sous Windows 95/98/ME).
Ce programme est lui même lancé au travers de la fonction _tspawnve.
 
On obtient donc au final une fonction du genre:

Code :
  1. argv[][] = { "C:\\WINNT\\system32\\Cmd.exe",  // ComSpec
  2. "/c",  // permet de quitter "Cmd.exe" à la fin de l'execution
  3. "\"C:\\Program Files\\Windows NT\\Accessoires\\wordpad.exe\" /p \"C:\\mydoc.rtf\"",  // argument de la fonction system
  4. NULL
  5. }
  6. _tspawnve(_P_WAIT,argv[0],argv,NULL)


 
Au final, cette fonction va donc executer la commande C:\WINNT\system32\Cmd.exe /c "C:\Program Files\Windows NT\Accessoires\wordpad.exe" /p "C:\mydoc.rtf". C'est sûr que cela semble un peu lourd !
 
La fonction ShellExecute (et sa soeur ShellExecuteEx) semble être la plus complète des fonctions et celle recommandée par Microsoft. Par contre une fonction telle que CreateProcessAsUser est indispensable si l'on veut executer l'application avec des privilèges autres que ceux de l'utilisateur en cours.


---------------
each day I don't die is cheating

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [resolu] IMPRIMER AVEC WORDPAD

 

Sujets relatifs
[Win32] [RESOLU] Recuperer la liste des processusErreur de variable !!??!!?? [résolu]
Grosse erreur de ouf sur les sessions !!!!! [Résolu]Selectionner un item d'une liste d'une form [Resolu]
Data Report... Imprimer une liste...[resolu] couleur+fichier+rtf
PCRE en javascript ? [Résolu][Delphi] Sauvegarde d'une font...[Résolu]
[ SHELL ] comment intercepter le caractere * [ resolu ]Modifier le texte d'un anchor ( <A></A>) [résolu]
Plus de sujets relatifs à : [resolu] IMPRIMER AVEC WORDPAD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR