На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Создать процесс Excel так, чтобы пользователь никак его не смог испортить. , Visual Basic v.6.0.
    Текущая ситуация:
    ExpandedWrap disabled
      Dim oExcelApp As New Excel.Application  'Приложение.
      Dim oDocExcel As New Excel.Workbook 'Документ Excel.
      Dim oExWs As New Excel.Worksheet 'Таблица документа Excel.
       
       Set oExcelApp = New Excel.Application
       oExcelApp.Visible = False
       Set oDocExcel = oExcelApp.Workbooks.Open(g_oCommonDialog.FileName, , True)
       Set oExWs = oDocExcel.ActiveSheet
       
      ...
       
       Call oDocExcel.Close(False)
       Call oExcelApp.Quit
       
       If Not oExWs Is Nothing Then Set oExWs = Nothing
      If Not oDocExcel Is Nothing Then Set oDocExcel = Nothing
      If Not oExcelApp Is Nothing Then Set oExcelApp = Nothing


    Но есть проблема. Если пользователю приспичит открыть какой-нибудь документ Excel - он откроется именно в этом процессе. И если пользователь закроет Excel - уничтожится и процесс - все поломается.

    То есть, Visible = false - не спасение.

    Как заблочить Excel.exe от внешнего вмешательства?
      Workspace
        Цитата Akina @

        Нужно подробнее.
          Подробнее в MSDN. Писать романы с планшета неудобно. И лениво.
            Цитата Сергей85 @
            То есть, Visible = false - не спасение.
            Как заблочить Excel.exe от внешнего вмешательства?

            Interactive = false ?
              Неа.

              27 Set oExcelApp = New Excel.Application
              28 oExcelApp.Visible = False
              oExcelApp.IgnoreRemoteRequests = True

              Добавлено
              Цитата leo @


              Добавлено
              Уйё. Надо возвращать в False при выходе из программы или фатальной ошибке. Иначе все остальные процессы Excel тоже оказываются заблоченными. Посмотрим, поможет ли перезагрухка.

              Добавлено
              Ахаха, полный треш: перезагрузка НЕ помогает, пока кодом обратно в False не вернешь. В общем, эффективный способ - если быть предельно аккуратным.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0280 ]   [ 17 queries used ]   [ Generated: 29.03.24, 06:09 GMT ]