IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Créer un raccourci, pb d'adaptation de code de VC++ à C


Sujet :

Windows

  1. #21
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Malgré les modifs, rien ne change, le raccourci: test2.ink ne pointe vers rien du tout, lorsque l'on clique dessus, il demande avec quel prog le lancer !

    Pourtant: chemin[]="C:\\WINDOWS\\explorer.exe"

    est ce que hres = psl->lpVtbl->SetPath(psl,szSourcePath); fait bien son travail ?

    J'ai essayé de verifier si il passe dans les conditions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    void AddInStartupGrp(LPSTR szShortcutFile,LPSTR szSourcePath) {
        HRESULT hres;
        IShellLink *psl;
        TCHAR LNKpath[MAX_PATH]; //char LNKpath[MAX_PATH];
        WCHAR wsLNKpath[MAX_PATH];
        LPITEMIDLIST pItemIDlist;
        
        CoInitialize(NULL); // Initialisez COM
        SHGetSpecialFolderLocation(NULL,CSIDL_STARTUP,&pItemIDlist);
        //SHGetPathFromIDList(pItemIDlist,LNKpath);
        if (FAILED(SHGetFolderPath(NULL,CSIDL_STARTUP,NULL,0,LNKpath))) { 
            exit; // échec 
        }
        strcat(LNKpath,"\\");
        strcat(LNKpath,szShortcutFile);
        strcat(LNKpath,".ink");
        //free(pItemIDlist); // Libère la variable
        
        hres = CoCreateInstance(&CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,&IID_IShellLink,(void **)&psl);
        if (SUCCEEDED (hres)) {
            IPersistFile *ppf;
            hres = psl->lpVtbl->QueryInterface(psl,&IID_IPersistFile,(void **)&ppf);
            if (SUCCEEDED (hres)){
                hres = psl->lpVtbl->SetPath(psl,szSourcePath);
                printf("1 - %s - %s\n",hres,psl);   
                MultiByteToWideChar(CP_ACP,0,LNKpath,-1,wsLNKpath,MAX_PATH);
                hres = ppf->lpVtbl->Save(ppf,wsLNKpath,FALSE);
                ppf->lpVtbl->Release(ppf);
                printf("2 - %s - %s\n",hres,ppf);   
                system("Pause");   
            } else {
                system("echo Erreur 1");   
                system("Pause");   
            }
        } else {
          system("echo Erreur 2");   
          system("Pause");   
        }
        psl->lpVtbl->Release (psl);
        CoUninitialize(); // Liberer COM
    }
    Mais tout a l'air de s'executer correctement, il passe bien dans les bonnes conditions.

    Par contre, la variable hres est toujours à NULL dans 1 et 2 (contrairement à psl et ppf qui contiennent bien qq chose).

  2. #22
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Le problème est peut être là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hres = ppf->lpVtbl->Save(ppf,wsLNKpath,FALSE);
    essaye voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hres = ppf->lpVtbl->Save(psl,wsLNKpath,FALSE);
    hres ne vaut pas NULL mais S_OK, ce qui veut dire que c'est bon.
    Au passage, c'est "lnk" et pas "ink" l'extension d'un racourci.

  3. #23
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    IMPECCABLE !!!

    Ca marche

    C'était bien l'extension du lien qui était erronnée (logique: lnk comme link)

    Par contre, hres = ppf->lpVtbl->Save(psl,wsLNKpath,FALSE); plante car le paramètre n'est pas du bon type.

    BON, MAINTENANT J'AIMERAIS FAIRE CLIGNOTER CE LIEN !

    Merci à vous, Meci pour votre acharnement et bonne journée !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Code pour créer un raccourci
    Par Admirall dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/07/2013, 19h16
  2. Est-il possible de crer un raccourci vers un reperoire ???
    Par Florina dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/12/2005, 09h33
  3. [c#]Créer un raccourcie clavier
    Par reptils dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/10/2005, 15h44
  4. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/08/2005, 23h43
  5. Créer un raccourci vers un logiciel et un fichier
    Par romram dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 12/05/2005, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo