Je ne trouve pas la classe shellexecute!!

Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006 - 22 mars 2006 à 10:02
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 22 mars 2006 à 15:16
Salut tout le monde.

Voilà, je veux imprimer toute sorte de document en leurs passant le liens, le problème, c'est que pour détecter le type de document, je vais faire confiance à l'os car avec un printdocument je n'ai réussi qu'à imprimer du texte!!

J'ai donc entendu parler de la fonction printo du shellexecute mais je ne la trouve pas cette classe!

Ou est elle svp?

Je travaille sous VS 2005

Merçi :)

13 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
22 mars 2006 à 10:14
ShellExecute est une API

[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(
IntPtr hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
ShowCommands nShowCmd);

::|The S@ib|::
MVP C#.NET
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
22 mars 2006 à 10:19
si ce que tu veux, c'est lancer un exécutable... regarde ca : http://www.codyx.org/snippet_ouvrir-document-lancer-executable_25.aspx


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
22 mars 2006 à 10:20
merçi de ta réponse

a quel endroit de mon code dois-je mettre ce truc? car là j'ai mis [DllImport("shell32.dll")] et j'ai une erreur: Error 1 The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
22 mars 2006 à 11:49
Bon , j'ai rajouté using System.Runtime.InteropServices; et mtn il sais ce que c'est mais il dit que je dois mettre [DllImport("shell32.dll")] dans la déclaration de méthode or si je le fais j'ai plein d'erreurs me disant qu'il manque des ";" après [DllImport("shell32.dll")] ...

Merçi d'avance!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
22 mars 2006 à 12:05
Montre ton bout de code

::|The S@ib|::
MVP C#.NET
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
22 mars 2006 à 13:02
ça va j'ai finis par trouver mon erreur, je n'écrivais rien a la suite du Dllimport. Merçi beaucoup pour ta réponse :)

Maintenant, j'ai une question!

Comment je fais pour attendre la fin de l'execution de la fonction Shellexecute ?

Car je fais l'impression sur une imprimante pdf en fait et l'impression n'est pas finie que le programme continue or je ne veux pas ça! je veux qu'il attende la fin de l'impression!
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
22 mars 2006 à 13:26
pourquoi ai-je l'impression d'écrire dans le vide :
http://www.codyx.org/snippet_ouvrir-document-lancer-executable_25.aspx


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
22 mars 2006 à 13:42
Désolé, on a dit écrire le post em même temps, je n'avais pas vu ta réponse :s

Etant débutant en C#, certaines choses simples pour certains me paraissent compliquées :(

Je ne vois pas comment utiliser ton exemple pour imprimer? Je vois que ça crée un process mais je ne vois pas quoi mettre dans comandes et paramètres!
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
22 mars 2006 à 13:44
quels sont les paramètres que tu passes à ShellExecute ?


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
22 mars 2006 à 13:59
à shell execute je passe:
ShellExecute(Handle, "print", filepath, null, null, 32);

(filepath étant le path du fichier)

à ton exemple je passe:
StartProcess(filepath, "print"); mais là, il m'ouvre le fichier à l'écran, il ne prend pas en charge le paramètre "print". Ou est mon erreur?
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
22 mars 2006 à 14:09
essaye plutot :
Process p = StartProcess("print", filepath);
p.WaitForExit();


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
22 mars 2006 à 15:09
là, il m'ouvre une fenêtre dos et m'écrit:

C:\setup.bmp is currently being printed

Le problème c'est que je ne vois pas ou est le fichier pdf au final!
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
22 mars 2006 à 15:16
essaye en spécifiant le nom de l'imprimante virtuelle.

Process p = StartProcess("print", "/D:NomImprimante " + filepath);


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Rejoignez-nous