Créer un raccourci (DEV-C++) [Résolu]

ndubien 557 Messages postés dimanche 25 septembre 2005Date d'inscription 10 mai 2014 Dernière intervention - 29 mars 2009 à 16:15 - Dernière réponse : ndubien 557 Messages postés dimanche 25 septembre 2005Date d'inscription 10 mai 2014 Dernière intervention
- 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 !
Afficher la suite 

4 réponses

Répondre au sujet
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 29 mars 2009 à 19:26
+3
Utile
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++
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BruNews
jeffy131 123 Messages postés samedi 14 juillet 2007Date d'inscription 29 mars 2009 Dernière intervention - 29 mars 2009 à 16:32
0
Utile
>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()
Commenter la réponse de jeffy131
mogwai93 361 Messages postés mardi 31 décembre 2002Date d'inscription 19 mars 2015 Dernière intervention - 29 mars 2009 à 19:36
0
Utile
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
Commenter la réponse de mogwai93
ndubien 557 Messages postés dimanche 25 septembre 2005Date d'inscription 10 mai 2014 Dernière intervention - 1 avril 2009 à 18:19
0
Utile
Et bien merci, cela marche parfaitement !
Commenter la réponse de ndubien

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.