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

C++Builder Discussion :

raccourcis sur le bureau


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut raccourcis sur le bureau
    J'ai cherché dans le forum, pour metre un raccourcis sur le bureau, et j'ai découvert le code suivent
    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
        HRESULT hres;
        IShellLink* psl;
        WORD wsz[MAX_PATH];
     
        CoInitialize(NULL);
        hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,
                                     IID_IShellLink, (LPVOID *)&psl);
     
        if (SUCCEEDED(hres))
           {
            IPersistFile* ppf;
     
            psl->SetPath("C:\\Windows\\calc.exe");
            psl->SetDescription("Calculatrice");
     
            psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
     
            MultiByteToWideChar(CP_ACP, 0,"C:\\Windows\\Bureau\\Calc.lnk", -1,
                                                  (LPWSTR)wsz, MAX_PATH);
     
           ppf->Save((LPWSTR)wsz, TRUE);
           ppf->Release();
           }
         psl->Release();
         CoUninitialize();
    J'ai adapté le code a ma fenetre, mais pb, il n'accepte pas ma chaine de caractère pour la localisation du raccourcis
    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
                    HRESULT hres;
                    IShellLink* psl;
                    WORD wsz[MAX_PATH];
                    CoInitialize(NULL);
                    hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID *)&psl);
                    if (SUCCEEDED(hres))
                    {
                            IPersistFile* ppf;
                            psl->SetPath(step3->Edit1->Text + "PackCIS.exe");
                            psl->SetDescription("PackCIS");
                            psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
                            MultiByteToWideChar(CP_ACP, 0,step3->CheminSpecialFolder(CSIDL_STARTMENU) + "\\Cav\\PackCIS\\PackCIS.lnk", -1, (LPWSTR)wsz, MAX_PATH);
                            ppf->Save((LPWSTR)wsz, TRUE);
                            ppf->Release();
                   }
                   psl->Release();
                   CoUninitialize();

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Si tes dossiers ne sont pas créé, il se peut qu'il ne l'accepte pas, as tu un message d'erreur ?

  3. #3
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    psl->SetPath(step3->Edit1->Text + "PackCIS.exe");
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AnsiString chemin = step3->Edit1->Text + "PackCIS.exe";
    psl->SetPath(chemin.c_str());
    et pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MultiByteToWideChar(CP_ACP,0,step3->CheminSpecialFolder(CSIDL_STARTMENU) + "\\Cav\\PackCIS\\PackCIS.lnk", -1, (LPWSTR)wsz, MAX_PATH);
    essayes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AnsiString Lien = step3->CheminSpecialFolder(CSIDL_STARTMENU) + "\\Cav\\PackCIS\\PackCIS.lnk";
    MultiByteToWideChar(CP_ACP,0,Lien.c_str(), -1, (LPWSTR)wsz, MAX_PATH);

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Alors, les dossiers sont crées, et voila, j'utiise le code la, il se complie, mais rien n'apparait dans les deux destinations
    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
    42
    43
    44
    45
    46
    47
    48
    49
    //Création du raccourci dans le menu démarrer
            if (step3->CheckBox1->Checked == false)
            {
                    //Code Internet pour la création du raccourci bureau
                    HRESULT hres;
                    IShellLink* psl;
                    WORD wsz[MAX_PATH];
                    CoInitialize(NULL);
                    hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID *)&psl);
                    if (SUCCEEDED(hres))
                    {
                            IPersistFile* ppf;
                            AnsiString chemin = ExtractFilePath(Application->ExeName) + "PackCIS.exe";
                            psl->SetPath(chemin.c_str());
                            psl->SetDescription("PackCIS");
                            psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
                            AnsiString Lien = step3->CheminSpecialFolder(CSIDL_STARTMENU) + "\\Cav\\PackCIS\\PackCIS.lnk";
                            MultiByteToWideChar(CP_ACP,0,Lien.c_str(), -1, (LPWSTR)wsz, MAX_PATH);
                            ppf->Save((LPWSTR)wsz, TRUE);
                            ppf->Release();
                   }
                   psl->Release();
                   CoUninitialize();
            }
            ProgressBar1->Position++;
            //Création du raccourcis sur le bureau
            if (step3->CheckBox2->Checked == true)
            {
                    //Code Internet pour la création du raccourci bureau
                    HRESULT hres;
                    IShellLink* psl;
                    WORD wsz[MAX_PATH];
                    CoInitialize(NULL);
                    hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID *)&psl);
                    if (SUCCEEDED(hres))
                    {
                            IPersistFile* ppf;
                            AnsiString chemin = ExtractFilePath(Application->ExeName) + "PackCIS.exe";
                            psl->SetPath(chemin.c_str());
                            psl->SetDescription("PackCIS");
                            psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
                            AnsiString Lien = step3->CheminSpecialFolder(CSIDL_DESKTOP) + "PackCIS.lnk";
                            MultiByteToWideChar(CP_ACP,0,Lien.c_str(), -1, (LPWSTR)wsz, MAX_PATH);
                            ppf->Save((LPWSTR)wsz, TRUE);
                            ppf->Release();
                   }
                   psl->Release();
                   CoUninitialize();
            }

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Bon, j'avais quelques erreurs, mais apres correction, j'ai reussis a 50% : l'icone sur le bureau, n'est pas,mais a la place, il met l'icone dans le menu démarrer, l'icone dans le startmenu\prog\cav\ink est ok
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
            //Création du raccourci dans le menu démarrer
            if (step3->CheckBox1->Checked == false)
            {
                    //Code Internet pour la création du raccourci bureau
                    HRESULT hres;
                    IShellLink* psl;
                    WORD wsz[MAX_PATH];
                    CoInitialize(NULL);
                    hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID *)&psl);
                    if (SUCCEEDED(hres))
                    {
                            IPersistFile* ppf;
                            AnsiString chemin = ExtractFilePath(Application->ExeName) + "\\CISPack.exe";
                            psl->SetPath(chemin.c_str());
                            psl->SetDescription("CISPack");
                            psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
                            AnsiString Lien = step3->CheminSpecialFolder(CSIDL_STARTMENU) + "\\Programmes\\Cav\\CISPack\\CISPack.lnk";
                            MultiByteToWideChar(CP_ACP,0,Lien.c_str(), -1, (LPWSTR)wsz, MAX_PATH);
                            ppf->Save((LPWSTR)wsz, TRUE);
                            ppf->Release();
                   }
                   psl->Release();
                   CoUninitialize();
            }
            ProgressBar1->Position++;
            //Création du raccourcis sur le bureau
            if (step3->CheckBox2->Checked == true)
            {
                    //Code Internet pour la création du raccourci bureau
                    HRESULT hres;
                    IShellLink* psl;
                    WORD wsz[MAX_PATH];
                    CoInitialize(NULL);
                    hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID *)&psl);
                    if (SUCCEEDED(hres))
                    {
                            IPersistFile* ppf;
                            AnsiString chemin = ExtractFilePath(Application->ExeName) + "\\CISPack.exe";
                            psl->SetPath(chemin.c_str());
                            psl->SetDescription("CISPack");
                            psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
                            AnsiString Lien = step3->CheminSpecialFolder(CSIDL_DESKTOP) + "\\CISPack.lnk";
                            MultiByteToWideChar(CP_ACP,0,Lien.c_str(), -1, (LPWSTR)wsz, MAX_PATH);
                            ppf->Save((LPWSTR)wsz, TRUE);
                            ppf->Release();
                   }
                   psl->Release();
                   CoUninitialize();
            }

  6. #6
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Citation Envoyé par Galkir
    Bon, j'avais quelques erreurs, mais apres correction, j'ai reussis a 50% : l'icone sur le bureau, n'est pas,mais a la place, il met l'icone dans le menu démarrer, l'icone dans le startmenu\prog\cav\ink est ok
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
            //Création du raccourci dans le menu démarrer
            if (step3->CheckBox1->Checked == false)
            {
                    //Code Internet pour la création du raccourci bureau
                    HRESULT hres;
                    IShellLink* psl;
                    WORD wsz[MAX_PATH];
                    CoInitialize(NULL);
                    hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID *)&psl);
                    if (SUCCEEDED(hres))
                    {
                            IPersistFile* ppf;
                            AnsiString chemin = ExtractFilePath(Application->ExeName) + "\\CISPack.exe";
                            psl->SetPath(chemin.c_str());
                            psl->SetDescription("CISPack");
                            psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
                            AnsiString Lien = step3->CheminSpecialFolder(CSIDL_STARTMENU) + "\\Programmes\\Cav\\CISPack\\CISPack.lnk";
                            MultiByteToWideChar(CP_ACP,0,Lien.c_str(), -1, (LPWSTR)wsz, MAX_PATH);
                            ppf->Save((LPWSTR)wsz, TRUE);
                            ppf->Release();
                   }
                   psl->Release();
                   CoUninitialize();
            }
            ProgressBar1->Position++;
            //Création du raccourcis sur le bureau
            if (step3->CheckBox2->Checked == true)
            {
                    //Code Internet pour la création du raccourci bureau
                    HRESULT hres;
                    IShellLink* psl;
                    WORD wsz[MAX_PATH];
                    CoInitialize(NULL);
                    hres = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID *)&psl);
                    if (SUCCEEDED(hres))
                    {
                            IPersistFile* ppf;
                            AnsiString chemin = ExtractFilePath(Application->ExeName) + "\\CISPack.exe";
                            psl->SetPath(chemin.c_str());
                            psl->SetDescription("CISPack");
                            psl->QueryInterface(IID_IPersistFile,(LPVOID *)&ppf);
                            AnsiString Lien = step3->CheminSpecialFolder(CSIDL_DESKTOP) + "\\CISPack.lnk";
                            MultiByteToWideChar(CP_ACP,0,Lien.c_str(), -1, (LPWSTR)wsz, MAX_PATH);
                            ppf->Save((LPWSTR)wsz, TRUE);
                            ppf->Release();
                   }
                   psl->Release();
                   CoUninitialize();
            }
    Tu as encore un CSIDL_START_MENU ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     AnsiString Lien = step3->CheminSpecialFolder(CSIDL_STARTMENU) + "\\Programmes\\Cav\\CISPack\\CISPack.lnk";
    MultiByteToWideChar(CP_ACP,0,Lien.c_str(), -1, (LPWSTR)wsz, MAX_PATH);

  7. #7
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Bonjour,

    As tu essayer, en passant par un AnsiString avant, puis de le faire passer a ta fonction ?

    Dans un premier temps, je penserai a probleme de /, car dans la fonction CheminSpecialFolder y'a qu'en a 1 alors qu'il faudrai les doubler

    lanonyme

Discussions similaires

  1. Réponses: 11
    Dernier message: 14/08/2006, 00h13
  2. application installant un raccourci sur le bureau
    Par ricotrutt dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 24/07/2006, 15h23
  3. Créer un raccourci sur le bureau
    Par NdmaX dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/04/2006, 17h21
  4. Raccourci sur le bureau
    Par AlDel dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 07/03/2005, 17h07
  5. Raccourci sur le bureau
    Par senateur dans le forum Langage
    Réponses: 7
    Dernier message: 05/09/2002, 15h17

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