Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Программное закрытие MsgBox - сообщения


Автор: НеуФазендник 17.5.2006, 15:32
Прошу подсказать, каким образом программно создать диалоговое окно типа msgBox, чтобы затем его можно было бы так же программно удалить через определенное время, в случае, если не следует никакой реакции пользователя. Если вариантов нет, прошу посоветовать, как реализовать подобный диалог? smile 

Автор: Akina 17.5.2006, 16:43
Нарисовать такую форму и на нее таймер, который закроет ее по истечении заданного времени. 

Автор: Artiom 17.5.2006, 17:11
Здесь посмотри - привер на VB. наверное можно переделать на VBA
http://forum.sources.ru/index.php?showtopic=49896 

Автор: НеуФазендник 18.5.2006, 08:30
Цитата(Artiom @ 17.5.2006,  17:11)
Здесь посмотри - привер на VB. наверное можно переделать на VBA
http://forum.sources.ru/index.php?showtopic=49896

Спасибо, Artiom.
Посмотрел ссылку.Идея ясна. Есть еще вопрос.
Ключевыми (интересными мне) в приведенном коде являются две строки:
1. SendKeys "{enter}"
делает ни что иное, как за пользователя жмет кнопку на диалоговом окне. 

2.hMessageBox = FindWindow("#32770", MsgBoXCaption) 
вроде как определяет присутствие самого диалогового окна.

Вопрос в том, откуда берется дескриптор #32770.
И вообще, где взять справку по FindWindow()  ? 
  

Автор: Artiom 18.5.2006, 10:37
Цитата(НеуФазендник @  18.5.2006,  08:30 Найти цитируемый пост)
И вообще, где взять справку по FindWindow()  ? 

В MSDN есть 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/findwindow.asp 

Автор: Дмит 18.5.2006, 12:19
Можно без API:

Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")

WshShell.Popup "У вас всё в порядке?", 1, "Ответте на вопрос"
'popup(надпись, на сколько секунд выскакивает, заголовок, тип)

 

Автор: НеуФазендник 25.5.2006, 16:22
Дмитрий, это то, что доктор прописал.
Честно говоря меня ни один год мучал вопрос, как это реализовать, а поскольку букварей по VBA никогда не читал, довольствуясь англоязычной справкой VBA-Excel в крайних случаях, то никак не удавалось наткнуться на сею мудрую штуковину. 
Огромное спасибо. Теперь завалю свои формы всякими глупостями, вечно всплывающими в самые неподходящие моменты smile

Добавлено @ 16:24 
Цитата(Artiom @ 18.5.2006,  10:37)
Цитата(НеуФазендник @  18.5.2006,  08:30 Найти цитируемый пост)
И вообще, где взять справку по FindWindow()  ? 

В MSDN есть 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/findwindow.asp

Artiom, спасибо за ссылочку! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)