Page 1 sur 1

Rechercher le programme associer a un fichier...

Publié : lun. 06/févr./2012 20:21
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

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

Publié : mar. 07/févr./2012 1:25
par Ar-S
Salut Gallyhc,
Chez moi lorsque je tente la procédure avec un .avi, j'ai un retour null

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

Publié : mar. 07/févr./2012 9:34
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

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

Publié : mar. 07/févr./2012 10:00
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.

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

Publié : mar. 07/févr./2012 10:14
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

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

Publié : mar. 07/févr./2012 10:18
par Mesa
En effet, c'est tout bête, je corrige mon post.

Merci.

Mesa.