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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
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
Rejoignez-nous