Les Snippets

Connexion

Ouverture d'un fichier par un logiciel externe

Niveau requis pour utiliser/comprendre cette source : 2 ( Initié )
Créé le 27/09/2006 18:58:43 et initié par casy [Liste]
Vue : 21715
Catégorie(s) : API, Fichier / Disque, Trucs & Astuces
Langages dispo pour ce code :
- VB6
- Windev
- Python
- C# 1.x, C# 2.x
- Java
- Delphi 5



Langage : VB6
Date ajout : 27/09/2006
Posté par casy [Liste]
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" ( _
                                                                              ByVal lpFile As String, _
                                                                              ByVal lpDirectory As String, _
                                                                              ByVal lpResult As String) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
                                                                          ByVal bInheritHandle As Long, _
                                                                          ByVal dwProcessId As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
                                                            ByVal dwMilliseconds As Long) As Long
Public Const INFINITE = &HFFFFFFFF       '  Infinite timeout
Public Const SYNCHRONIZE = &H100000
'---------------------------------------------------------------------------------------
' Procedure : OuvrirFichier
' DateTime  : 27/09/2006 18:20
' Author    : Casy
' Purpose   : Permet d'ouvrir un document avec l'applicatif (.exe) par défaut.
'             Vérifie d'abord si le fichier existe, si un applicatif est installé
'             Possibilité de bloquer le process tant que l'applicatif n'est pas fermé
'             Retourne TRUE si l'ouverture s'est bien passée, FALSE sinon.
'---------------------------------------------------------------------------------------
Public Function OuvrirFichier(fichier As String, Optional attenteFermeture As Boolean = False) As Boolean
Dim fileappli As String * 250
Dim result As Integer
Dim temp As String
Dim fichAOuvrir As String
Dim i As Integer
Dim pid As Double
Dim phnd As Long
On Error GoTo OuvrirFichier_Error
temp = Dir$(fichier)  'recherche si le fichier existe
If temp <> "" Then
    ' Le fichier existe
    ' Recherche l'exécutable associé
    result = FindExecutable(fichier, vbNullString, fileappli)
    If result > 32 Then
        ' Association trouvée
        i = InStr(1, fileappli, Chr(0), vbBinaryCompare) - 1
        fichAOuvrir = """" & Left$(fileappli, i) & """ " & fichier
    Else
        ' Aucune association de trouvée
        OuvrirFichier = False
        Exit Function
    End If
Else
    ' Le fichier n'existe pas
    OuvrirFichier = False
    Exit Function
End If
' Ouverture du fichier
pid = Shell(fichAOuvrir, vbMaximizedFocus)
If pid <> 0 Then
    ' Si attente fermeture demandé, on suspend le process jusqu'à que le logiciel soit fermé.
    If attenteFermeture = True Then
        phnd = OpenProcess(SYNCHRONIZE, 0, pid)
        If phnd <> 0 Then
            Call WaitForSingleObject(phnd, INFINITE)
            Call CloseHandle(phnd)
        End If
    End If
    OuvrirFichier = True
Else
    OuvrirFichier = False
End If
   On Error GoTo 0
   Exit Function
OuvrirFichier_Error:
    OuvrirFichier = False
'---- Code à personaliser en cas d'erreur -------------------------------------------------
    Dim message As String
    message = "Erreur " & Err.Number & " (" & Err.Description & ") dans la procedure OuvrirFichier" & vbCrLf & vbCrLf
    message = message & "Vérifier que le fichier est accessible !" & vbCrLf
    message = message & "Vérifier que le logiciel associé est un exécutable !"
    MsgBox message, vbCritical & vbOKOnly, "ERREUR - OuvrirFichier"
'------------------------------------------------------------------------------------------
End Function

Remarque :
Problème connu et géré (voir partie "Code à personnaliser"): La fonction Shell génère une erreur si l'applicatif associé n'est pas un exécutable. Dans ce cas l'ouverture du fichier ne marche pas (ex: Fichier image, lorsque c'est l'"Aperçu des images et Télécopie Windows" qui est associé aux fichiers images
Langage : Windev
Date ajout : 06/10/2006
Posté par drcharly93 [Liste]
<Résultat>=LanceAppliAssociée(<Nom du fichier>, <verbe>)
//Imprimer un document Word
LanceAppliAssociée("C:\WDNEWS\Version\Fonctions.doc", "print")
Langage : Python
Date ajout : 29/10/2006
Posté par pacificator [Liste]
import os
def ouvrirFichier(fichier):
    if os.path.isfile(fichier):
        os.system(fichier)

