Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Glombi am 04.12.04 - 10:21:14
-
Folgendes Script habe ich, um eine Datei zu starten:
path = "u:\temp\test.doc"
task = Shell ("explorer.exe " & path, 3)
Bei einem Kunden (welcher Terminal Server einsetzt) wird aber anstelle der Datei der Office Viewer des Internet Explorers geöffnet. Dieses liegt wohl an Einstellungen der Registry.
Gibt es andere Möglichkeiten, eine Datei zu starten?
task = Shell ("cmd.exe /c" & path, 3)
funktioniert nicht, da ich nur kurz die Dos Box sehe und dann nichts mehr.
Andreas
-
Dazu noch folgende Info:
Notwendig war das Script, da ich es zunächst mit der Maskeneigenschaft "Ersten Anhang im Dokument starten" versucht habe. Das geht auch, ABER: Der Fokus bleibt nicht auf der Anwendung sondern Word wird gestartet und dann bin ich wieder in Notes.
Der nächste Workaround bestand darin, im QueryClose ein
@Command( [Execute]; _Path );
zu verwenden, aber auch damit bleibt der Fokus auf Notes.
Nur das Script funktioniert.
Andreas
-
Hm, dass beim CMD nur das Fenster aufblinkt, liegt wohl auch an Registry-Einstellungen. Wenn ich mir das ganze, was ich bisher darüber weiss, durch den Kopf gehen lasse, scheint mir fast nur möglich zu sein, die Registry selber abzuarbeiten. Dabei ist man dann natürlich ähnlich weit, wie beim Aufruf des Explorers. Scheint nicht ganz trivial zu sein.
-
Wäre ShellExecute eine Alternative?
Also z.B. http://www.atnotes.de/index.php?topic=17064.0
Weiß allerdings nicht, ob das das Problem behebt.
-
Danke Matthias für den Link. Das wäre in der Tat eine Möglichkeit. Ich werde es testen und dann Bescheid geben.
Nachtrag: Das geht leider so auch nicht, der Fokus ist wieder in Notes.
Zudem scheint es Probleme zu geben, wenn ein Leerzeichen in der Datei ist. Bei Öffnen gibt es eine Meldung, aber es wird dann doch geöffnet... Nur kehrt das Programm dann zurück zu Notes.
Andreas
-
Ah ja, Danke Matthias, es ist mir schon lange im Kopf rumgegangen, es gäbe da noch eine Alternative .... aber drauf gekommen bin ich nicht .... Das war sie.
-
Ich hab das schon oft verwendet.
Hier noch was für's Errorhandling des Rückgabewertes:
If lRet < 32 Then
Select Case lRet
Case 2
strError = "File not found"
Case 3
strError = "Path not found"
Case 5
strError = "Access denied"
Case 8
strError = "Out of memory"
Case 11
strError = "Invalid EXE file or error in EXE image"
Case 26
strError = "A sharing violation occurred"
Case 27
strError = "Incomplete or invalid file association"
Case 28
strError = "DDE Time out"
Case 29
strError = "DDE transaction failed"
Case 30
strError = "DDE already busy"
Case 31
strError = "No association for this file extension"
Case 32
strError = "DLL not found"
Case Else
strError = "Error, details unknown."
End Select
End If
Hier noch ein MS-Link:
http://support.microsoft.com/default.aspx?scid=kb;en-us;170918
-
Hier noch die Meldung
Die Datei heisst E1-03 undhier noch was.doc
Andreas
-
das Problem mit den Spaces kannst du umgehen mit
Declare Function GetShortPathName Lib "kernel32" Alias"GetShortPathNameA" (Byval lpszLongPath As String,Byval lpszShortPath As String, Byval cchBuffer As Long) As Long
Function GetShortFileName ( fileName As String ) As String
Dim sBuffer As String , lLen As Long
sBuffer = Space$ ( 512 )
lLen = GetShortPathName ( fileName , sBuffer , Len ( sBuffer ) )
GetShortFileName = Left$(sBuffer, lLen)
End Function
den Rückgabewert übergibst du dann an ShellExecute
-
Nachtrag: Das geht leider so auch nicht, der Fokus ist wieder in Notes.
Ich denke da brauchts dann noch ein
Declare Function GetDesktopWindow& Lib "user32" ()
Das übergibst Du dann der ShellExecute. Siehe z.B. hier, Antwort #13
http://www.atnotes.de/index.php?topic=16149.0
-
Danke Euch beiden für die vielen Tipps :D
Andreas
-
... funktioniert nicht, da ich nur kurz die Dos Box sehe und dann nichts mehr....
Hallo Andreas,
das mit der Dos Box hatte ich auch mal. Ich habe dann den Aufruf der EXE-Datei in eine CMD-Batch-Datei gesteckt zusammen mit der Angabe des Pfades.
Dies scheint hier aber wohl nicht das Problem zu sein, oder!?
Gruß Armin