Je ne trouve pas la classe shellexecute!!

Signaler
Messages postés
76
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 mai 2006
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
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

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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#]
Messages postés
76
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 mai 2006

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?)
Messages postés
76
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 mai 2006

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!
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Montre ton bout de code

::|The S@ib|::
MVP C#.NET
Messages postés
76
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 mai 2006

ç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!
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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#]
Messages postés
76
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 mai 2006

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!
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
quels sont les paramètres que tu passes à ShellExecute ?


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Messages postés
76
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 mai 2006

à 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?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
essaye plutot :
Process p = StartProcess("print", filepath);
p.WaitForExit();


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Messages postés
76
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 mai 2006

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!
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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#]