AssocQueryString Windows ? [Résolu]

mcallan 17 Messages postés mardi 6 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 25 févr. 2007 à 11:50 - Dernière réponse : ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention
- 2 mars 2007 à 10:09
Bonjour :)

Qu'est ce qu'il ne va pas dans ce code ?

je souhaite recuperer le nom et chemin de l'excutable associé a l'extension

Sous Windows Vista  , ptrResult contient NULL :(

char Result[2048];

exemple a=FindFileAssociation(".txt",Result);
a vaut TRUE; mais Result vaut NULL

Faut il modifier ce code pour gerer les UAC ? et comment faire ?


BOOL





FindFileAssociation
(
char
*
ptrFindStr
,
char
*
ptrResult

)
{







BOOL



bOK
=

FALSE
;


if
( (

ptrResult
) && (

ptrFindStr
) ){


HRESULT



res
=

S_FALSE
;


DWORD



cchOut
= 0;


res
=

AssocQueryString
(

ASSOCF_OPEN_BYEXENAME
,

ASSOCSTR_EXECUTABLE
,

ptrFindStr
,

"open"
,

ptrResult
, &

cchOut
);


if
(

res


S_OK
)

bOK
=

TRUE
;}


return



bOK
;
}

Merci :)
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
mcallan 17 Messages postés mardi 6 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 2 mars 2007 à 10:07
3
Merci
Pour info. (je me repond a moi meme)

ceci fonctionne , c'etait donc  ASSOCF_OPEN_BYEXENAME

char






szDefault
[

MAX_PATH
];


DWORD



ccDefault
=

MAX_PATH
;


HRESULT



rc
=

AssocQueryString
(0,

ASSOCSTR_EXECUTABLE
,

".txt"
,

"open"
,

szDefault
, &

ccDefault
);


Merci a ceux qui ont pris le temps de lire ceci et d'y reflechir

Merci mcallan 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de mcallan
Meilleure réponse
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 2 mars 2007 à 10:09
3
Merci
salut,

met 0 à la place de ASSOCF_OPEN_BYEXENAME (ce flag indique que ptrFindStr contient le nom de l'exécutable pour trouver l'extension et non le contraire)

ShareVB

Merci ShareVB 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de ShareVB
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 1 mars 2007 à 16:19
0
Merci
salut,
je pense que Vista est beaucoup plus strict sur la validation des "Buffer Overrun"...donc comme cchOut 0, il va faire comme si ptrResult NULL et renvoyer la taille requise...cependant ce n'est qu'une supposition...donc solution possible : DWORD cchOut = MAX_PATH; ou encore passer en param la taille de ptrResult...

ShareVB
Commenter la réponse de ShareVB
mcallan 17 Messages postés mardi 6 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 2 mars 2007 à 09:42
0
Merci
Apres verification ,

 DWORD cchOut = MAX_PATH;
et
ptrResult alloué de taille MAX_PATH , cela ne change rien :(

res = AssocQueryString ( ASSOCF_OPEN_BYEXENAME , ASSOCSTR_EXECUTABLE , ptrFindStr , "open" , ptrResult , & cchOut );

ptrResult retourne rien :(

Merci
Commenter la réponse de mcallan

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.