Как запустить (открыть) вложение?

Тема в разделе "Lotus - Программирование", создана пользователем fedotxxl, 28 мар 2008.

  1. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Вопрос козалось бы легкий - в документе есть attachment'ы. Нужно их программным образом (LS) запустить (активизировать, открыть...)
    Как это сделать я так и не нашел =(
    Повторяю, что аттачменты, а не оле. Полагаю, выгрузить на хард и запустить. Выгрузить выгрузил, а вот запуск...
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
  3. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
  4. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    модальный запуск подпрограмы, авось пригодится

    Код (Text):
    запуск файла

    ' путь к временному каталогу
    filepath$=Environ$("TEMP")
    'аналогично проверьте переменную среды "TMP" или"TMPDIR"
    ' или в качестве временного каталога используйте заданный ранее filepath$
    If filepath$<>"" Then
    filepath$=Trim(filepath$) & "\"
    End If
    ' во временном каталоге проверьте наличие файла "flag"
    If Dir(filepath$ & "flag")<>"" Then
    Kill filepath$ & "flag" ' если есть уберите его
    End If
    ' кроме того в этом же каталоге возможно нахождения от предыдущего сеанса командного файла "comm.bat", который собственно и запускает внешнюю программу (cм далее)
    If Dir(filepath$ & "comm.bat")<>"" Then
    Kill filepath$ & "comm.bat"
    End If
    ' создайте командный файл:
    filenum1%=Freefile()
    Open filepath$ & "comm.bat" For Output As filenum1%
    ' строка, запускающая внешнюю программу "programma.exe"
    Print #filenum1,"programmat.exe"
    ' а эта строка создает флаговый файл
    Print #filenum1,"echo > " & filepath$ & "flag"
    Close #filenum1
    'запустите командный файл
    taskId=Shell(filepath$ & "comm.bat",7)
    ' проверьте taskId
    ....
    'ждать пока не закочиться выполнение внешней программы и не создастся флаговый файл
    Do While Dir(filepath$ & "flag")=""
    Loop
    ' продолжать выполнение агента
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    lionk
    жесть ... а если сбой ?? нетуж лучше т.к. как я привёл выше - ВОТ
     
  6. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    lionk
    Спасибо, почти то... только можно батник часто прекращает исполняться только после закрытия запускаемого файла... решить как-то можно?

    Morpheus
    Если у меня файл другого разрешения, то не запускается / не всегда запускает
     
  7. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    fedotxxl
    не замарачивайтесь с этими батниками, юзайте
    скрипт запустить и дождаться окончания работы программы
    Код (Text):
     Set WShell = CreateObject("WScript.Shell")
    ReturnCode = WShell.Run("C:\boot.ini", 1, True)
    Msgbox "123"
     
  8. Sandr

    Sandr Гость

    Уберите
    Код (Text):
     Do While Dir(filepath$ & "flag")=""
    Loop
    А как Вы думаете винда должна определять, что Вы хотите запустить? :)

    А вообще Morpheus прав, бантик этот нужен только для модального запуска..
     
  9. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Вообщето да... мне кажеть что этот Shell на самом деле обычная "обёртка" к WinAPI функции ShellExecute ( которую кстати можно задекларировать и юзать напрямую из лотуса ) ... так вот этот ShellExecute запускает файлы с асоциированными программами, тоесть doc файл он запустит в Word и т.д.
     
  10. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Sandr
    У меня этого кода нет

    Morpheus
    Не знаю, но Shell не в какую не хочет запускать txt... чем это объяснить?

    Странно, но заработало... только при первом запуске убило лотус :) . Последний параметр за что отвечает? За синхронизацию (если true, то будет ждать пока не запуститься приложение?)?
     
  11. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    fedotxxl
    SHell и не будет запускать... читайте что я писал ... я писал про ShellExecute

    что бы запустить txt файл есть 2 ваварианта
    1.
    Код (Text):
        Dim result As Integer
    result = Shell( Environ("WinDir") + "\NOTEPAD.EXE C:\boot.ini" , 1)
    где C:\boot.ini можно заменить на переменную с путём к txt файлу

    ну и 2й вариант запустить и ддождаться пока текстовый файл не закроют
    Код (Text):
    Set WShell = CreateObject("WScript.Shell")
    ReturnCode = WShell.Run("C:\boot.ini", 1, True)
    Здесь True заменить на False и тогда скрипт не бедут дожидаться пока программа выполниться а пайдёть дальше
     
  12. Sandr

    Sandr Гость

    По Вашему это Лотус ассоциирует файлы с программами? :) Все это дело находится в реестре винды.. о чем я выше и написал... естесственно что файл без расширения не запустится...
     
  13. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Sandr
    Ша та мы как глухой с немым об одном и томже говорим )))
     
  14. nnikishi

    nnikishi Гость

    Можно еще потренироваться с Auto Launch (3 вкладка в свойствах формы)
     
  15. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    nnikishi
    та ну тож автозапуск... и запускает он то что вложенно в документ...
     
  16. Sandr

    Sandr Гость

    Вообще, если ShellExecute не модет открыть файл, нужно ловить ошибку и в случае, если ошибка, то открывать с эксплоером
    Shell("explorer.exe " & filename, 1)

    В этом случае и файл без расширения откроется нормально...
     
  17. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Sandr
    неа. шота нето ... explorer откроет папку . как он откроет файл? он с файлами тут вообще никак не связан. ассоциации как уже говорилось в реестре
     
  18. Sandr

    Sandr Гость

    Он откроет его как текстовый файл.
    Как вариант, если и эксплоер не окроет его, то предлагаьб сохранять файл на диск.. .я такое уже делал :(
     
  19. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    та ну некрасиво.. лучше уж так
    Код (Text):
    Dim result As Integer
    result = Shell( Environ("WinDir") + "\NOTEPAD.EXE C:\boot.ini" , 1)
    ( в случае если знаеш ассоциации ) или WScript - тут точно правильно запустить
     
  20. K-Fire

    K-Fire Гость

    Попробуйте "start file.ext"
     
Загрузка...
Похожие Темы - Как запустить (открыть)
  1. cyber23
    Ответов:
    5
    Просмотров:
    130
  2. Amfion
    Ответов:
    20
    Просмотров:
    1.105
  3. Sibiria
    Ответов:
    4
    Просмотров:
    1.431
  4. grenot
    Ответов:
    0
    Просмотров:
    898
  5. mike
    Ответов:
    24
    Просмотров:
    5.603

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