Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Тут на форуме не раз возникали замечания на тему, что в NeoBook не хватает тех или иных мелких, но иногда полезных функций. Мне думается, что следует попытаться исправить эту ситуацию с помощью плагина, т.к. VB или Java знают далеко не все необукеры, к тому же, на мой взгляд, плагин намного более эффективное средство нежели чем, например, тот же VBS. С учетом последнего вопроса об анимации внешних необушных окон, решил реанимировать свой самый первый плагин, который давно-давно делал.
В архиве (см.прикрепление) находятся две версии плагина (Design и Runtime), подобие справки, и демка.
27.02.2011
Мышь и клавиатура
zmShowMousePointer - Показать/Скрыть указатель мыши. zmSetMouseMonitor - Установить монитор мыши. zmConfigMouseMonitor - Конфигурирование монитора мыши. zmDelMouseMonitor - Удалить монитор мыши. zmKBChangeLayout - Изменить раскладку клавиатуры для текущего активного окна. zmKBGetLayout - Определить раскладку клавиатуры для текущего активного окна.
zmColorBox - Отобразить диалог выбора цвета. zmFontBox - Отобразить диалог выбора шрифта. zmTrayIcon - Создать в системном лотке значок приложения. zmTrayBalloon - Отобразить сообщение в системном лотке. zmDeleteTrayIcon - Удалить значок из системного лотка. zmExitWindows - Завершение работы: выключение компьютера / перезагрузка /завершение сессии.
Окна
zmFindWindow - Найти окно по заголовку и имени класса. zmGetWindowHandle - Получить дескриптор (HWND) окна по заголовку. zmGetWindowTitle - Получить имя класса и/или текст заголовка окна. zmSetWindowTitle - Установить новый текст заголовка окна. zmShowWindow - Скрыть/Показать/Свернуть/Развернуть/Закрыть окно. zmSetWindowPos - Установить положение окна. zmSetWindowTransparent - Установить уровень прозрачности окна (Windows 2000 и выше). zmCancelWindowTransparency - Отменить свойство прозрачности окна и сделать его непрозрачным (W2k и выше). zmIsWindow - Определить состояние окна (видимость, свернуто, развернуто, и т.п.). zmEnableWindow - Сделать активным неактивное окно. zmDisableWindow - Сделать неактивным окно. zmGetWindowRectangle - Получить положение и размер окна. zmGetForegroundWindow - Получить дескриптор (HWND) верхнего окна в системе. zmSetForegroundWindow - Сделать верхним в системе и активизировать указанное (по дескриптору) окно. zmGetExeNameByHandle - Получить имя файла приложения по дескриптору окна. zmGetDesktopRectangle - Получить координаты области рабочего стола, не скрытой панелью задач.
Окна NeoBook
zmSetCustomWindowPos - Установить положение и размеры внешнего окна (CustomWindow) NeoBook . zmShowCustomWindow - Скрыть/Показать/Свернуть/Развернуть/Закрыть внешнее окно NeoBook. zmIsCustomWindow - Определить состояние внешнего окна NeoBook (видимость, свернуто, развернуто, и т.п.). zmEnableCustomWindow - Сделать активным неактивное внешнее окно NeoBook. zmDisableCustomWindow - Сделать неактивным внешнее окно NeoBook. zmSetCustomWindowTransparent - Установить уровень прозрачности внешнего окна NeoBook (W2k и выше). zmCancelCustomWindowTransparency - Отменить свойство прозрачности внешнего окна NeoBook и сделать его непрозрачным (W2k и выше). zmAnimateCustomWindow - Скрыть/Показать с анимационным эффектом внешнее окно (CustomWindow) NeoBook. zmSetCustomWindowMask - Наложить маску на внешнее окно (CustomWindow) NeoBook. zmShowInRectangle - Отобразить внешнее окно (Custom Window) в объекте прямоугольник
Главное окно
zmSetOnMoveSize - Назначить подпрограмму для события перемещения и/или изменения размера главного окна.
Файлы и папки
zmFolderSize - Определить размер в байтах указанного каталога (папки). zmDeleteFolder - Удалить папку (в т.ч. и непустую). zmOpenWithDefault - Открыть файл в программе "по умолчанию". zmCreateLink - Создать ярлык. zmFileGetAtrribute - Получить указанный атрибут файла или папки. zmFileSetAtrribute - Установить/Снять указанный атрибут файлу или папке. zmClearIECache - Очистить временную папку Internet Explorer.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Можно, конечно, сделать не одну подпрограмму, а несколько (на каждый тип события мыши, например, OnLeftDown, OnLeftUp, OnRightDown, и т.д.), но мне показалось более удобным использовать одну единую подпрограмму, а тип события анализировать уже внутри неё по содержимому переменной. Но можно сделать и классически, т.е. на каждое событие отдельную подпрограмму.
Добавлено (25 Июль 2011, 04:07) ---------------------------------------------
Quote (mishem)
Я так и не понял.
Ты думаешь я понял!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Подпрограмма монитора мыши срабатывает КАЖДЫЙ РАЗ при событиях мыши, т.е. нажал кнопку - подпрограмма сработала, отпустил кнопку - подпрограмма сработала
Ну, по крайней мере этот момент прояснился. Надо то, что ты написал здесь в справку добавить. Про отжатие кнопки не очевидно сразу. В справке написано лишь про "нажатие", а не про "события": "Подпрограмма - имя подпрограммы, выполняющейся всякий раз при нажатии на какую-либо кнопку мыши."
Quote (Peter)
мне показалось более удобным использовать одну единую подпрограмму, а тип события анализировать уже внутри неё по содержимому переменной
Мне тоже кажется, что сделано удобно.
Quote (mishem)
через диспетчер отключил
Через диспетчер не обязательно, для закрытия окна есть Alt+F4, для того, чтобы нажать на кнопку ОК в алерте (и на любую кнопку, на которой есть фокус) достаточно нажать клавишу "пробел".
Quote (Peter)
Ты думаешь я понял!
Ладно вам стебаться :), я закомментировал в подпрограмме то, что в данном примере лишнее и нужно мне было для других экспериментов. Я же написал выше, что в подпрограмме только "отобразить алерт". Просто чтобы визуализировать, что подпрограмма отработала.
Не знаю, может это у меня что с компьютером... Проверьте, плиз. В том проекте что я дал (прикрепляю здесь его без изменений, чтобы вам не искать) если щелкнуть мышью по объекту (нажатие с задержкой, по кнопке, например), то подпрограмма срабатывает дважды (алерт появляется два раза), как и должна. А если щелкнуть по странице (а не по объекту), то подпрограмма срабатывает лишь на событие zmLBD. И сработает на zmLBU только если удержать кнопку нажатой и клавишей "Пробел" закрыть алерт, после чего только отжать кнопку (вот тут появится тогда второй алерт, говорящий о том, что подпрограмма сработала второй раз). У меня такое вчера было и с кнопкой на которой не было никакого кода - на кнопке без кода подпрограмма срабатывал один раз, а на кнопке с командами - срабатывала дважды (сегодня это почему-то не повторяется, хотя я в проекте ничего не менял, может фаер что мутит...).
Чтобы закрывать алерты используем клавишу Пробел, а не мышь. Чтобы закрыть проект используем комбинацию Alt+F4.
А я и не стебался! Мне действительно трудно понять логику работы подпрограммы, рАвно, как и её смысл в существующем виде.
На самом деле, все работает так, как и должно работать, а нестабильность количества "алертов" кроется в "фокусах" объектов над которыми в каждый момент события мыши находится указатель.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Он 1000 лет там не нужен. все действия можно отследить в отладчеке. А алерт только напрягает.
Добавлено (25 Июль 2011, 22:25) --------------------------------------------- Кстати, если алерт уберешь, думаю сразу поймешь почему срабатывает два раза.
Добавлено (25 Июль 2011, 22:31) --------------------------------------------- Peter,
Quote (Peter)
Но можно сделать и классически, т.е. на каждое событие отдельную подпрограмму.
Вот это конечно было бы лучше. Иначе Вадим правильно заметил, плагин начинает срабатывать на любое событие. А оно это надо? Если нужно только нажатие , а он проверяет и отпускание кнопки мыши. Так же и скрол. Не хочешь читать хелп?
Это верно :). Я просто отвык от него за время работы над последним проектом. Там как раз монитор мыши использую и подпрограмма длинная как портянка, на каждый клик забивала собой весь отладчик, надоедало ждать, поэтому держал отладчик свернутым все время, диагностируя процесс алертами да текстовыми объектами...
Quote (mishem)
Кстати, если алерт уберешь, думаю сразу поймешь почему срабатывает два раза.
Почему два раза - Пётр объяснил - потому, что оба события отрабатываются - нажатие (с некоторой задержкой) и отпускание кнопки мыши.
Quote (mishem)
Если нужно только нажатие , а он проверяет и отпускание кнопки мыши.
А это легко вылечить - если добавить условие, в котором будет указано событие (оно в переменной [zmMouseCode]), на которое нужно реагировать. В принципе получается практически тоже самое, что делать отдельной подпрограммой. И так вполне удобно, просто надо это знать заранее. А пока я этого не понимал подпрограмма отрабатывала два раза, чем ставила меня в тупик. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
показать алерт, чтобы визуализировать факт выполнения подпрограммы.
Худшего решения просто не придумать!
Quote (mishem)
все действия можно отследить в отладчеке
Сто раз прав Мишем!
"Хушего решения" потому, что пока не закроется окно-предупреждение (алерт) подпрограмма НЕ ПОЙДЕТ дальше! Ну, а последствия этой "особенности" предлагается к самостоятельному рассмотрению.
Quote (Вадим)
Почему, клик по объекту заставляет подпрограмму отработать дважды, а клик просто по странице - единожды?
Нет, не верно! Все зависит от того в фокусе чего (точнее над чем) находится курсор мыши в момент появления "алерта". Вадим, попробуй сам проверить: подвигай, например, главное окошко по экрану, и т.п.
Quote (mishem)
А оно это надо?
Для детектирования типа событий мыши существует специальная переменная. Можно, конечно,и разделить подпрограммы, но это будет несколько "тяжеловесно" для синтаксиса команды, т.е. просто добавится куча дополнительных аргументов по количеству событий мыши. Но, с другой стороны, разделение может помочь избежать путаницы. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
В принципе, когда уже знаешь, всё кажется простым. Думается - как же я сам не догадался раньше? Сейчас вот думаю, ну логично же всё, что было непонятного? Возможно следует просто в справке сказать, что подпрограмма срабатывает при каждом событии, поэтому внутри подпрограммы нужны условия, которые исключили бы срабатывание кода тогда, когда это срабатывание не требуется. Собственно, Пётр уже выше сказал, что добавит. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
подпрограмма срабатывает при каждом событии, поэтому внутри подпрограммы нужны условия, которые исключили бы срабатывание кода тогда, когда это срабатывание не требуется.
Я подумаю ещё над разделением подпрограмм. Все же "классика" это - Классика!
Может так оно даже лучше будет.
Добавлено (25 Июль 2011, 22:52) --------------------------------------------- Кстати, я все-равно собираюсь делать полную перетряску "монитору". Скорее всего пойду тоже по-калассическому варианту, т.е. с дополнительной библиотекой.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
но это будет несколько "тяжеловесно" для синтаксиса команды
Да я подумал об этом. Все только от твоего желания зависит. И вижу что и сам с этим согласен. Кстати промелькнула мысль насчет багов глобального монитора. Может причин в этом ?
Quote (Peter)
Но, с другой стороны, разделение может помочь избежать путаницы.
Да и не только путаницы. Хорошо если код подпрограммы короткий, а если на две страницы.... Будет же при каждом событии обрабатывать. Я тоже сталкивался когда прогонялся код по два раза.
Да, я сейчас тоже склоняюсь к этому подходу, т.е. разделению....
Если честно, то тогда, когда я делал монитор мышки, мне было просто лениво кидать на форму дополнительные комбобоксы, дополнять параметры, и проч. печатную работу делать. Вот потому и возникла мысль об одно подпрограмме и спец-переменной.
Добавлено (25 Июль 2011, 23:11) ---------------------------------------------
Quote (mishem)
насчет багов глобального монитора. Может причин в этом ?
Баги глобального монитора кроются в том, что он создан совершенно иначе, нежели, чем локальный (который, кстати, тоже далек от идеала) с целью избежать применения дополнительной внешней библиотеки. То было мое собственное "изобретение", которое, увы, не увенчалось успехом. Для отлавливания событий мыши вне приложения, похоже, нет иного пути как через использование внешней библиотеки. И с этим тоже не все гладко, т.к. одно дело нормальная операционка, и совсем другое - суперось. Я делал и делаю все исключительно в хрюше и "под хрюшу", ну а как там будет дело обстоять в висте и т.д... Как карта ляжет... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Peter, команда zmDeleteTrayBalloon есть в справке (без описания), но ее нет среди доступных команд плагина. Как можно сейчас закрыть открытый баллун программно?
команда zmDeleteTrayBalloon есть в справке (без описания), но ее нет среди доступных команд плагина.
Это слуайно затесалось!
Видимо, осталось после "проб". Удалю из справки. Я ж говорил, что мелких косяков и нестыковок (помимо явных глюков) в плагине еще полно!
Quote (Вадим)
Как можно сейчас закрыть открытый баллун программно?
Никак! Только командой zmDeleteTrayIcon вместе с удалением значка.
По-поводу времени времени отображения подсказки, подумаю. Теоретически это возможно. Только в висте и в "супероси" работать, все-равно, не будет!
Сейчас глянул в исходник плагина... Кошмар! Как все это ещё работает?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Вообще-то, баллон задуман именно для того, чтобы ПО НЕМУ ЩЕЛКАЛИ !!! Честно говоря, ни разу нигде не встречал, чтобы эта подсказка изчезала после случайного клика мышкой или клавой.
Quote (Вадим)
Это говорит о росте мастерства
Спасибо! Тронут!...
Добавлено (30 Июль 2011, 17:59) --------------------------------------------- Вадим, по-поводу этого "баллона" и трей-значка особо не парься пока. Не исключено(!), что я буду переделывать эти дела полностью. Там видно будет...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Вообще-то, баллон задуман именно для того, чтобы ПО НЕМУ ЩЕЛКАЛИ !!!
В нем удобно выводить и сообщения, на которые не нужна реакция, например сообщение о том, что раскладка была изменена автоматически или еще что-то в таком роде.
В нем удобно выводить и сообщения, на которые не нужна реакция
Для этого существует "штатный" необушный баллон, который работает именно так, как тебе и надо!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Больше на "пипку" похоже. И какая разница где он, этот "усик". При желании "штатный" можно и в трее (где надо) отобразить, правда, для этого потребуется чуток плагин доработать.
Ладно, поживем - увидим...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Выходит, что к некоторым необушным штатным объектам есть доступ для плагинов?
Нет. Только через некоторые простейшие WinAPI-функции, и то - под большим вопросом. Пример этому (возможно единственный, я сам не пробовал) - как Гарик менял (по его словам) некоторые свойства поля ввода.
Quote (Вадим)
Может быть и "пипку" можно с нужной стороны выставлять?
Это от руки зависит!
Quote (Сергей)
как будет реализован механизм на отключение подсказок?!
Я не говорил, что он будет реализован. Поживем - увидим... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Чт, 04 Августа 2011, 16:26 | Сообщение # 1018
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
нет, это отдельная тема. да и вообще нет смысла делать, когда самому сделать можно как хочешь. А в плагине все фиксировано будет, без особых вариантов... так что таокй плаг будет практически бесполезен
Дата: Чт, 04 Августа 2011, 16:46 | Сообщение # 1019
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Quote (DEMBEL)
А в плагине все фиксировано будет, без особых вариантов... так что таокй плаг будет практически бесполезен
Это, смотря уже КАК делать, а точнее - какой для этого будет стимул. В плагине (Delphi или С++) можно сделать так, что пресловутый HTML (вместе с Java и VBS-скриптами) будет долго и нервно курить в сторонке!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться