ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

ShellExecute   



L'auteur

ybenam
Algérie Algérie
Membre Simple
# 0000002080
enregistré le 21/04/2008


Fiche personnelle


Note des membres
pas de note

Contributions > 05 - API et appels systèmes

ShellExecute
# 0000000583
ajouté le 22/05/2008 16:36:28 et modifié le 22/05/2008
consulté 9668 fois
Niveau débutant

Version(s) Foxpro :
VFP 6.0

Description
La fonction ShellExecute de l'API Windows permet d'ouvrir (Open) ou d'imprimer (Print) un fichier dont l'extension est connue de l'explorateur de Windows(appelée communément association de fichiers ), sans avoir à spécifier l'application qui l'a créé...On peut en particulier programmer le type de fenêtre d'affichage.Elle peut aussi jouer le rôle de l'explorateur Windows. L'aide détaillée est intégrée au programme sous form de page Web(Exécuter le programme). Il faut préciser l'importance de cette fonction dans la programmation. benameuryousfi1@gmail.com
Code source :
DECLARE INTEGER ShellExecute IN shell32.dll ;
  INTEGER hndWin, STRING cAction, STRING cFileName, ;
  STRING cParams, STRING cDir, INTEGER nShowWin

afile=getfile()
if not empty(afile)
ShellExecute(0,"open",afile,"","",3)       &&fenêtre agrandie
endi
*Valeurs de nShowWin
*SW_HIDE EQUATE(0) Cache la fenêtre spécifiée, et active une autre fenêtre.
*SW_SHOWNORMAL EQUATE(1) Active et affiche la fenêtre, en la restaurant à sa position et à sa taille normale. Utilisé en général pour le premier affichage d'une fenêtre.
*SW_NORMAL EQUATE(1)
*SW_SHOWMINIMIZED EQUATE(2) Active la fenêtre et la réduit.
*SW_SHOWMAXIMIZED EQUATE(3) Active la fenêtre, et l'agrandit.
*SW_MAXIMIZE  EQUATE(3) Agrandit la fenêtre spécifiée.
*SW_SHOWNOACTIVATE EQUATE(4) Affiche la fenêtre à sa taille et position les plus récentes, la fenêtre active reste active.
*SW_SHOW EQUATE(5) Active la fenêtre et l'affiche à sa taille et position précédente
*SW_MINIMIZE EQUATE(6) Réduit la fenêtre spécifiée et active la fenêtre de niveau supérieur suivante.
*SW_SHOWMINNOACTIVE EQUATE(7) Réduit la fenêtre, la fenêtre active reste active.
*SW_SHOWNA EQUATE(8) Affiche la fenêtre dans son état actuel, la fenêtre active reste active.
*SW_RESTORE EQUATE(9) Active la fenêtre et restaure son affichage à sa taille et position précédente.
*SW_SHOWDEFAULT EQUATE(10) Restaure les paramètres par défaut de la fenêtre, lors de sa création.
*SW_MAX EQUATE(10)
if messagebox("Afficher laide de Shellexecute ?",4+32,"help")=6
afile="c:\windows\temp\yshellexecute.html"
set textmerge on to &afile noshow
text

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>API ShellExecute</title>
</head>

<body bgcolor="#C0C0C0">
<div align="center">
  <center>
  <table border="4" cellpadding="0" cellspacing="0" height="14" width="323">
    <tr>
      <td height="12" width="273">
  <p align="center"><strong><span style="background-color: #00FF00"><font size="6" color="#FF0000">API
  ShellExecute</font> </span></strong></p>
      </td>
      <td height="12" width="38"><a href="" onclick="javascript:window.close();return false;">
<input type="button" value="X" name="ybouton" style="color: #FF0000"></a></td>
    </tr>
  </table>
  </center>
</div>

<blockquote>
  <hr>
  <div align="center">
    <center>
    <table border="4" cellpadding="0" cellspacing="0">
      <tr>
        <td>La fonction ShellExecute de l'API Windows vous permet d'ouvrir ou
          d'imprimer un fichier dont l'extension est connue de l'explorateur de
