Rechercher le programme associer a un fichier...

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Rechercher le programme associer a un fichier...

Message par GallyHC »

Bonjour,

Voila une petite routine pour trouver l'association d'un fichier avec le programme par defaut. voir ici http://www.koakdesign.info/news/?url=4d&val=42

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Rechercher le programme associer a un fichier...

Message par Ar-S »

Salut Gallyhc,
Chez moi lorsque je tente la procédure avec un .avi, j'ai un retour null
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Rechercher le programme associer a un fichier...

Message par GallyHC »

Salut Ar-S,

Bizzard cela fonctionne bien chez moi, c'est une adaptation d'un code VB6. Je vais faire des recherche la dessus. Tu as essayer avec d'autres fichiesr?

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Rechercher le programme associer a un fichier...

Message par Mesa »

Moi aussi, je n'arrive pas à la faire fonctionner, bizarre car sur ton site j'ai trouvé ça

Code : Tout sélectionner

File.s = "win.ini"
    Path.s = "c:\windows\"
    Result.s = Space(#MAX_PATH)

    i = FindExecutable_(@File.s, @Path.s, @Result.s)
    Debug Result
ça fonctionne mais uniquement avec des "documents".

On peut ajouter les codes d'erreurs :

Code : Tout sélectionner

File.s = "win.ini"
    Path.s = "c:\windows\"
    Result.s = Space(#MAX_PATH)

    i = FindExecutable_(@File.s, @Path.s, @Result.s)
    Debug Result
    
    Select i
      Case #SE_ERR_FNF
        Debug "The specified file was Not found"
      Case #SE_ERR_PNF
        Debug "The specified path is invalid."
      Case #SE_ERR_ACCESSDENIED
        Debug "The specified file cannot be accessed."
      Case #SE_ERR_OOM
        Debug "The system is out of memory Or resources"
      Case #SE_ERR_NOASSOC
        Debug "There is no association For the specified file type With an executable file"
      Default
        Debug "no error"
    EndSelect
Pour que ça fonctionne avec toutes les extensions, j'ai trouvé un code de Flaith :

Code : Tout sélectionner

; code de Flaith

Procedure get_exe_from_exe(Assoc.s)
Enumeration
  #ASSOCSTR_COMMAND              = 1
  #ASSOCSTR_EXECUTABLE
  #ASSOCSTR_FRIENDLYDOCNAME
  #ASSOCSTR_FRIENDLYAPPNAME
  #ASSOCSTR_NOOPEN
  #ASSOCSTR_SHELLNEWVALUE
  #ASSOCSTR_DDECOMMAND
  #ASSOCSTR_DDEIFEXEC
  #ASSOCSTR_DDEAPPLICATION
  #ASSOCSTR_DDETOPIC
  #ASSOCSTR_INFOTIP
  #ASSOCSTR_QUICKTIP
  #ASSOCSTR_TILEINFO
  #ASSOCSTR_CONTENTTYPE
  #ASSOCSTR_DEFAULTICON
  #ASSOCSTR_SHELLEXTENSION
  #ASSOCSTR_DROPTARGET
  #ASSOCSTR_DELEGATEEXECUTE
  #ASSOCSTR_MAX
EndEnumeration

Enumeration
  #ASSOCF_INIT_NOREMAPCLSID      = $00000001
  #ASSOCF_INIT_BYEXENAME         = $00000002
  #ASSOCF_OPEN_BYEXENAME         = $00000002
  #ASSOCF_INIT_DEFAULTTOSTAR     = $00000004
  #ASSOCF_INIT_DEFAULTTOFOLDER   = $00000008
  #ASSOCF_NOUSERSETTINGS         = $00000010
  #ASSOCF_NOTRUNCATE             = $00000020
  #ASSOCF_VERIFY                 = $00000040
  #ASSOCF_REMAPRUNDLL            = $00000080
  #ASSOCF_NOFIXUPS               = $00000100
  #ASSOCF_IGNOREBASECLASS        = $00000200
  #ASSOCF_INIT_IGNOREUNKNOWN     = $00000400   
EndEnumeration

pcchOut.l   = #MAX_PATH
pszOut.s    = Space(pcchOut)
flags       = #ASSOCF_NOTRUNCATE | #ASSOCF_REMAPRUNDLL
;pszAssoc.s  = ".avi";".htm"
pszAssoc.s  = Assoc
pszExtra.s  = "open"

Res_Lib=OpenLibrary(#PB_Any, "Shlwapi.dll");#PB_Any ne fonctionne pas ?
 *AssocQueryString = GetFunction(Res_Lib, "AssocQueryStringA")
  If *AssocQueryString
    hresult = CallFunctionFast(*AssocQueryString, flags, #ASSOCSTR_EXECUTABLE, @pszAssoc, @pszExtra, @pszOut, @pcchOut)
    Select hresult
      Case #S_OK
        Debug "Executable name for '"+pszAssoc+"' : "+pszOut
      Case #S_FALSE
        Debug "pszOut is NULL. pcchOut contains the required buffer size"
      Case #E_POINTER
        Debug "The pszOut buffer is too small to hold the entire string"
      Default
        Debug "No association defined for extension '"+pszAssoc+"'"
    EndSelect
  EndIf

CloseLibrary(Res_Lib)
EndProcedure

Debug get_exe_from_exe(".avi")
Mesa.
Dernière modification par Mesa le mar. 07/févr./2012 10:19, modifié 1 fois.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Rechercher le programme associer a un fichier...

Message par GallyHC »

bonjour Mesa,

c'est normal je ne vois pas pourquoi ce If

Code : Tout sélectionner

Rs_Lib=If OpenLibrary(#PB_Any, "Shlwapi.dll")
avec

Code : Tout sélectionner

Rs_Lib = OpenLibrary(#PB_Any, "Shlwapi.dll")
je penses que cela ira mieu :)

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Rechercher le programme associer a un fichier...

Message par Mesa »

En effet, c'est tout bête, je corrige mon post.

Merci.

Mesa.
Répondre