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# Discussion :

Allez bon, plus de raccourcis !


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 956
    Par défaut Allez bon, plus de raccourcis !
    Bonjour tout le monde,

    J'ai un programme qui lit le contenu du bureau, et dans le cas d'un raccourci exécute la cible.
    Sur une machine précédente ça fonctionnait très bien.

    Là, la notion de raccourci ne semble pas reconnue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                FileInfo fi = new FileInfo(strCmd);
                if (fi.Extension.ToLower() == ".lnk")
                {
                    IWshRuntimeLibrary.IWshShell_Class shellClass = new IWshShell_Class();
                    IWshShortcut s = shellClass.CreateShortcut(fi.FullName);
                    string strCmd2 = s.TargetPath;
                }
    Dans strCmd, j'ai bien le chemin du raccourci.
    Dans strCmd2, chaîne vide.

    Si je presse le raccourci clavier du raccourci ou que je double-clique sur le raccourci mais dans la barre d'outils Windows du bureau, le raccourci s'exécute très bien.

    Alors comme disent les gamins, "WTF ?"

    Pour lire les propriétés du IWshShortcut, on me dit que je dois activer le débogage du code natif.
    Dans Visual Studio Community 2022, Outils, Options, catégorie Débogage, Juste à temps, j'ai bien une case "Natif". Mais elle est cochée.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 584
    Par défaut
    Je n'ai pas vraiment compris ton problème. surtout ce qui ne marche pas, vu que l'utilisation du raccourci fonctionne.
    (ligne 5 tu créés un raccourci, ligne 6 tu lit sa propriété TargetPath)

  3. #3
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 956
    Par défaut
    C'est bien ça.
    Alors j'ai vérifié que dans les dépendances du projet j'ai Interop.IWshRuntimeLibrary et Interop.Shell32

    Je viens de voir un fil chez Stackoverflow qui dit de référencer Microsoft Shell Controls and Automation à la place de Shell32.

    Dans la mesure où le projet fonctionnait sur une autre machine, j'aurais plutôt cherché dans les options d'installation de Visual Studio ...

    Ah dans le fil on dit que ça ne marche pas des tas d'ailleurs, et pour finir on parle de WindowsAPICodePack .

    Je vais chercher par là ...

    ***
    Hum, c'est rapide d'ailleurs, mais dans mon cas ça n'a rien solutionné.

    Des fois que ça puisse aider, voilà ce que dit un espion sur l'objet IWshShortcut :
    Nom : Raccourci Capture d’écran 2022-12-05 194739.png
Affichages : 368
Taille : 28,7 Ko

    (dans l'aperçu l'image est tronquée à droite, pour tout voir il faut chercher dans le menu contextuel, afficher dans un autre onglet ; ah non une fois affiché dans le fil c'est ajusté à la largeur disponible.)

    ***
    Des fois qu'il y ait un problème d'incompatibilité de versions, voilà le fichier projet :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <Project Sdk="Microsoft.NET.Sdk">
     
     
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <LangVersion>9.0</LangVersion>
        <UseWPF>true</UseWPF>
        <UseWindowsForms>true</UseWindowsForms>
        <ApplicationIcon>Icon1.ico</ApplicationIcon>
        <NoWin32Manifest>true</NoWin32Manifest>
      </PropertyGroup>
     
     
      <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
        <Optimize>True</Optimize>
      </PropertyGroup>
     
      <ItemGroup>
        <COMReference Include="IWshRuntimeLibrary">
          <WrapperTool>tlbimp</WrapperTool>
          <VersionMinor>0</VersionMinor>
          <VersionMajor>1</VersionMajor>
          <Guid>f935dc20-1cf0-11d0-adb9-00c04fd58a0b</Guid>
          <Lcid>0</Lcid>
          <Isolated>false</Isolated>
          <EmbedInteropTypes>true</EmbedInteropTypes>
        </COMReference>
        <COMReference Include="Shell32">
          <WrapperTool>tlbimp</WrapperTool>
          <VersionMinor>0</VersionMinor>
          <VersionMajor>1</VersionMajor>
          <Guid>50a7e9b0-70ef-11d1-b75a-00a0c90564fe</Guid>
          <Lcid>0</Lcid>
          <Isolated>false</Isolated>
          <EmbedInteropTypes>true</EmbedInteropTypes>
        </COMReference>
        <COMReference Include="SHELLEXTENSIONLib">
          <WrapperTool>tlbimp</WrapperTool>
          <VersionMinor>0</VersionMinor>
          <VersionMajor>1</VersionMajor>
          <Guid>06029e17-28b5-456a-b866-4e79d98612fd</Guid>
          <Lcid>0</Lcid>
          <Isolated>false</Isolated>
          <EmbedInteropTypes>true</EmbedInteropTypes>
        </COMReference>
      </ItemGroup>
     
      <ItemGroup>
        <PackageReference Include="PresentationFramework" Version="4.6.0" />
        <PackageReference Include="WindowsAPICodePack-Core" Version="1.1.2" />
      </ItemGroup>
     
      <ItemGroup>
        <Reference Include="WindowsFormsControlLibrary2">
          <HintPath>..\..\WindowsFormsControlLibrary2\WindowsFormsControlLibrary2\bin\Debug\WindowsFormsControlLibrary2.dll</HintPath>
        </Reference>
      </ItemGroup>
     
      <ItemGroup>
        <Compile Update="Properties\Resources.Designer.cs">
          <DesignTime>True</DesignTime>
          <AutoGen>True</AutoGen>
          <DependentUpon>Resources.resx</DependentUpon>
        </Compile>
      </ItemGroup>
     
      <ItemGroup>
        <EmbeddedResource Update="Properties\Resources.resx">
          <Generator>ResXFileCodeGenerator</Generator>
          <LastGenOutput>Resources.Designer.cs</LastGenOutput>
        </EmbeddedResource>
      </ItemGroup>
     
    </Project>
    et bureau.csproj.user :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <ItemGroup>
        <Compile Update="Form1.cs">
          <SubType>Form</SubType>
        </Compile>
      </ItemGroup>
      <ItemGroup>
        <EmbeddedResource Update="Form1.resx">
          <SubType>Designer</SubType>
        </EmbeddedResource>
      </ItemGroup>
    </Project>
    Et ... là-dedans, est-ce que quelqu'un voit quelque chose à cocher ?
    Nom : Installation Visual Studio Capture d’écran 2022-12-05 203309.png
Affichages : 361
Taille : 152,3 Ko

    J'ai essayé "Modèles C# de SDK d'applications Windows", mais ce n'était pas ça. En tout cas, pas que.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 584
    Par défaut
    Très confus tes réponses.
    Il faut juste ajouter en dépendance "Windows Script Host Object Model" qui correspond à Interop.IWshRuntimeLibrary
    et ajouter en début de programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using IWshRuntimeLibrary;
    Tu es sûr que ce que tu as dans strCmd est bien un raccourci avec l'extension .lnk ???
    Pour avoir un truc dans strCmd2, il faut que ton point d'arrêt soit après la ligne d'affectation.

  5. #5
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 956
    Par défaut
    Citation Envoyé par umfred Voir le message
    Très confus tes réponses.
    Il faut juste ajouter en dépendance "Windows Script Host Object Model" qui correspond à Interop.IWshRuntimeLibrary
    et ajouter en début de programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using IWshRuntimeLibrary;
    Tu es sûr que ce que tu as dans strCmd est bien un raccourci avec l'extension .lnk ???
    Pour avoir un truc dans strCmd2, il faut que ton point d'arrêt soit après la ligne d'affectation.
    Bon, alors pour être plus précis qu'en citant le fichier projet, je fais comment ?

    Je précise que la première ligne du module Form1 est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using IWshRuntimeLibrary;
    qui renvoie, dans Dépendances / COM, à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Interop.IWshRuntimeLibrary
    Nom : image_2022-12-07_195232537.png
Affichages : 358
Taille : 49,0 Ko

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 584
    Par défaut
    Je te demande d'être sûr que dans strCmd tu as bien le chemin d'un lien finissant par .lnk, et tu pars encore sur le Interop.IWshRuntimeLibrary ...

    Réponds aux question au moins ..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb de raccourcis qui ne fonctionnent plus
    Par aemilia26 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/08/2010, 15h30
  2. plus aucun raccourcis sur le bureau
    Par mantra98800 dans le forum Windows XP
    Réponses: 2
    Dernier message: 07/11/2006, 20h42

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