Sub OuvrirPDFdefaut()
Dim AppHandle As LongPtr
Dim Hnewparent As LongPtr
Dim He7 As LongPtr
Dim fichier$
Dim appPdfDefaut As PdfAppInfo, used As Boolean
If TaskPaneUsed Then MsgBox " le volet est deja utilisé" & vbCrLf & "Vous devez fermer le volet actuel": Exit Sub
fichier = Application.GetOpenFilename("pdf Files (*.pdf), *.pdf", 1, "ouvrir un fichier")
If fichier = "Faux" Then Exit Sub
appPdfDefaut = GetPdfDefaultExe 'recherche du chemin de l'exe de l'application par défaut avec ma fonction magic
Select Case appPdfDefaut.ExeName
'on fait une exeption pour edge et chrome on passe en shell cmd pour ouvrir en << new window >>
'comme ca on evite d'avoir plusieurs onglets dans la fenêtre chrome ou edge ou FF
Case "msedge.exe", "chrome.exe", "firefox.exe"
Dim pdfURL$, t
pdfURL = "file:///" & Replace(fichier, "\", "/") ' Format de l'URL pour Edge
Shell "cmd /c start """ & """" & " " & Replace(appPdfDefaut.ExeName, ".exe", "") & " --new-window """ & pdfURL & """", vbHide
Case Else: ShellExecute 0, "open", fichier, "", "", 1 ' SW_SHOWNORMAL
End Select
'on garde que le nom du fichier sans l'extension
N = Split(Mid(fichier, InStrRev(fichier, "\") + 1), ".")(0)
Select Case appPdfDefaut.ExeName
Case "Acrobat.exe": AppHandle = GetWinHandle("AcrobatSDIWindow", N, 10)
Case "PDFXCview.exe": AppHandle = GetWinHandle("DSUI:PDFXCViewer", , 10)
Case "msedge.exe", "chrome.exe": AppHandle = GetWinHandle("Chrome_WidgetWin_1", N, 10)
Case "firefox.exe": AppHandle = GetWinHandle("MozillaWindowClass", N, 10)
Case Else: AppHandle = GetWinHandle("*", N, 10)
End Select
If [D1] = "Vrai" Then SetWindowLong AppHandle, -16, &H16000000
docking AppHandle
End Sub