Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 16-10-2007 10:17:10

chet_92  
Membre
Date d'inscription: 24-05-2006
Messages: 13
Pépites: 181
Banque: 198,917,315,010

API ShellExecute

ll_Result = ShellExecute(0, "open", ls_Exe, "toto.xls", '', 1)
j'ai un code retour  ll_Result = 42 qui n'est pas une erreur, mais le doc ne peux s'ouvrir.
quelqu'un a-t-il rencontré ce problème avec cet API ?

Hors ligne

 

#2 16-10-2007 10:50:59

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: API ShellExecute

Salut

c'est pas un probleme de declaration ?

Tu peux essayer avec :

Code: pb

Public Function long ShellExecuteA (ulong hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, long nShowCmd) library "shell32.dll" alias for "ShellExecuteA;Ansi"


Code: pb

ls_mail = 'hotline@JCZ.com'
SetNull (ls_Null)
ll_return = ShellExecuteA (0, ls_Null, "mailto:" + ls_mail , ls_Null, ls_Null, 1)

Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#3 16-10-2007 23:13:24

chet_92  
Membre
Date d'inscription: 24-05-2006
Messages: 13
Pépites: 181
Banque: 198,917,315,010

Re: API ShellExecute

Desolé , j'ai tjrs le code retour = 42 avec message (impossible d'acceder au ficher toto.xls)

Hors ligne

 

#4 17-10-2007 06:34:33

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4659
Pépites: 945
Banque: 2,147,483,647
Site web

Re: API ShellExecute

le fichier toto.Xls n'est pas corrompu ?

sinon, essayes avec   le 3, ou le 5  à la fin.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#5 30-10-2007 10:34:25

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: API ShellExecute

JCZ a écrit:

Salut

c'est pas un probleme de declaration ?

Tu peux essayer avec :

Code: pb

Public Function long ShellExecuteA (ulong hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, long nShowCmd) library "shell32.dll" alias for "ShellExecuteA;Ansi"


Code: pb

ls_mail = 'hotline@JCZ.com'
SetNull (ls_Null)
ll_return = ShellExecuteA (0, ls_Null, "mailto:" + ls_mail , ls_Null, ls_Null, 1)

Bonjour,

Pour ma part j'utilsie les fonctions suivantes :

Code: pb

//////////////////////////////////////////////////////////////////////////////
//LANCEMENT D'UNE COMMANDE SHELL SUR UN FICHIER DONNE
//Renvoi : une valeur < 32 si erreur
//         si ab_Wait=true alors on renvoie le handle de la fenêtre ouverte
//         sinon on renvoie le handle du process de l'application
//////////////////////////////////////////////////////////////////////////////
CONSTANT long SW_NORMAL = 1
CONSTANT long SEE_MASK_NOCLOSEPROCESS = 64
CONSTANT long INFINITE = 4294967295 //&HFFFFFFFF

string            ls_Class
long              ll_ret
long              ll_Handle
struc_shellexecuteinfo   lstruc_shellexecuteinfo

lstruc_shellexecuteinfo.cbsize = 60
lstruc_shellexecuteinfo.fMask = SEE_MASK_NOCLOSEPROCESS // Ne ferme pas le process
lstruc_shellexecuteinfo.lpVerb = as_commande
lstruc_shellexecuteinfo.lpParameters = as_Parametres
lstruc_shellexecuteinfo.lpfile = as_fichier
lstruc_shellexecuteinfo.lpClass = ls_class
lstruc_shellexecuteinfo.nShow = SW_NORMAL

ll_ret = ShellExecuteEx(lstruc_shellexecuteinfo)
IF ll_ret = 0 THEN
  //Erreur lors du lancement
   RETURN lstruc_shellexecuteinfo.hInstapp
END IF

//Vérifie si on souhaite attendre l'ouverture de l'application pour continuer
if ab_Wait then
  //Attend que l'application lancée reprenne la main et soit prete a être utilisée
  WaitForInputIdle(lstruc_shellexecuteinfo.hprocess, INFINITE)
  
  //Récupération du handle de la fenêtre se trouvant au premier plan (celle-ci doit être la fenêtre de l'application)
  ll_Handle = GetForegroundWindow()
  
  //Récupère le parent de la fenêtre récupérée pour que l'on soit sûr d'avoir la fenêtre Main de l'application
  ll_Handle=of_GetParent(ll_Handle)
  
  return ll_Handle
end if

//Retourne le handle du process
return lstruc_shellexecuteinfo.hProcess

avec el Local External Functions 

FUNCTION long ShellExecuteA( ulong hWnd, string Operation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd ) LIBRARY "shell32.dll"
FUNCTION long ShellExecuteEx(REF struc_shellexecuteinfo lpExecInfo) LIBRARY "shell32.dll" ALIAS FOR ShellExecuteExA
Function ulong WaitForInputIdle (ulong hProcess, ulong dwMilliseconds) Library "USER32.DLL"


Et celà fonctionne bien.


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22