Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: bikerboy am 19.02.10 - 15:17:39

Titel: Datei per Script öffnen
Beitrag von: bikerboy am 19.02.10 - 15:17:39
hallo zusammen,

ich habe gerade ein sript geschrieben, bei dem als ergebnis ein pdf rausplumst. Dieses PDF würde ich gerne zur anzeige bringen, aber wenn ich dem script sage:

Code
	'PDF Öffnen
	Dim intRun As Integer
	intRun = Shell(strPrintPath,3)


Bekomme ich als Rückgabe immer ne 0

???
Titel: Re: Datei per Script öffnen
Beitrag von: bikerboy am 19.02.10 - 15:39:37
So habe noch ein bisschen google bemüht und bin zu folgendem ergebnis gekommen

Code
	strCommand = {start AcroRd32.exe }+ strPrintPath 
	intRun = Shell(strCommand,3)

wenn ich den strCommand einfach in der cmd eingebe, startet er den acrobatreader mit dem gewünschten pdf, wenn ich das ganze per skript absetze nicht. ist doch zum Mäuse melken
Titel: Re: Datei per Script öffnen
Beitrag von: eknori am 19.02.10 - 15:56:00
Die cmd sucht selbsttätig nach der mit der Endung verknüpften Anwendung. Der Shell Befehl ruft unter windows einfach nur ein ShellExecuteEx auf. Und dieser Api Call macht die Auflöung nicht von sich aus, sondern erwartet den vollständigen Pfad zur Anwendung.
Titel: Re: Datei per Script öffnen
Beitrag von: bikerboy am 19.02.10 - 16:04:35
das ist ja doof, die kann ja bei geden anders sein.

Obwohl da müsste man doch jetzt über die regedit gehen können, oder ?
Titel: Re: Datei per Script öffnen
Beitrag von: eknori am 19.02.10 - 16:05:51
Unter Windows gibt es da eine API für. muss ich mal suchen.
Titel: Re: Datei per Script öffnen
Beitrag von: eknori am 19.02.10 - 16:14:00
Code
Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (Byval lpFile As String, Byval lpDirectory As String, Byval sResult As String) As Long

Code
Function FindExecutableByExtension( FullPath As String ) As Variant 
'// Finds the location of an application for a file
'// Called by : Sub DetachAndEdit
'// Calls : none
          Dim success&, pos&, sResult$, RetVal$, lpFile$, lpDirectory$, msg$
          
          sResult = Space$ ( MAX_PATH )
          lpFile$ = ExtractFileName ( FullPath )
          lpDirectory$ = Left$ ( FullPath , Len( FullPath ) - Len( lpFile$ ) )
          success = FindExecutable ( lpFile$ , lpDirectory$ , 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 RetVal = Left$ ( sResult , pos - 1 )
          End Select
          FindExecutableByExtension = RetVal
     End Function
     

Ist aus meiner alten clsAttachment aus der Sandbox.
Titel: Re: Datei per Script öffnen
Beitrag von: Tim Pistor am 19.02.10 - 16:16:41
strCommand = {cmd /c start AcroRd32.exe }+ strPrintPath
intRun = Shell(strCommand,3)

geht das?
Titel: Re: Datei per Script öffnen
Beitrag von: eknori am 19.02.10 - 16:22:47
ja, so geht es natürlich auch ...
Titel: Re: Datei per Script öffnen
Beitrag von: Jörg Barth am 19.02.10 - 16:31:33
Oder mit
Declare Function ShellExecute Lib "shell32" Alias "ShellExecuteA" (Byval HWND As Long,  Byval mode As String,    Byval url As String,    Byval a1 As Variant,  Byval a2 As Variant,    Byval nShowCmd As Integer ) As Long

Dim lg As Long
Call   shellexecute(lg,"Open",Pfad zur PDF-Datei,"1","1","1")
Titel: Re: Datei per Script öffnen
Beitrag von: bikerboy am 19.02.10 - 16:33:40
@Tim Pistor

Ich nehme das kürzeste


@Alle

Danke für die muntere Teilnahmen