Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Glombi am 04.12.04 - 10:21:14

Titel: Datei mittels Script starten
Beitrag 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
Titel: Re: Datei mittels Script starten
Beitrag von: Glombi am 04.12.04 - 10:27:26
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
Titel: Re: Datei mittels Script starten
Beitrag von: Semeaphoros am 04.12.04 - 10:29:15
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.
Titel: Re: Datei mittels Script starten
Beitrag von: TMC am 04.12.04 - 10:30:49
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.
Titel: Re: Datei mittels Script starten
Beitrag von: Glombi am 04.12.04 - 10:34:22
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
Titel: Re: Datei mittels Script starten
Beitrag von: Semeaphoros am 04.12.04 - 10:36:42
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.
Titel: Re: Datei mittels Script starten
Beitrag von: TMC am 04.12.04 - 10:37:36
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
Titel: Re: Datei mittels Script starten
Beitrag von: Glombi am 04.12.04 - 10:40:18
Hier noch die Meldung

Die Datei heisst E1-03 undhier noch was.doc

Andreas
Titel: Re: Datei mittels Script starten
Beitrag von: eknori am 04.12.04 - 10:45:10
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
Titel: Re: Datei mittels Script starten
Beitrag von: TMC am 04.12.04 - 10:48:13
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
Titel: Re: Datei mittels Script starten
Beitrag von: Glombi am 04.12.04 - 11:03:46
Danke Euch beiden für die vielen Tipps  :D

Andreas
Titel: Re: Datei mittels Script starten
Beitrag von: cococo69 am 05.12.04 - 14:55:46
... 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