C++ et Shellapi.h===>pb de compilation

C++ et Shellapi.h===>pb de compilation - Programmation

Marsh Posté le 27-07-2001 à 10:03:59    

Alut les jeunes!!!!!
 
Bon mon blem est simple j'ai un programme en C++ et je veux lancer un point batch à partir de ce programme.Pour celà je met Shellapi.h plus Shellexecute et à la compil Monsieur me fait une erreur de compilation ds Shellapi.h!!!!!!!
 
QQ peut m'aider en m'expliquant pq??.
 
je mets le code :
 
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <Shellapi.h>
 
char main()
{
 
/*Pointe sur le win.ini*/
FILE *par_file;
 
/* Chemin du dossier ou il y les images*/
char path[30]="C:/Mes documents/fond.txt";
char line[10];
 
int cpt=0;
int hasard=0;
long pos=0;
srand( (unsigned)time( NULL ) );
hasard=rand();
while(hasard>=8)
{
printf( "  %6d\n", hasard );
hasard=(rand());
}
printf( "  %6d\n", hasard );
/*Lit le premier mot et initialise line*/
  if( fgets( line, 10, par_file ) == NULL)
   printf( "fgets error\n" );
  else
   printf( "%s", line);
 
/*Boucle permettant le parcour du fichier*/
  for(cpt=0;cpt<hasard;cpt++)
  {
  if(!feof(par_file))
  {  pos=ftell(par_file);
     if( fgets( line, 100, par_file )== NULL)
      printf( "fgets error\n" );
    else
    {     printf( "%s", line);
       printf("%s","cpt vaut\n" );
       printf("%x",cpt);
    }
  }
  }
 if(fseek( par_file,pos,SEEK_SET )==0)
 printf("Le curseur est positionne devant la ligne\n" );
 else printf("Erreur impossible de positionner le curseur\n" );
 
if (cpt==hasard)
  {
  printf("pff\n" );
   fgets( line, 100, par_file);
     printf( "%s", line);
     ShellExecute(0, NULL, "c:/windows/bureau/moi.bat", NULL, NULL, SW_NORMAL);
  }
 
/*Ferme Win.ini*/
if( fclose( par_file ) )
  printf( "The file 'data' was not closed\n" );
else printf( "The file 'data' was closed\n" );
 
return(0);
}

Reply

Marsh Posté le 27-07-2001 à 10:03:59   

Reply

Marsh Posté le 27-07-2001 à 10:09:12    

Le libélé de l'erreur serait d'une aide précieuse... ;)

Reply

Marsh Posté le 27-07-2001 à 10:14:22    

Une remarque :

Code :
  1. hasard=rand();
  2. while(hasard>=8)
  3. {
  4. printf( "  %6d\n", hasard );
  5. hasard=(rand());
  6. }


T'es jamais sûr de sortir de ta boucle :D


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 27-07-2001 à 10:23:45    

instantdharma a écrit a écrit :

Une remarque :

Code :
  1. hasard=rand();
  2. while(hasard>=8)
  3. {
  4. printf( "  %6d\n", hasard );
  5. hasard=(rand());
  6. }


T'es jamais sûr de sortir de ta boucle :D  
 
desolé mais j en sors des que rand() me donne un chiffre inférieur à 8 :)))))))))))))))))



Reply

Marsh Posté le 27-07-2001 à 11:07:25    

Dans les shellexecute, faudrait pas mettre
"c:\\windows\\bureau\\moi.bat" avec des anti-slashs (\) et pas des slashs normaux (/" ) ?  :??:

Reply

Marsh Posté le 27-07-2001 à 11:12:15    

blondin a écrit  

Citation :


desolé mais j en sors des que rand() me donne un chiffre inférieur à 8


C'est indéniable, mais ta fonction rand renvoie un nombre pris au hasard, et rien ne te garantit que tu obtiendras un jour un nombre inférieur à 8. Tu sortiras donc de ta boucle par hasard :D et tu testeras la suite du programme par hasard :D  

Citation :


 :D Jamais un coup de rand() n'abolira le hasard  :D  


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 27-07-2001 à 12:49:41    

:D  
Ca m'interpelle quelque part, ta boucle à sortie aléatoire...
D'abord, ta fonction rand(), elle renvoie un nombre compris dans quelles bornes ?
Supposons que cette fonction te renvoie un nombre compris entre 0 et N.
La probabilité de sortie de la boucle est de (N-8)/N à chque itération.... :D  
J'avais entendu parler de la logique floue, mais pas des boucles floues... :D un concept novateur s'il en est :D (polémique)


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 27-07-2001 à 14:23:03    

voici ce que me dit le compilateur
 
c:\program files\microsoft visual studio\vc98\include\shellapi.h(53) : error C2065: 'HDROP' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\shellapi.h(53) : error C2501: 'DECLARE_HANDLE' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\shellapi.h(55) : error C2146: syntax error : missing ';' before identifier 'UINT'
c:\program files\microsoft visual studio\vc98\include\shellapi.h(55) : error C2501: 'DECLSPEC_IMPORT' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\shellapi.h(55) : fatal error C1004: unexpected end of file found
 
 
Et pour la boucle rand() elle n'a jamais boucler à l'infini....

Reply

Marsh Posté le 27-07-2001 à 14:40:38    

je pense qu'un #include "windows.h" avant shellexecute ne serait pas de trop ...

Reply

Marsh Posté le 27-07-2001 à 15:05:27    

Je pense la même chose, 'UINT' est un type de base de windows qui est inclus des que l'on met windows.h

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed