Je veux laisser l'utilisateur sélectionner une association (ouverte avec) pour une extension de fichier actuellement non enregistrée. p>
actuellement, je dis actuellement à l'API d'ouvrir le fichier à l'aide de Y a-t-il un moyen de dire à l'API qu'il devrait laisser l'utilisateur sélectionner une nouvelle association? p> shellexecute code> et renvoie un code error_no_association code> code d'erreur. P>
3 Réponses :
J'utilise edit strong> (inspiré par David's Commenter et https://stackoverflow.com/a/13229516/1431618 ):
On peut omettre il y a aussi ShopenwithDialog sur Windows Vista et plus tard . (Je trouve intéressant que Microsoft a écrit un point d'entrée compatible Rundll, mais jusqu'à ce que Vista ne prêtait pas la peine de fournir une fonction d'API régulière.) P> p> shellexecute code> et rundll32 code> en appelant openas_rundll code> directement: p>
Merci, j'ajouterai cela comme la baisse si le premier échoue, car je veux seulement la boîte de dialogue si je ne peux pas déjà l'ouvrir.
La bonne façon d'appeler la boîte de dialogue consiste à utiliser le verbe openas code> à la place: Shellexecute (Ahandle, 'Openas', Pchar (Afilename), Nil, Nil, Sw_Shownormal); code>
@Remy: Cela ne fonctionne pas pour moi (Windows 7 64 bits). I Obtenir une erreur système 1155 - Traduit de l'allemand: "Le fichier spécifié n'a pas d'application associée".
@LrichgerHARDT: Openas CODE> fonctionne pour moi sur ma machine Win7 64 bits, à la fois pour shellexecute () code> et shellexecuteeex () code>.
Serait plus facile d'appeler openas_rundll code> directement plutôt que d'impliquer un appel à shellexecute code>.
Notez que openas_rundll code> est sans papiers et ne fonctionne pas toujours.
Allez avec le code suivant, vous obtiendrez votre solution- See_mask_invokeidlist Cette variable définie "verbe" du registre de système présenté. P> p>
N'utilisez simplement pas de verbe explicite. L'utilisation d'un verbe spécifique comme 'ouvert' est une grosse erreur:
C'est un moyen plus correct pour simplement passer nil comme verbe fort>. Le système sélectionnera automatiquement le verbe le plus approprié: p> En d'autres termes, SIMPLE P>
ShellExecute(0, nil, 'C:\MyFile.StrangeExt', ...);
Cela pourrait le faire:
rundll32.exe shell32.dll, openas_rundll "c: \ chemin \ text.txt" code>