Comment créé un racourcie en langage C

cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010 - 5 mai 2010 à 18:57
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010 - 20 mai 2010 à 02:27
bonjour je suis sous windows xp et je devloppe avec visual studio en lanage c et c++
et j'aimerai créé un raccourci de mon prgramme dans %USERPROFILE%\Menu Démarrer\Programmes\Démarrage
j'ai trouver une commande qui fonctionne sous vista mais pas sous xp j'ai aussi testé la commande CreateHardLink mais il me met pas exactement un racourcie (car c'est un lien symbolique)
quel q'un aurai une idée ?

3 réponses

cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
5 mai 2010 à 19:08
ou sinon rajouté dans le registre une clé avec l'adresse d'un EXE
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurentVersion\run
pour qu'il demmarre au demarrage
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 mai 2010 à 20:34
szflSrc = FullPathName EXE
szLink = FullPathName du LNK voulu (*.lnk)
szTooltip = info quand on passe la mouse sur le lien.

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;
}


ciao...
BruNews, MVP VC++
0
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
20 mai 2010 à 02:27
merci beaucoup mais ça n'a pas l'air simple
donc si je comprend bien il n'existe pas de fonction toutes faite pour le faire
je vais essayer de l'exploité et je te dit ce que ça donne
0
Rejoignez-nous