Windows, sans avoir à spécifier l'
application qui l'a créé...
<p>Voici le prototype de cette fonction:<br>
<br>
<font size="3"><strong>ShellExecute</strong>(HWND <strong>HandleFenetre</strong>,
          *LPCSTR <strong>plOperation</strong>,*LPCSTR <strong>plFichier</strong>,
          *LPCSTR <strong>plParametres</strong>, *LPCSTR <strong>plDossier</strong>,
SIGNED <strong>plCommandeAffichage</strong>), HINSTANCE <strong>RetVal</strong><br>
</font><font face="Courier New" size="2"><br>
</font><font size="3"><strong>HandleFenetre</strong></font> est le
handle de la fenêtre parente (celle ou l'
on va exécuter la fonction
          ShellExecute()), il s'agit de la valeur retournée par ma_fenetre<br>
<br>
<strong>plOperation</strong> est un pointeur sur une chaîne de caractères
terminée par un zéro binaire (CSTRING), qui contient l'
opération à
          effectuer:<br>
          <span style="background-color: #00FF00">'open' ouvre le fichier  </span><br>
          <span style="background-color: #00FF00">'print' imprime le fichier<br>
          </span><br>
          <strong>plFichier </strong>est un pointeur sur une chaîne de caractères
          terminée par un zéro binaire (CSTRING), qui contient le nom du
          fichier que l'on veut ouvrir ou imprimer grâce à ShellExecute().<br>
<br>
<strong>plParametres</strong> est un pointeur sur une chaîne de
caractères terminée par un zéro binaire (CSTRING), qui contient les
paramètres que l'
on veut passer à l'application qui ouvre ou imprime
le fichier.<br>
<br>
<strong>plDossier </strong>est un pointeur sur une chaîne de caractères
terminée par un zéro binaire (CSTRING), qui contient le nom du
dossier par défaut.<br>
<br>
<strong>plCommandeAffichage</strong> est un nombre qui correspond à
la méthode d'
affichage du fichier choisi.</p>
          <table border="0">
            <tbody>
              <tr>
                <td vAlign="top"><font face="Courier New" size="2">SW_HIDE</font></td>
                <td vAlign="top"><font face="Courier New" size="2">(0)</font></td>
                <td vAlign="top">Cache la fenêtre spécifiée, et active une
                  autre fenêtre.</td>
              </tr>
              <tr>
                <td vAlign="top"><font face="Courier New" size="2"><span style="background-color: #00FF00">SW_SHOWNORMAL</span></font></td>
                <td vAlign="top"><font face="Courier New" size="2">(1)</font></td>
                <td vAlign="top">Active et affiche la fenêtre, en la restaurant
                  à sa position et à sa taille normale. Utilisé en général
                  pour le premier affichage d'une fenêtre.</td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2">SW_NORMAL</font></td>
<td vAlign="top"><font face="Courier New" size="2">(1)</font></td>
<td vAlign="top"> </td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2">SW_SHOWMINIMIZED</font></td>
<td vAlign="top"><font face="Courier New" size="2">(2)</font></td>
<td vAlign="top">Active la fenêtre et la réduit.</td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2"><span style="background-color: #00FF00">SW_SHOWMAXIMIZED</span></font></td>
<td vAlign="top"><font face="Courier New" size="2">(3)</font></td>
<td vAlign="top">Active la fenêtre, et l'
agrandit.</td>
              </tr>
              <tr>
                <td vAlign="top"><font face="Courier New" size="2">SW_MAXIMIZE</font></td>
                <td vAlign="top"><font face="Courier New" size="2">(3)</font></td>
                <td vAlign="top">Agrandit la fenêtre spécifiée.</td>
              </tr>
              <tr>
                <td vAlign="top"><font face="Courier New" size="2">SW_SHOWNOACTIVATE</font></td>
                <td vAlign="top"><font face="Courier New" size="2">(4)</font></td>
                <td vAlign="top">Affiche la fenêtre à sa taille et position
                  les plus récentes, la fenêtre active reste active.</td>
              </tr>
              <tr>
                <td vAlign="top"><font face="Courier New" size="2">SW_SHOW</font></td>
                <td vAlign="top"><font face="Courier New" size="2">(5)</font></td>
                <td vAlign="top">Active la fenêtre et l'affiche à sa taille et
