Créer un raccourci (DEV-C++)

Résolu
ndubien
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
- 29 mars 2009 à 16:15
ndubien
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
- 1 avril 2009 à 18:19
Bonjour,

Cela fait un moment que je cherche une fonction permettant de créer un raccourci. Je l'ai trouvé mais impossible de la compiler sous DEV-C++: la fonction est celle donnée par Brunews http://www.cppfrance.com/forum/sujet-CREER-RACCOURCI_163166.aspx

Lorsque je compile j'obtiens ceci:

Fichiers.h:57: error: incompatible type for argument 1 of `CoCreateInstance'

Fichiers.h:57: error: incompatible type for argument 4 of `CoCreateInstance'

Fichiers.h:60: error: structure has no member named `QueryInterface'

Fichiers.h:61: error: structure has no member named `SetPath'

Fichiers.h:61: error: structure has no member named `SetDescription'

Fichiers.h:68: error: structure has no member named `SetWorkingDirectory'

Fichiers.h:70: error: structure has no member named `Save'

Fichiers.h:71: error: structure has no member named `Release'

Fichiers.h:73: error: structure has no member named `Release'

Quelqu'un sait-il comment faire pour réussir à le compiler ?

Merci d'avance pour vos réponses !

A bientôt !

4 réponses

BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
29 mars 2009 à 19:26
CreateLink(), inconnu dans MSDN.
Tes éternelles NON réponses fatiguent tout le monde et provoquent une perte de temps à celui qui reçoit une alerte mail cppfrance pour rien.
Il convient donc de mettre un terme à ce qui a déjà trop duré alors qu'on t'avait demandé de cesser.

ndubien:
Si tu compiles en C, essaie ceci:
int __stdcall CreateShortcut(char* szflSrc, char* szLink, char *szTooltip)
{
  IShellLink* psl;
  HANDLE hheap;
  WORD* pwsz;
  IPersistFile* ppf;
  int bOK;
  char *c, *d;
  if(CoCreateInstance((const IID*) &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
                               (const IID*) &IID_IShellLink, (LPVOID*) &psl)) return 0;  hheap GetProcessHeap(); bOK 0;  if((pwsz (WORD*) HeapAlloc(hheap, 0, MAX_PATH*2)) 0) goto outPsl;
  if(psl->lpVtbl->QueryInterface(psl, (const IID*) &IID_IPersistFile, (LPVOID*) &ppf)) goto outHeap;
  psl->lpVtbl->SetPath(psl, szflSrc);
  psl->lpVtbl->SetDescription(psl, szTooltip);  d (char*) pwsz; c szflSrc;
  while(*d = *c++) d++;
  bOK = 0;
  while((*d != '\\') && (d > (char*) pwsz)) d--;
  if(d <= (char*) pwsz) goto outHeap;
  *d = 0;
  psl->lpVtbl->SetWorkingDirectory(psl, (char*) pwsz);
  if(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szLink, -1, pwsz, MAX_PATH))      bOK (ppf->lpVtbl->Save(ppf, pwsz, TRUE) 0);
  ppf->lpVtbl->Release(ppf);
outHeap: HeapFree(hheap, 0, pwsz);
outPsl: psl->lpVtbl->Release(psl);
  return bOK;
}

void TesterShortcut(VOID)
{
  char buf[300];
 
  CoInitialize(0);
 
  GetModuleFileName(0, buf, MAX_PATH);
  if(!CreateShortcut(buf, "D:\\aa.lnk", "UN TEST"))
    MessageBox(0, "Shortcut raté", szappname, MB_ICONEXCLAMATION);
 
  CoUninitialize();
}

ciao...
BruNews, MVP VC++
3
jeffy131
Messages postés
123
Date d'inscription
samedi 14 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2009
1
29 mars 2009 à 16:32
>Cela fait un moment que je cherche une fonction permettant de créer un raccourci.

Toujours voir les fonctions originales sur MSDN, jamais les copies.
Ca fait 15 ans qu'elle est dans MSDN et autant de temps qu'elle est postée sur Google Groups (programmation windows, Win32)!

: donc : CreateLink()
1
mogwai93
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

29 mars 2009 à 19:36
J'ai réussi à compiler et à exécuter
le lien créé est correct aussi

J'ai été seulement obligé de rajouter (WCHAR*)

if(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szLink, -1, (WCHAR*)pwsz, MAX_PATH))bOK (ppf->Save((WCHAR*)pwsz, TRUE) 0);

et de linker avec
libole32.a
libuuid.a

testé avec DevC++ 4.9.9.2
il est vrai que j'ai mis à jour gcc  il y a plusieurs mois
0
ndubien
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
4
1 avril 2009 à 18:19
Et bien merci, cela marche parfaitement !
0