Запуск самого себя (удачное решение?)

Программирование на Visual Basic for Applications
dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Запуск самого себя (удачное решение?)

Сообщение dormouse » 09.06.2011 (Чт) 7:57

Есть msa-база, в которой пользователем через диалог меняются настройки среды, и по кнопке "Применить" программой предлагается перезапуск базы, чтоб изменения вступили в силу. Второй экземпляр базы сам акцесс не даст запустить. Да и не нужен он. Надо ещё выйти из текущего экземпляра. Вобщем, надо запустить базу с отсрочкой - на то время, пока будет происходить выход из текущего экземпляра. Получилась такая дикость.
Код: Выделить всё
'*****здесь у нас переключается интерфейс с полного на ограниченный - для пользователя. и обратно
CurrentDb.Properties("AllowShortcutMenus") = Not CurrentDb.Properties("AllowShortcutMenus")
CurrentDb.Properties("AllowFullMenus") = Not CurrentDb.Properties("AllowFullMenus")
CurrentDb.Properties("AppTitle") = "Заголовок базы" & IIf(CurrentDb.Properties("AllowShortcutMenus"), " (режим отладки)", "")
'*****чтоб ясно было, ради чего всё это городится :)
'а дальше тот самый запрос с предложением перезапустить программу
If MsgBox("Чтоб изменение режима вступило в силу, надо перезапустить программу." & vbCrLf & vbCrLf & "Перезапустить?", vbQuestion + vbYesNo, "Переключение режима редактирования кода программы") = vbYes Then
    Shell "cmd /c ping -n 5 localhost & msaccess """ & CurrentDb.Name & """", vbHide
    DoCmd.Quit
End If

Она работает :) Может быть, есть более изящный способ?
VBA, MSA97

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Запуск самого себя (удачное решение?)

Сообщение alibek » 09.06.2011 (Чт) 14:02

Про команду sleep слышал?
Lasciate ogni speranza, voi ch'entrate.

CyberPunk
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.06.2006 (Пт) 7:54

Re: Запуск самого себя (удачное решение?)

Сообщение CyberPunk » 09.06.2011 (Чт) 15:03

а откуда этот sleep он выполнять будет?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Запуск самого себя (удачное решение?)

Сообщение alibek » 10.06.2011 (Пт) 9:02

Из cmd. Это лучше, чем делать паузу в 5 секунд с помощью ping.
Lasciate ogni speranza, voi ch'entrate.

dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Re: Запуск самого себя (удачное решение?)

Сообщение dormouse » 10.06.2011 (Пт) 9:47

А пример использования этого слипа можно?
Может быть, я не в курсе, но в WinXP в cmd его нет. Можно написать скрипт или экзешник, который в cmd вызывать, но это уже ещё большие костыли, чем пинг
VBA, MSA97

CyberPunk
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.06.2006 (Пт) 7:54

Re: Запуск самого себя (удачное решение?)

Сообщение CyberPunk » 10.06.2011 (Пт) 12:00

Что то мой cmd такой команды не знает...

1.jpg
1.jpg (24.76 Кб) Просмотров: 1928


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList