Открытие файла по ассоциации

Тема в разделе "Oбщий функционал", создана пользователем Klido, 24 май 2010.

  1. Klido

    Klido Гость

    наткнулся на красивый пример Multi-Platform File Launch With LotusScript:

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    Option Public
    Option Explicit
    Uselsx "*javacon"

    Sub Initialize
    Dim workspace As New NotesUIWorkspace
    Dim response As Variant
    response = workspace.SaveFileDialog(False, "File name", "All Files|*.*", "", "")
    If Not Isempty (response) Then
    Dim fileName As String
    fileName = response(0)
    Dim jSession As JavaSession
    Dim jClass As JavaClass
    Dim jMethod As JavaMethod
    Set jSession = New JavaSession()
    Set jClass = jSession.GetClass("org/eclipse/swt/program/Program")
    Set jMethod = jClass.GetMethod("launch","(Ljava/lang/String;)Z")
    Call jMethod.Invoke(, fileName)
    End If
    End Sub
     
  2. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    еще в копилку способов запуска файлов:
    можно юзать свойство автозапуска формы
    в бд создаен форму launcher, на нее RT поле , в св-вах формы на третьей закладке "launch first attchment".
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код запуска</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    Function launchAttachment( attObject As NotesEmbeddedObject )
    Dim srcItem As NotesRichTextItem
    Set srcItem = attObject.Parent

    Dim launcher As New NotesDocument( srcItem.Parent.ParentDatabase )
    launcher.Form = "launcher"
    launcher.SaveOptions = "0"

    ' копируем RT поле в launcher
    Const LAUNCHER_FIELD = "Body"
    Dim launchedItem As NotesRichTextItem
    Set launchedItem = srcItem.CopyItemToDocument( launcher , LAUNCHER_FIELD )

    ' удаляем лишние аттачи
    Forall eo In launchedItem.EmbeddedObjects
    If eo.Name <> attObject.Name Then eo.Remove
    End Forall

    ' запускаем
    Dim ws As New NotesUIWorkspace
    Call ws.EditDocument( False , launcher , False )
    End Function
     
  3. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Java-вариант</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>public String tempdir() {
    String tempdir = System.getProperty("java.io.tmpdir");
    if (!(tempdir.endsWith("/") || tempdir.endsWith("\\")))
    tempdir = tempdir + System.getProperty("file.separator");
    return tempdir;
    }

    public static boolean isWindows() {
    String os = System.getProperty("os.name").toLowerCase();
    return (os.indexOf("win") >= 0);
    }

    public static boolean isMac() {
    String os = System.getProperty("os.name").toLowerCase();
    return (os.indexOf("mac") >= 0);
    }

    //...

    if (isWindows()) {
    //opening pdf-file from following method suddenly broke....
    //better to comment it out until solution is found.
    Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + filePath);
    p.waitFor();
    }
    else if (isMac()) {
    Process p = Runtime.getRuntime().exec("/usr/bin/open " + filePath);
    p.waitFor();
    }[/CODE]
     
  4. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    filename = ПОЛНЫЙ_ПУТЬ_И_ИМЯ_ВАШЕГО_PDF_ФАЙЛА

    1. LS и @фомулы - URLopen "file:///filename"
    2. Java (в LN 8.5) - Desktop.getDesktop().open(filename);
    3. Windows API - см. ShellExecute
     
  5. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    @URLOpen у меня всегда пытается открыть через FireFox.
    LS вариант тоже, потом поставил последний параметр True, стало ок.
    Код (LotusScript):
       
    Dim ws As New NotesUIWorkspace
    Call ws.URLOpen("file:////C:\\insidenotes.pdf",,,,,,,,True)
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    яж написал - "не нужно знать" запускаем комнндный просессор (cmd.exe или bash), а в нем:

    -винда - просто имя файла (а оно запустит приладу его исполняющую); пример:
    Код (Text):
    result = Shell({cmd.exe /c "C:\Program Files\lotus\notes\EDGE LL III.pdf"})
    -МАК - open, ключик -a , по-моему

    -Linux (по тербованиям нотусни - gvfs будет установлена) gvfs-open

    Добавлено: но таки да - если пролезет с URLOpen (хотя я б так не закладывался) - то лучше.
     
Загрузка...
Похожие Темы - Открытие файла по
  1. AnnaS
    Ответов:
    39
    Просмотров:
    6.905
  2. vbs
    Ответов:
    5
    Просмотров:
    2.496
  3. unknown181538
    Ответов:
    12
    Просмотров:
    4.413
  4. sanch
    Ответов:
    26
    Просмотров:
    6.857
  5. SeverBap
    Ответов:
    5
    Просмотров:
    2.945

Поделиться этой страницей