Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Sturmvogel am 28.01.05 - 10:48:33

Titel: <pdf> mit Shell32 öffnen?
Beitrag von: Sturmvogel am 28.01.05 - 10:48:33
Hallo.
Ich hab zwar schon einiges hier zu PDF Dokumenten gelesen, aber trotzdem eine Frage, die ich für meine Entwicklung bräuchte:
ist es möglich, wenn ich einen Pfad habe, das pdf-Dokument via Shell32 Aufruf zu öffnen? Ich hörte, ich müsste eine lsx einbinden, weiss aber nicht so recht welche.

Danke für eure Hilfe!
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Driri am 28.01.05 - 11:01:50
Es gibt meine ich eine API-Funktion, die dir für eine Datei die zugehörige Anwendung ermittelt.

Würde dir das weiterhelfen ? Dann schau ich mal, ob ich die Funktion finde.
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Driri am 28.01.05 - 11:03:31
Hab sie auf Anhieb gefunden, habs aber noch nie genutzt, also ohne Gewähr  ;)

Zitat
Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal sResult As String) As Long

Const MAX_PATH As Long = 260
Const ERROR_FILE_NO_ASSOCIATION As Long = 31
Const ERROR_FILE_NOT_FOUND As Long = 2
Const ERROR_PATH_NOT_FOUND As Long = 3
Const ERROR_FILE_SUCCESS As Long = 32 'my constant
Const ERROR_BAD_FORMAT As Long = 11

Sub Click(Source as Button)

Dim success As Long
Dim pos As Long
Dim sResult As String
Dim msg As String

sResult = Space$(MAX_PATH)

'lpFile: name of the file of interest
'lpDirectory: location of lpFile
'sResult: path and name of executable associated with lpFile
success = FindExecutable("winhlp32.hlp", "c:\winnt\system32\", sResult)

Select Case success
Case ERROR_FILE_NO_ASSOCIATION: msg = "no association"
Case ERROR_FILE_NOT_FOUND: msg = "file not found"
Case ERROR_PATH_NOT_FOUND: msg = "path not found"
Case ERROR_BAD_FORMAT: msg = "bad format"

Case Is >= ERROR_FILE_SUCCESS:

pos = InStr(sResult, Chr$(0))

If pos Then
msg = Left$(sResult, pos - 1)
End If

End Select

MsgBox msg

End Sub
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Gandhi am 28.01.05 - 11:11:49
Soviel ich weiß würde es reichen die Datei (mittels Win-API) zu starten und Windows entscheiden zu lassen, welches Programm für den Dateityp das Richtige ist...?
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Sturmvogel am 28.01.05 - 11:29:15
und wo und wie kann ich den Code einfügen um ihn zu testen? :)
den Click-Event für einen Button hab ich gesehen, klar, und die Konstanten? wohin damit?
ne frage zu den Konstanten: Konstanten gleichzeitig deklariere und einen Wert zuweisen?
Warum mag mein 5er Designer das nicht?
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Driri am 28.01.05 - 11:33:13
Stimmt, Gandhis Vorschlag ist noch besser. Wenn nen Acrobat Reader oder so installiert ist, sollte es reichen die PDF-Datei einfach aufzurufen.

Edit : Nimm bei den CONST mal das "As Long" weg.
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Sturmvogel am 28.01.05 - 11:40:15
ok, mittels WinAPI: und wie?  8)
gibt es da einen speziellen Aufruf?
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Driri am 28.01.05 - 11:58:11
Forensuche wirkt manchmal wunder  ;)

http://www.atnotes.de/index.php?topic=2771.0
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Sturmvogel am 28.01.05 - 12:07:25
Mist ;)

Auf jeden Fall danke an alle. Werds mir gleich anschauen...
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Sturmvogel am 28.01.05 - 14:39:44
also irgendwie schaff ich es nicht, die Function FindExecutable Lib korrekt zu deployen.
hätte jemand ne nsf wo die vielleicht in einem agenten oder in einer SB drin ist?
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: eknori am 28.01.05 - 15:00:51
ganz einfach:

mache dir mal eine neue Schaltfläche / Typ Script

In die Declaration Section kommt folgendes

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (Byval hwnd As Long, Byval lpOperation As String, Byval lpFile As String, Byval lpParameters As String, Byval lpDirectory As String, Byval nShowCmd As Long) As Long

der Click sieht so aus:

Sub Click(Source As Button)
      'You can put this code in any action or hotspot
'Dim the control variables
   Dim hwnd As Long 'the windows handle dont need to initalize
   Dim lpOperation As String
   Dim lpFile As String
   Dim lpParameters As String
   Dim lpDirectory As String
   Dim nShowCmd As Long
   Dim Hwin32 As Long 'the windows target handle dont need to initalize
   
'Initialize the vars
   lpFile = "ImportBild.txt" 'Describe the file name
   lpDirectory = "c:\Downloads" 'Describe file location
   nShowCmd = 1 'Show the open file
   lpOperation = "Open" 'if you want to print the file change to "Print"
'and finally execute the file
   Hwin32 = ShellExecute(hwnd,lpOperation,lpFile,"",lpDirectory,nShowCmd)
End Sub

hier musst du jetzt lpFile und lpDirectory anpassen

das ist die einfachste Art; ohne viel SchnickSchnak und ohne ... ERRORHANDLING  8)
Titel: Re: <pdf> mit Shell32 öffnen?
Beitrag von: Sturmvogel am 28.01.05 - 15:21:09
OHNE ERRORHANDLER? wenn das mein Chef sieht.. ;)

Danke!

Hmm. Tut nicht.
Es poppt kein Fehler auf, aber das PDF öffnet sich nicht :(
beim Versuch mit einem Textfile klappt es. Aber das PDF: nö,mag er nicht...