Shortcut - raccourci - API

KOSA22 Messages postés 7 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 11 juillet 2006 - 23 juin 2004 à 22:02
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 - 24 juin 2004 à 03:16
Kob22 >:)

Bonsoir,

J'aimerais savoir par curiosité s'il existe une API qui permet de créer un raccourci. Je sais en créer un par appel shell, et ça ne me pose aucun problème, mais pour m'entrainer à manipuler les API Windows, je cherche à le faire par cette autre méthode si bien sûr elle est possible.
Bye et au plaisir.

3 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
23 juin 2004 à 22:38
Bonsoir,
Il doit sans doute y avoir qque chose ici mais g pas cherché car g ce qu'il faut. D'ailleurs, faut que je pense à le mettre en ligne un jour. Allez, c dit, j'en fait une version light demain et je le livre demain soir.

En attendant, g une indication pour toi :

http://www.mentalis.org/apilist/fCreateShellLink.shtml

Cordialement

CanisLupus
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
24 juin 2004 à 00:15
Salut KOSA22,
te voila servi en vrai API Windows mais bien entendu ce n'est pas en VB mais en C. Tu peux essayer de traduire en VB mais je crains que tu ne puisses pas aboutir, les acces directs a la memoire sont impraticables en VB.

int __stdcall CreateShortcut(char* szflSrc, char* szLink, char *szTooltip)
{
IShellLink* psl;
HANDLE hheap;
WORD* pwsz;
IPersistFile* ppf;
int bOK;
char *c, *d;
if(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID*) &psl)) return 0; hheap GetProcessHeap(); bOK 0; if((pwsz (WORD*) HeapAlloc(hheap, 0, MAX_PATH*2)) 0) goto outPsl;
if(psl->QueryInterface(IID_IPersistFile, (LPVOID *) &ppf)) goto outHeap;
psl->SetPath(szflSrc); psl->SetDescription(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->SetWorkingDirectory((char*) pwsz);
if(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szLink, -1, pwsz, MAX_PATH)) bOK (ppf->Save(pwsz, TRUE) 0);
ppf->Release();
outHeap: HeapFree(hheap, 0, pwsz);
outPsl: psl->Release();
return bOK;
}

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
24 juin 2004 à 03:16
Bonjour
... et en VB6, une source ICI
Code commenté.
Lire aussi les commentaires faits par des utilisateurs.
0