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++