Blème compil raccourci

Signaler
Messages postés
868
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
26 février 2008
-
Messages postés
44
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
6 mars 2009
-
Bonjour,
J'ai chopé un code pour faire des raccourcis, je l'ai un peu modifié et j'ai essayé de le compiler et là, il me met une trentaine d'erreurs.
Voici le code :
#include <windows.h>
#include <shlobj.h>
#include <commdlg.h>


void main(){


char buffer[MAX_PATH];
int destination=CSIDL_DESKTOP;
char* path = "C:\\EditorMAX.exe";


CoInitialize(NULL);
IShellLink* psl;
HRESULT res = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
if (SUCCEEDED(res))
{
IPersistFile* ppf;
psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
SHGetSpecialFolderPath(0,buffer,destination,0);
strcat(buffer,"\\raccourci.lnk");
psl->SetPath(path);
WORD chaine[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0,buffer, -1,(LPWSTR)chaine, MAX_PATH);
ppf->Save((LPWSTR)chaine, 1);
ppf->Release();
}
psl->Release();
CoUninitialize();
}

Je pense que c'est à cause d'un des include mais ça pourrait être aussi une méga faute dans le code...
J'utilise Dev C++.
Si vous trouvez le blème...
Merci par avance.
@++

8 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
10
Regarde si tu compiles bien en C++ et pas en C
Messages postés
868
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
26 février 2008
1
Bé oui, je compile bien en C++ mais ça me met une trentaine de fautes .
Messages postés
99
Date d'inscription
vendredi 24 juin 2005
Statut
Membre
Dernière intervention
17 septembre 2005

Quand je compile ton code sous devcpp il me dit que main doit retourner un int

Sinon je ne trouve que 3 erreurs

Compilateur: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Exécution de make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe -c debug1.cpp -o debug1.o


debug1.cpp:5: error: `main' must return `int'


debug1.cpp: In function `int main(...)':
debug1.cpp:18: error: `SHGetSpecialFolderPath' undeclared (first use this function)
debug1.cpp:18: error: (Each undeclared identifier is reported only once for each function it appears in.)


make.exe: *** [debug1.o] Error 1


Exécution terminée
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
10
#define _WIN32_IE 0x0400

#include <windows.h>
#include <shlobj.h>
#include <commdlg.h>

int main(){

char buffer[MAX_PATH];
int destination=CSIDL_DESKTOP;
char* path = "C:\\EditorMAX.exe";

CoInitialize(NULL);
IShellLink* psl;
HRESULT res = CoCreateInstance(CLSID_ShellLink, NULL,

CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
if (SUCCEEDED(res))
{
IPersistFile* ppf;
psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
SHGetSpecialFolderPath(0,buffer,destination,0);
strcat(buffer,"\\raccourci.lnk");
psl->SetPath(path);
WORD chaine[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0,buffer, -1,(LPWSTR)chaine, MAX_PATH);
ppf->Save((LPWSTR)chaine, 1);
ppf->Release();
}
psl->Release();
CoUninitialize();
}

El la ligne de commande:
g++ rac.cpp -luuid -lole32 -o rac.exe
Messages postés
868
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
26 février 2008
1
J'ai l'impression qu'il ne veut rien savoir, toujours ces 31 erreurs.
Voici ce qui me dit :
Unit :
c:\dev-c_~1\include\objbase.h
Message :
from C:\DEV-C_~1\Include\ole2.h:5,

Unit :
c:\dev-c_~1\include\shlobj.h
Message :
from c:\documents and settings\xp home\bureau\untitled1.cpp:4:

Unit :
c:\dev-c_~1\include\unknwn.h
Message :
`com_interface' only supported with -fvtable-thunks

Unit :
c:\dev-c_~1\include\unknwn.h
Message :
warning:`com_interface' attribute directive ignored

Ces deux dernières erreurs se répètent...

Je suis bien sous C++ et Windows.
@++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
10
Si tu compiles avec ma ligne de commande?
Messages postés
868
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
26 février 2008
1
Je vais regarder.
@++
Messages postés
44
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
6 mars 2009

Bonjour,

Le code de vecchio56 fonctionne bien.
J'utilise DEV-CPP.
J'ai mis "STARTUP" pour avoir le raccourci dans démarrage.
Par contre, je n'arrive pas à le supprimer si je ne connaît pas le nom de la session.
Je mets par exemple :
DeleteFile("C:\\Documents and Settings\\CurrentUser(si je mets ici le nom de ma session, ça marche)\\Menu Démarrer\\Programmes\\Démarrage\\rac avec timer.lnk");

Si vous pouviez m'aider, merci.
A+