Langage : C# 1.x , C# 2.x
Date ajout : 03/11/2006
Posté par glJarod [Liste]
//On créé un nouveau processus
System.Diagnostics.Process proc = new System.Diagnostics.Process();
//On "charge" le fichier à ouvrir dans le processus
proc.StartInfo.FileName = "C:\\MonDossier\\monFichier.mp3"; //Foobar (ou winamp, ou WMP) se lancera avec ce fichier ouvert
//lancement du processus
proc.Start();
//On ferme le processus pour libérer l'espace mémoire (celà ne ferme pas l'application lancée)
proc.Close();
Langage : Java
Date ajout : 10/03/2007
Posté par Ombitious_Developper [Liste]
// Les classes nécessaires
import java.awt.Desktop;
import java.io.File;
/**
  * Ouverture d'un fichier avec un logiciel externe.
  * Ceci se base sur la classe java.awt.Desktop
  * Cette classe est disponible actuellement avec la version 6 du JDK
  */
void open (String toOpen) {
    if (toOpen == null)
        throw new NullPointerException ();
    if (!Desktop.isDesktopSupported ())
        return;
    Desktop desktop = Desktop.getDesktop ();
    
    try {
        desktop.open (new File (toOpen));
    }
    catch (Exception e) {
        e.printStackTrace ();
    }     
}

Remarque :
Supporté uniquement par JDK 1.6.0 et plus
Langage : Delphi 5
Date ajout : 14/05/2009
Posté par Alcofribas_Nasier [Liste]
procedure OpenWithDefaultEditor(filename:string);
begin
shellexecute(0,'open',pchar(filename),0,0,SW_NORMAL);
end;

Remarque :
Ne pas oublier de déclarer ShellApi dans vos uses.
ouvre un fichier avec l'éditeur par défaut ou lance un exécutable.

Snippets en rapport avec : Fichier, Lancer, Ouvrir, Shell, Findexécutable



Codes sources en rapport avec : Fichier, Lancer, Ouvrir, Shell, Findexécutable

{Visual Basic, VB6, VB.NET, VB 2005} OUVERTURE D'UN FICHIER PAR UN LOGICIEL EXTERNE
Ce code permet d'ouvrir un fichier quelconque dans le logiciel associé à ce type de fichier. Il s...

{Visual Basic, VB6, VB.NET, VB 2005} OUVRIR TOUS LES FICHIERS EXCEL D'UN DOSSIER ET DE SES SOUS-DOSSIERS
Petite macro permettant de choisir un dossier puis de parcourir le dossiers et ses sous-dossiers afi...

{C# / C#.NET} EXTRACTION DES MINIATURES DES FICHIERS (COMME DANS L'EXPLORATEUR MODE DÉTAILS)
Ce code permet d'extraire les miniatures des fichiers comme en mode Détails de l'explorateur Windows...

{Visual Basic, VB6, VB.NET, VB 2005} (.NET) EXTRACTION DES MINIATURES DES FICHIERS (COMME DANS L'EXPLORATEUR MODE DÉTAILS)
Ce code permet d'extraire les miniatures des fichiers comme en mode Détails de l'explorateur Windows...

{Visual Basic, VB6, VB.NET, VB 2005} OUVRIR DES HTA SANS MESSAGE DE LA PART DE WINDOWS
Lorsque l'on essaie d'ouvrir un fichier a partir d'un hta, window (IE version6.00.2900 et +) nous ...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRACTION DES MINIATURES DES FICHIERS (COMME DANS L'EXPLORATEUR MODE DÉTAILS)
Ce code permet d'extraire les miniatures des fichiers comme en mode Détails de l'explorateur Windows...

{Visual Basic, VB6, VB.NET, VB 2005} RÉCUPÉRER LE HANDLE APRÈS UN SHELLEXECUTE
Bon, ça y est. Après un week-end entier à m'arracher le peu de cheveux qui me reste, voilà une versi...

{PDA / PocketPC} SHELL SUR POCKET PC OU COMMENT LANCER UNE APPLICATION PAR LE CODE
Cet exemple vous présente une solution pour lancer une application, la commande Shell n'existant pas...

{JAVA / J2EE} IMPLÉMENTATION D'UN SHELL POUR LA GESTION D'UN SYSTEME D'EXPLOITATION
Cette application consiste en un shell éxécuté avec succés sous windows (Linux pas encore testé) Ce...

{Visual Basic, VB6, VB.NET, VB 2005} EXÉCUTER UN PROGRAMME (OU UN FICHIER VIA SON PROGRAMME ASSOCIÉ) ET ATTENDRE LA FIN DE SON EXÉCUTION.
J'ai cherché sur ce site sans trouver ce que je cherchais donc je dépose cette fonction que j'ai écr...