К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Открыть модальное окно windows. Как?

Гость
0 - 27.03.2013 - 21:07
Доброго времени суток!
Необходимо из 1С при наступлении некого события открыть поверх всех окон модальное окно windows.
В настоящий момент используется такой код:
WshShell = Новый COMObject("WScript.Shell");
WshShell.Popup(Текст,, "Заголовок", 0+64);
Проблема в том, что окно открвается не поверх всех окон, а где-то на заднем плане.
В общем нужно сообщение вывести таким образом, чтобы его сразу увидели и пока не нажали ОК, работать дальше не смогли.



Гость
1 - 27.03.2013 - 21:16
а чем модальное окно 1С не устраивает?
2 - 27.03.2013 - 21:24
(0) не прокатит, будут жать ОК бездумно. ни на что не обращая внимания.
задачку надо генерить и ждать ввод ответа...
Гость
3 - 28.03.2013 - 09:41
1-Синегурочка >Очевидно тем, что при свернутой 1С пользователь его не увидит.

2-Чучундер >Пусть жмут. Главное обратить внимание пользователя, что произошло некое событие.
Гость
4 - 28.03.2013 - 10:04
ТС похоже спятил. Однако весна

1. При наличии двух модальных окон из разных программ одно из них всегда будет внизу.

2. послать все модальные окна в одно место или в зад ТС пользователь может элементарно - либо с клавиатуры либо мышкой. И продолжить свои делишки на компе без нажатия ОК.

3. Пользователь имеет право бить морду лица ТС. Сразу. Без суда и следствия


чтобы окно висело и не пускало пользователя дальше - это надо очень постараться. Хотя в общем то способы известны
Гость
5 - 28.03.2013 - 10:35
4-Helen1986 >
Конечно с "работать дальше не смогли" это я загнул.
Пользователь сам попросил уведомлять его о событии, поэтому он сам заинтересован их получать. Что он будет с ними делать после вывода, это его личные проблемы.
А кто тут ненормальный уже давно всем известно.

Давайте перефразирую вопрос.
Есть задача уведомлять пользователя о наступлении некого события в 1С, даже если окно 1С свернуто.
Как это лучше сделать?
На мой взгляд это было бы окно с текстом уведомления которое открывается поверх всех окон.
Гость
6 - 28.03.2013 - 10:56
5-Noldor > Послать задание какому-нить "мессенджеру", чтоб он уведомил пользователя, что ему есть сообщение. Этих "мессенджеров", как кошек на помойке.
И не [*****] мозг.
Гость
7 - 28.03.2013 - 11:13
(6) да ТС туп и о мессенгерах понятия не имеет
к тому же програмка на сях или дельфях с указанной возможностью без установки в среде вендоф пишется за 5 минут (ибо если нормальный админ возьмет ТС или пользователя за .... одно место - фиг он поставит мессенджера)
Гость
8 - 28.03.2013 - 11:33
Ну вот. Задача решена.
Обошелся и без мессенгеров и без самописных программулек.
Гость
9 - 28.03.2013 - 11:36
Можно в конце, после паузы, передать в ОС нажатие клавиш Alt+Tab или Alt+Shift+Tab, по памяти:

WScript.sleep(500)
WshShell.SendKeys "^+{Tab**"

Чтобы сработало в Terminal Server - в его настройках должна быть включено "исп-е локальных ресурсов" - "клавиатура".

И о чудо - Alt+Tab заработает, и бедным бухам не нужно будет рыскать в день раз по триста глазами и рукой+мышкой по всему верху экрана в поисках мелконькой кнопки свернуть. О-ооо! По моей статистике - эта фишка включена только у 1/100 клиентов. Берегите бухш, они такие несчастные...
Гость
10 - 28.03.2013 - 11:37
Noldor - раз уж взбаламутили - колитесь! Неужто двойным вызовом? Или свернули терминал программно?
Гость
11 - 28.03.2013 - 11:49
10-economist >Нет. Все гораздо проще. Я вспомнил про процедуру ПоказатьОповещениеПользователя
Её функционала вполне достаточно для решения моей задачи.
Гость
12 - 28.03.2013 - 11:56
Понятно. Кстати, проверил Alt+tab, как в (9) - работает! При этом WSH/WBS скрипт может быть достаточно сложным и полезным. В частности, у меня он распознает скан PDF-а с невидимым searchable-слоем в момент его прикрепления к документу 1С, после чего возможен fulltextsearch по текстам договоров, с/ф итп. Опять же, наколенный EDM...
Гость
13 - 01.04.2013 - 17:58
пан-директор хорош свою глупость выпячивать
Гость
14 - 01.04.2013 - 17:59
автор открой для себя месаджбокс
Гость
15 - 01.04.2013 - 18:00
(4) пункт 1 опровержим
Гость
16 - 01.04.2013 - 18:13
(15) в трехмерном пространстве?
если программа1 вывалила модальное окно и программа2 вывалила тоже модальное окно - одно из них будет ПОД...


а под этими модальными будут все остальные окна. Вроде так

можно конечно сделать чтобы модальное окно все время "всплывало" в случае перекрытия...
Гость
17 - 01.04.2013 - 18:21
(16) рядом
Гость
18 - 01.04.2013 - 18:30
будем считать что размеры каждого модального окна равны размеру экрана


кстати, переключаться между этими модальными можно
Гость
19 - 01.04.2013 - 19:36
(18) индекс и ордер могут быть равными
по сути оба будут первыми, а уж как увидит их индивидуум ))


автору
Скрыпт=Новый COMObject("MSScriptControl.ScriptControl");
Скрыпт.language="vbscript";
Скрыпт.eval("msgbox(123,4096)")
Гость
20 - 01.04.2013 - 19:39
(18) лучче расскажи гипервизора процессоры 1%, гостя процессоры сопоставленные 30% - где остальные 29% ? - кто украл у меня счастье ?
Гость
21 - 01.04.2013 - 19:40
и попутно - имею ли моральное право использовать х64 на 384 мб памяти ?
(это не стеб - реальное смятение чувств)
Гость
22 - 01.04.2013 - 19:51
(19) один фиг в упор не увидит - хотя ТС хочет чтобы увидел. Не выйдет - особенности человеческого воспрятия. Если он занят чем то более серьезным в данный момент (с его точки зрения)

(20) сперли. прямо на глазах.
а если серьезно - ищи, кто замаскировался в системе

(21) у админа есть загрузочная флешка 64 битная - там какой то огрызок виндов грузится и работает, правда, я работала с ней на 512. Но если нет сильно тяжелых приложений - вроде даже мег 200 оперативки остается.
Гость
23 - 01.04.2013 - 21:40
не венда - боевая почта постфикс - грызут сомнения - может никчему баловстово с 64 (гость)


К списку вопросов






Copyright ©, Все права защищены