position précédente</td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2"><span style="background-color: #00FF00">SW_MINIMIZE</span></font></td>
<td vAlign="top"><font face="Courier New" size="2">(6)</font></td>
<td vAlign="top">Réduit la fenêtre spécifiée et active la
fenêtre de niveau supérieur suivante.</td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2">SW_SHOWMINNOACTIVE</font></td>
<td vAlign="top"><font face="Courier New" size="2">(7)</font></td>
<td vAlign="top">Réduit la fenêtre, la fenêtre active reste
active.</td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2">SW_SHOWNA</font></td>
<td vAlign="top"><font face="Courier New" size="2">(8)</font></td>
<td vAlign="top">Affiche la fenêtre dans son état actuel, la
fenêtre active reste active.</td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2">SW_RESTORE</font></td>
<td vAlign="top"><font face="Courier New" size="2">(9)</font></td>
<td vAlign="top">Active la fenêtre et restaure son affichage à
sa taille et position précédente.</td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2">SW_SHOWDEFAULT</font></td>
<td vAlign="top"><font face="Courier New" size="2">(10)</font></td>
<td vAlign="top">Restaure les paramètres par défaut de la fenêtre,
lors de sa création.</td>
</tr>
<tr>
<td vAlign="top"><font face="Courier New" size="2">SW_MAX</font></td>
<td vAlign="top"><font face="Courier New" size="2">(10)</font></td>
<td vAlign="top"> </td>
</tr>
</tbody>
</table>
<p><strong>RetVal</strong> est la valeur de retour de la fonction. Si
tout s'
est bien passé, RetVal contient le handle de l'instance de
l'
application exécutée ou le handle d'un serveur DDE. Si une erreur
est survenue lors de l'
exécution de la fonction, RetVal contient un
          code d'erreur, nombre allant de 0 (zéro) à 32 (trente-deux).<br>
<br>
Les différentes valeurs et significations de ces codes d'
erreur sont
          les suivantes:</p>
          <table border="0">
            <tbody>
              <tr>
                <td vAlign="top">0</td>
                <td vAlign="top">Le système manque de mémoire ou de
                  ressources, l'exécutable est corrompu ou.réallocations non
valides.</td>
</tr>
<tr>
<td vAlign="top">2</td>
<td vAlign="top">Fichier non trouvé.</td>
</tr>
<tr>
<td vAlign="top">3</td>
<td vAlign="top">Chemin non trouvé.</td>
</tr>
<tr>
<td vAlign="top">5</td>
<td vAlign="top">Une tentative a été faite pour se lier
dynamiquement à une tache, ou il y a eu une erreur de partage
ou de protection réseau.</td>
</tr>
<tr>
<td vAlign="top">6</td>
<td vAlign="top">La librairie requiert des segments de données
séparés pour chaque tâche.</td>
</tr>
<tr>
<td vAlign="top">8</td>
<td vAlign="top">Il n'
y a pas assez de mémoire disponible pour
                  lancer l'application.</td>
</tr>
<tr>
<td vAlign="top">10</td>
<td vAlign="top">Version de Windows incorrecte.</td>
</tr>
<tr>
<td vAlign="top">11</td>
<td vAlign="top">Le fichier executable n'
est pas correct, il se
                  peut que ce ne soit pas une application Windows, ou qu'il y
ait une erreur dans le fichier .EXE;</td>
</tr>
<tr>
<td vAlign="top">12</td>
<td vAlign="top">L'
application a été conçue pour un autre
                  système d'exploitation.</td>
