Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Открыть модальное окно windows. Как? (http://forums.kuban.ru/f1040/otkryt-_modal-noe_okno_windows_kak-3947182.html)

Noldor 27.03.2013 21:07

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

sinegurochka 27.03.2013 21:16

а чем модальное окно 1С не устраивает?

Чучундер 27.03.2013 21:24

(0) не прокатит, будут жать ОК бездумно. ни на что не обращая внимания.
задачку надо генерить и ждать ввод ответа...

Noldor 28.03.2013 09:41

1-Синегурочка >Очевидно тем, что при свернутой 1С пользователь его не увидит.

2-Чучундер >Пусть жмут. Главное обратить внимание пользователя, что произошло некое событие.

Helen1986 28.03.2013 10:04

ТС похоже спятил. Однако весна

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

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

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


чтобы окно висело и не пускало пользователя дальше - это надо очень постараться. Хотя в общем то способы известны

Noldor 28.03.2013 10:35

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

Давайте перефразирую вопрос.
Есть задача уведомлять пользователя о наступлении некого события в 1С, даже если окно 1С свернуто.
Как это лучше сделать?
На мой взгляд это было бы окно с текстом уведомления которое открывается поверх всех окон.

VZ 28.03.2013 10:56

5-Noldor > Послать задание какому-нить "мессенджеру", чтоб он уведомил пользователя, что ему есть сообщение. Этих "мессенджеров", как кошек на помойке.
И не [filolog]ипать[/filolog] мозг.

Helen1986 28.03.2013 11:13

(6) да ТС туп и о мессенгерах понятия не имеет
к тому же програмка на сях или дельфях с указанной возможностью без установки в среде вендоф пишется за 5 минут (ибо если нормальный админ возьмет ТС или пользователя за .... одно место - фиг он поставит мессенджера)

Noldor 28.03.2013 11:33

Ну вот. Задача решена.
Обошелся и без мессенгеров и без самописных программулек.

economist 28.03.2013 11:36

Можно в конце, после паузы, передать в ОС нажатие клавиш Alt+Tab или Alt+Shift+Tab, по памяти:

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

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

И о чудо - Alt+Tab заработает, и бедным бухам не нужно будет рыскать в день раз по триста глазами и рукой+мышкой по всему верху экрана в поисках мелконькой кнопки свернуть. О-ооо! По моей статистике - эта фишка включена только у 1/100 клиентов. Берегите бухш, они такие несчастные...

economist 28.03.2013 11:37

Noldor - раз уж взбаламутили - колитесь! Неужто двойным вызовом? Или свернули терминал программно?

Noldor 28.03.2013 11:49

10-economist >Нет. Все гораздо проще. Я вспомнил про процедуру ПоказатьОповещениеПользователя
Её функционала вполне достаточно для решения моей задачи.

economist 28.03.2013 11:56

Понятно. Кстати, проверил Alt+tab, как в (9) - работает! При этом WSH/WBS скрипт может быть достаточно сложным и полезным. В частности, у меня он распознает скан PDF-а с невидимым searchable-слоем в момент его прикрепления к документу 1С, после чего возможен fulltextsearch по текстам договоров, с/ф итп. Опять же, наколенный EDM...

smaharbaZ 01.04.2013 17:58

пан-директор хорош свою глупость выпячивать

smaharbaZ 01.04.2013 17:59

автор открой для себя месаджбокс

smaharbaZ 01.04.2013 18:00

(4) пункт 1 опровержим

Helen1986 01.04.2013 18:13

(15) в трехмерном пространстве?
если программа1 вывалила модальное окно и программа2 вывалила тоже модальное окно - одно из них будет ПОД...


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

можно конечно сделать чтобы модальное окно все время "всплывало" в случае перекрытия...

smaharbaZ 01.04.2013 18:21

(16) рядом

Helen1986 01.04.2013 18:30

будем считать что размеры каждого модального окна равны размеру экрана


кстати, переключаться между этими модальными можно

smaharbaZ 01.04.2013 19:36

(18) индекс и ордер могут быть равными
по сути оба будут первыми, а уж как увидит их индивидуум ))


автору
Скрыпт=Новый COMObject("MSScriptControl.ScriptControl");
Скрыпт.language="vbscript";
Скрыпт.eval("msgbox(123,4096)")

smaharbaZ 01.04.2013 19:39

(18) лучче расскажи гипервизора процессоры 1%, гостя процессоры сопоставленные 30% - где остальные 29% ? - кто украл у меня счастье ?

smaharbaZ 01.04.2013 19:40

и попутно - имею ли моральное право использовать х64 на 384 мб памяти ?
(это не стеб - реальное смятение чувств)

Helen1986 01.04.2013 19:51

(19) один фиг в упор не увидит - хотя ТС хочет чтобы увидел. Не выйдет - особенности человеческого воспрятия. Если он занят чем то более серьезным в данный момент (с его точки зрения)

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

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

smaharbaZ 01.04.2013 21:40

не венда - боевая почта постфикс - грызут сомнения - может никчему баловстово с 64 (гость)


Текущее время: 21:54. Часовой пояс GMT +3.