Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2017, 19:25   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию Запрет действий с книгой, с которой запускается стороннее приложение

Здравствуйте Уважаемые программисты!
Подскажите пожалуйста, как исправить код "test" ниже (vba excel 2003), чтобы в то время как выполняется приложение "форма.exe" нельзя было закрыть или свернуть книгу, из которой по кнопке на листе запускается этот макрос "test"? Иными словами чтобы после запуска "форма.exe", запретить все действия с книгой, до тех пор пока "форма.exe" не будет закрыто?
Сейчас код работает так: когда открыто приложение "форма.exe", то закрыть книгу нельзя (т.е. щелчок по крестику окна книги ничего не дает), но стоит только закрыть приложение "форма.exe", как книга сразу закрывается, т.е. как будто при открытом приложении "форма.exe" все действия пользователя с книгой запоминаются и по закрытии приложения выполняются.
Заранее спасибо!

Код:
Sub test(Optional x As Boolean)
   Dim MyPath
   MyPath = Shell(Environ("temp") & "\" & "форма.exe " & ThisWorkbook.FullName, 1)
   Cont_Proc
End Sub

Function Cont_Proc() As Boolean
   Dim Process As Object
   Dim Flag As Boolean
   Do
      Flag = False
      For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
         If Process.Caption Like "форма*" Then Flag = True: Exit For
      Next
   Loop Until Flag = False
   Cont_Proc = True
End Function

Последний раз редактировалось ольгаг; 24.02.2017 в 19:59.
ольгаг вне форума Ответить с цитированием
Старый 25.02.2017, 19:09   #2
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Может быть с приложением "форма.exe" запускать на заднем плане форму UserForm1.Show 1 (как модальную)? Но я не знаю как это осуществить?
ольгаг вне форума Ответить с цитированием
Старый 25.02.2017, 20:11   #3
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Получилось так:

Код:
Sub test(Optional x As Boolean)
   Dim MyPath
   MyPath = Shell(Environ("temp") & "\" & "форма.exe " & ThisWorkbook.FullName, 1)
   UserForm1.Show 1
   Cont_Proc
End Sub

Function Cont_Proc() As Boolean
   Dim Process As Object
   Dim Flag As Boolean
   Do
      Flag = False
      For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
         If Process.Caption Like "форма*" Then Flag = True: Exit For
      Next
   Loop Until Flag = False
   Cont_Proc = True
End Function
Подскажите пожалуйста, где можно прописать "Unload UserForm1", чтобы эта форма выгружалась при закрытии (завершении) процесса "форма.exe"?
Заранее спасибо!
ольгаг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается консольное приложение (C++) -Андрей- Помощь студентам 28 17.05.2014 13:15
Flash Запрет на совершение повторных действий по IP glazik Общие вопросы Web 3 18.01.2013 02:43
Зашить стороннее приложение в ресурсы и запускать только в определенном случае Dzib C# (си шарп) 9 05.09.2012 15:50
не запускается приложение panuta БД в Delphi 2 16.09.2011 14:42
Передача информации в другое приложение и выполнение в нем действий!!! Andersen1313 Общие вопросы Delphi 2 17.04.2011 13:55