</tr>
<tr>
<td vAlign="top">13</td>
<td vAlign="top">L'
application a été conçue pour MS-DOS 4.0.</td>
              </tr>
              <tr>
                <td vAlign="top">14</td>
                <td vAlign="top">Le type de fichier executable est inconnu.</td>
              </tr>
              <tr>
                <td vAlign="top">15</td>
                <td vAlign="top">Tentative de chargement d'une application en
mode réel.</td>
</tr>
<tr>
<td vAlign="top">16</td>
<td vAlign="top">Tentative de charger une seconde instance d'
un
                  fichier exécutable contenant plusieurs segments de données
                  qui ne sont pas marqués en lecture seule.</td>
              </tr>
              <tr>
                <td vAlign="top">19</td>
                <td vAlign="top">Tentative de charger un fichier exécutable
                  compressé, le fichier doit être décompressé avant d'être
chargé.</td>
</tr>
<tr>
<td vAlign="top">20</td>
<td vAlign="top">Fichier de librairie liée dynamiquement (DLL)
incorrect, une des DLLs requise pour exécuter cette
application est corrompue.</td>
</tr>
<tr>
<td vAlign="top">21</td>
<td vAlign="top">L'
application requiert les extensions Microsoft
                  Windows 32-bit.</td>
              </tr>
              <tr>
                <td vAlign="top">31</td>
                <td vAlign="top">Il n'y a pas d'association pour le type de
                  fichier spécifié, ou il n'y a pas d'association pour
                  l'action choisie pour le type de fichier choisi.</td>
</tr>
</tbody>
</table>
<p> </td>
</tr>
</table>
</center>
</div>
</blockquote>
<blockquote>
<p> </p>
<blockquote>
<hr>
<div align="center">
<center>
<table border="4" cellpadding="0" cellspacing="0">
<tr>
<td><strong><u>Remarques:</u></strong><br>
Le fichier spécifié par le paramètre plFichier peut être un
document ou un exécutable. Si le fichier est un document, la
fonction ShellExecute l'
ouvre ou l'imprime en fonction de la valeur
de plOperation. Si le fichier est un exécutable, la fonction
ShellExecute l'
ouvre même si plOperation spécifiait l'impression.<br>
<br>
<strong><u>Windows 95</u></strong>: Vous pouvez utiliser
ShellExecute pour ouvrir ou explorer un dossier de Windows 95. Pour
ouvrir un dossier, vous pouvez utiliser l'
un ou l'autre de ces
appels:<br>
<br>
<span style="background-color: #00FF00">ShellExecute(handle, NULL,
"Chemin_du_dossier", NULL, NULL, SW_SHOWNORMAL);<br>
</span>ou<br>
<span style="background-color: #00FF00">ShellExecute(handle,
"open", "Chemin_du_dossier", NULL, NULL,
SW_SHOWNORMAL);<br>
</span><br>
Pour explorer un dossier, utilisez l'
appel suivantl:<br>
            <br>
            <span style="background-color: #00FF00">ShellExecute(handle,
            "explore""Chemin_du_dossier"NULLNULL,
            SW_SHOWNORMAL);<br>
            </span><br>
            Si plOperation est NULL, la fonction ouvre le fichier spécifié par
            plFichier. Si plOperation est "open" ou
            "explore", la fonction va forcer l'ouverture d'une fenêtre
            ou de l'explorateur.
<p> </td>
</tr>
</table>
</center>
</div>
</blockquote>
<hr>
<p><br>
</p>
</blockquote>

</body>

</html>
endtext
set textmerge to
***********************
apIE=createObject("internetexplorer.application")
apIE.navigate(afile)
with apIE
.fullscreen=.t.
endwith
do while apIE.busy or apIE.readyState<>4
enddo
apIE.visible=.t.
if messagebox("raser le fichier d'
aide "+afile+" ?",4+32,"Nettoyage")=6
set safe off
dele file &afile
endi


endi


Commentaires
Aucun commentaire enregistré ...

Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3