Добро пожаловать к нам в гости! Наш сайт посвящён программе 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, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
монитор мыши неверно определяет дескриптор обьекта Веббраузер, [zmMouseWindowHandle] не совпадает с полученным значением через GetObjectHandle. Как задавать вопросы
Peter, чтобы воспользоваться командой zmShowInRectangle нужно чтобы окно уже было создано? Какой командой?
На данный момент я пытаюсь в окне отобразить контейнер, следующим образом:
zmShowInRectangle "Container5" "MainWindow" "" ""
...и ничего не происходит... не открывается ничего, не появляется.
Задача передо мной стоит такая - нужно отобразить контейнер, содержащий кнопки и таблицу базы данных в таком окне, которое появляется в размер окна приложения, и которое затем можно обычной кнопкой "развернуть" развернуть на весь экран. В обычном CustomWindow есть только кнопка закрыть... "Развернуть" нету...
Peter, чтобы воспользоваться командой zmShowInRectangle нужно чтобы окно уже было создано?
Да, совершенно верно - окно должно быть предварительно создано командой CustomWindow.
Quote (Вадим)
В обычном CustomWindow есть только кнопка закрыть... "Развернуть" нету...
Создай окно со стилем Sizeable.
Добавлено (24 Март 2011, 00:20) ---------------------------------------------
Quote (DEMBEL)
не совпадает с полученным значением через GetObjectHandle.
Боюсь, что и не будет совпадать, т.е. плагин "вычисляет" дескриптор окна, находящегося под курсором мыши. В то же время объект WebBrowser не является полноценным объектом NeoBook, а представляет собой своего рода контейнер, в который загружен (методом OLE) штатный IE (как ActiveX) в реальности, не пренадлежащий самой NB. Это что-то похожее на RunInRectangle. Поэтому для плагина "окном" будет являться IE, а для NB - контейнер, в котором и отображается IE. Дескрипторы соответственно будут разными. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А как теперь избавиться от двойного отображения окна (сначала по команде CustomWindow, и через долю секунды уже zmShowInRectangle)? Как сделать так, чтобы был виден только результат работы zmShowInRectangle?
А как теперь избавиться от двойного отображения окна (сначала по команде CustomWindow, и через долю секунды уже zmShowInRectangle)?
Этот вопрос уже обсуждали в этой же теме - см. первую страницу.
Добавлено (24 Март 2011, 00:49) --------------------------------------------- А можно сделать и иначе - создать окно в позиции с такими координатами, чтобы оно зрительно проецировалось на нужный прямоугольник, а затем уже "вложить" его в этот прямоугольник.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Осталось теперь еще и внутренний прямоугольник растянуть (в котором таблица базы данных отображается). Покумекаю еще. Если не получится - отпишусь.
Добавлено (24 Март 2011, 03:33) --------------------------------------------- Peter, существует ли возможность навесить код на кнопки управления окном ("Свернуть", "Развернуть", "Свернуть в расчетный размер" или как это правильно называется...)?
Или может быть можно сделать "Монитор окна"? Который бы следил за тем - изменился ли размер окна.
Дело в том, что если пытаться отслеживать состояние окна командой zmSetOnMoveSize, то ее приходится засовывать в бесконечный цикл, что не хорошо. Или я неправильно команду использую?
В прямоугольнике в котором отображается таблица базы данных есть еще полосы прокрутки и панель навигации по базе, это значит, что при разворачивании окна или при его сворачивании до расчетного размера нужно растянуть прямоугольник с учетом этого. Т.е. нужно его постоянно вслед за окном масштабировать.
Сейчас я открываю таблицу (и с этим все хорошо) так: <...> CustomWindow "Результаты" "-10000" "-1" "Container" "Sizeable" zmShowCustomWindow "Container" "Show" zmGetDesktopRectangle "[sleva]" "[sverhu]" "[shirina]" "[visota]" dbpRefresh "file" "table" zmSetCustomWindowPos "Container" "0" "0" "" "" "" "" GoSub "MonitorWindow"
А так я пытаюсь (но не получается) изменить размер прямоугольника в котором таблица базы данных:
P.S.: При запуске приложения устанавливается: SetVar "[maxxxi]" "" // это чтобы цикл все время крутился и мониторил состояние окна. SetVar "[maxistop]" "" // а эти две переменные нужны, чтобы не обновлять все время таблицу SetVar "[ministop]" "1"
Не знаю как сделать так, чтобы при многократных сворачиваниях/разворачиваниях таблица базы следовала бы за размером окна...
Peter, в программах есть реализация прозрачности окна, но текст при этом не прозрачный. Интересно, а в плаге из существующих команд можно такой эфект сделать?
отслеживать состояние окна командой zmSetOnMoveSize, то ее приходится засовывать в бесконечный цикл,
Зачем в цикл? Это, в принципе неверный подход к "смыслу" команды. В программировании есть такое понятие "событие" (все работа Windows и программ, по сути, построена на событиях и сообщениях). Когда растягивается или перемещается главное окно проекта, то происходит некое событие, наступление которого и "отслеживает" данная команда, а точнее она "вешает" подпроограмму на это событие, т.е. при наступлении этого события (изименение размера/положения главного окна проекта) срабатывает указанная подпрограмма. Это будет происходить автоматически всякий раз, и никакой "отслеживающий" цикл тут не нужен в принципе! Но, это все для отслеживания главного окна. В случае же, с внешними (дочерними) окнами эта команда не работает, и задачу нужно решать индивидуально, в зависимости от того, что требуется. Для отслеживания изменения размеров внешнего окна можно применить очень простой приём - создать окно на базе компонента "Контейнер", а в него уже поместить все остальные объекты. У контейнера есть событие "Resize", которое наступает всяких раз при изменени его размеров, т.е. при изменении размеров окна. Вот на это событие и можно "повесить" необходимый скрипт.
Quote (Вадим)
Не знаю как сделать так, чтобы при многократных сворачиваниях/разворачиваниях таблица базы следовала бы за размером окна...
Зачем? Сворачивание или разворачивание окна не меняет его размеры и размеры таблицы. Тут совершенно не за чем "следить".
Quote (Сергей)
в плаге из существующих команд можно такой эфект сделать?
Нет, в плагине эти "возможности" не реализованы. Если я все правильно понял, то темой "прозрачности" занимается Гарик. Думаю, лучше обратиться к нему с этим вопросом.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Вот почему у меня нифига не получалось, вот и начал извращаться.
Quote (Peter)
У контейнера есть событие "Resize"
Е-мое, вот я тупанул! Тэкс... иду переделывать! Спасибо!!
Добавлено (24 Март 2011, 22:58) ---------------------------------------------
Quote (Peter)
Тут совершенно не за чем "следить"
Именно! Круто же я перемудрил на этот раз .
Нужно было то всего-лишь в свойствах прямоугольника (в котором выводится таблица) добавить "привязку" и не городить никаких скриптов отслеживающих размеры и высчитывающих координаты... Тем более в бесконечном цикле. И ведь не только ты, и Дембель в соседней же теме о "привязке" контейнеров говорил! Почему я не подумал, что прямоугольник тоже можно привязать?
"Обожаю NeoBook!" Нужен такой смайлик
Добавлено (30 Март 2011, 02:41) ---------------------------------------------
Quote (Peter)
Соединение с сервером, ожидание ответа, получение и обработка данных... Все это (и ему подобное) и должно выполняться в отдельном потоке.
Нет, не предвидел. Насколько мне помниться изначально было сказано следующее:
Quote (Вадим)
Я как бэ в общепознавательных целях спрашиваю
Quote (Вадим)
Можно ли надеяться, что в плагине будут созданы такие команды?
Нет. В случае с NB универсальных решений (типа "многопоточных плагинов широкого или узкого профиля") не существует, и каждую конкретную задачу потребуется решать индивидуально. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Понятно. Жаль, что пока возможны лишь индивидуальные решения. Но с Информером было бы здорово!!! Очень удобная штука! Работаешь себе, не отвлекаешься, он сам покажет когда появились новые сообщения. А поскольку сейчас он периодически виснет, то насладиться всеми его преимуществами и не удается. Петр, пожалуйста, не отметай идею категорически. Вдруг однажды вдохновение посетит именно в отношении этой темы?? ...А может быть возможны пусть не универсальные команды, но, например, специально для создания разного рода информеров или информеров для юкоза... Тоже бы весьма многим пригодилось.
Quote (mishem)
Добавлю еще выполнение подпрограмм и (или) функций. Из примера именно с информером. Выполняется загрузка с сервера, в это время срабатывает таймер. Скрипт загрузки с сервера обрывается и пошел скрипт из таймера. Пока из таймера скрипт не отработает, предидущий висит, а может и вообще не продолжиться. Не всегда, но случается. И еще, нажатие клавишь. Тоже обрывают работу скрипта.
Плохой случай для подражания! Конечно, мое личное мнение, но терпеть ненавижу, кода каверкают русский язык "под албанщину" и проч. (разные "превед медвед"). Можно понять очепятку, но специально...
Quote (Вадим)
Но с Информером было бы здорово!!! Очень удобная штука!
Вот видишь! А я им вообще не пользуюсь (как и любыми другими информерами тоже). Вполне достаточно зайти на форум, и нажать кнопку "новые сообщения"...
Кому как...
Quote (Вадим)
но, например, специально для создания разного рода информеров или информеров для юкоза... Тоже бы весьма многим пригодилось.
Пока не представляю даже универсальных решений в этой сфере! Одно дело тупая передача инфы по сети (тот же tcp, ftp - там все до мычания просто), и совсем другое дело - информер, где требуется "интеллектуальная" обработка поступившей информации, и в каждом отдельном случае индивидуально.
Quote (Вадим)
Выполняется загрузка с сервера, в это время срабатывает таймер. Скрипт загрузки с сервера обрывается и пошел скрипт из таймера.
Гм...
Добавлено (30 Март 2011, 16:50) --------------------------------------------- Для того, чтобы сделать "по-максимуму" универсально какие-то вещи, нужно хорошо в них разбираться, а я пока даже не представляю, что сможет понадобиться для изготовления "информеров". Потому-что вопросы "коммуникации по сети" (аськи и проч. ботва) никогда не интересовали в принципе. Заметь: я даже в обсуждениях этих вопросов вообще не участвую.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Да я тоже удивился. Когда лог сделал, там и увидел.
Quote (Peter)
и совсем другое дело - информер,
Зачем на информер опираться? Я не знаю принцип работы нескольких потоков, но понимаю так. Одновременно обрабатываются две-три(четыре...., нужное подставить) команды. Можно ли организовать подпрограмму для второй обработки? Один скрипт обрабатывает НБ, второй в этот же момент обрабатывает плагин. Вставляем в подпрограмму функцию, или таймер, или нажатие клавишь и т.д. И если надумаешь, думаю для этого дела был бы лучше совершенно отдельный плагин. Так как после такого счастья потянутся предложения одно за другим.
Добавлено (30 Март 2011, 18:31) ---------------------------------------------
Quote (Peter)
Гм...
Что то мозгами пораскинул... Я не правильно наверно выразился. Обрывает не скрипт, а последоватнльность выполнения подпрограммы. К примеру в подпрограмме " Получить данные с интернет, записать в переменную, записать в файл, открать файл" Когда таймер срабатывает, он может начать выполнять свои команды в любом месте после запятой. Если это упустить из вида и использовать одну и туже переменную к примеру [Rezultat] в подпрограмме и таймере, то понятно что происходит. Получаем " Получить данные с интернет, записать а переменную [Rezultat], (тут срабатывает таймер в котором тоже есть эта переменная). Значение переменной меняется и дальнейший скрипт в подпрограмме не имеет уже ни какого значения. Хочу попробовать с функцией проделать то же самое, но ни как руки не дойдут. Надежда на то, что функцию таймер обрывать не будет. Хотя логика подсказывает что ни какой разницы нет. Не хочешь читать хелп?
терпеть ненавижу, кода каверкают русский язык "под албанщину"
Да я тоже не люблю, а это позабавило :). Солидарен с тобой! И вместе с тем, должны же быть редкие исключения из правил! Если использовать уместно...
Quote (Peter)
Для того, чтобы сделать "по-максимуму" универсально какие-то вещи
Ну, сразу и по максимуму - это вещь, конечно, трудновыполнимая. А вот первый рабочий (для озвученных целей) вариант - это уже реальный и востребованный инструмент! Зачем строить Боинг 747, если нужно лишь перейти дорогу... А потом будет обратная связь - мол, а если вот эдак работать с таким-то ресурсом, то уже не получается. На основе реальной обратной связи можно и к большей универсальности подойти. Если будет время и желание, естественно. Но, тут рассуждать то конечно куда проще, чем эту многопоточность (хотя бы даже один параллельный поток) сотворить... Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Я не знаю принцип работы нескольких потоков, но понимаю так. Одновременно обрабатываются две-три(четыре...., нужное подставить) команды
Команды (именно - КОМАНДЫ необушные) выполняет не плагин, а - НЕОБУШНЫЙ ИНТЕРПРЕТАТОР! И, если он не в состоянии работать "в несколько потоков", то никакая мнгопоточность не получится! Даже в популярном ныне РНР нет многопоточности!
Quote (Вадим)
А вот первый рабочий (для озвученных целей) вариант
Для каких "целей"? - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
т.е. например если команда плагина даже будет так сказать "многопоточной", то нб интерпретатор один фиг будет ждать ее завершения прежде чем перейти к следующей. многопоточность по отношению к плагу имеет ввиду набор операций внутри самого плагина. поэтому Peter и говорит что для каждого случая (набора операций, если уж на то пошло) потребуется персональный подход, что не есть рационально. Да и потом, даже если в плаге и будут команды выполняться многопоточно, нб интерпретатор все равно не двинется дальше и не будет выполнять остальные ваши команды. я правильно понимаю ситуацию? если да, то такая многопоточность не имеет особого смысла и пригодня лишь для целей, преследуемых исключительно в самом плагине. а нам надо в самом сценарии, т.е. интерпретаторе. ладно, думаю эту тему можно уже более не насиловать, все понятно...
Для полноценной реализации Информера, я имел в виду.
Quote (DEMBEL)
ладно, думаю эту тему можно уже более не насиловать
Погоди чуток. А если запускать, скажем, два приложения, которые будут играть роль отдельных самостоятельных потоков, но которые будут общаться между собой, использовать какие-то общие переменные. Возможно же такое? Недавно как раз поднималась где-то тема плагина, который обеспечивает взаимодействие между приложениями.
нб интерпретатор один фиг будет ждать ее завершения прежде чем перейти к следующей.
В общем случае, да. Плагин общается с проектом через "условные" функции, и пока команда (функция) плагина не вернет True или False, необушный интерпретатор будет ждать. Вместе с тем, ничто не мешает вызвать команду плагина, та, в свою очередь, создает поток, запускает его в работу, поток пошел работать, а функция возвращает, например, True. Необушный интерпретатор поехал работать дальше, в то время как плагин продолжает работать в своем параллельном потоке до момента окончания "работы" кода параллельного потока. По такой схеме, например, работает "поиск файлов" с флагом Async.
Я никогда не проводил экспериментов по запуску необушных скриптов в параллельном потоке плагина. Потому не могу сейчас с уверенностью говорить о том, что именно в этом случае произойдет. Параллельный поток будет "параллельным" только для плагина, но плагин-то вызовет НЕОБУШНЫЙ срипт (это, если назначить выполнение скрипта в параллельном потоке, а об этом и речь), который должен (теоретически) выполняться в главном потоке. И вот тут все зависит от возможностей необушного интерпретатора. Если он сможет параллельно выполнять сразу два срипта, то (чисто теоретически!) многопоточность, вроде бы, получается... Но... Тут-то уже и начинаются "лютики-цветочки" многопоточности...
Что будет? А хрен его знает... Можно только одно сказать с уверенностью, что даже если и сработает описанная "многопоточность", то ничего хорошего, кроме глюков, не выйдет!
Единственный вариант, допускающий многопоточность, это то, как, к примеру, организован параллельный поток в команде поиска файлов, т.е. плагину задается четко сформулированная задача, он её решает в параллельном потоке (при этом проект пока может заниматься своими делами), а с окончанием работы потока срабатывает подпрограмма, извещащая об окончании работы, с выводом результатов этой работы.
Хотя, я могу и ошибаться по части возможностей необушного интерпретатора, т.к. элементы многопоточности в самой NB присутствуют, например, команда MoveObjectAlongPath. Правда там работает не сам интерпретатор, а, так сказать, внутренний механизм команды. Или, скажем, цикл (Loop, While) можно запустить, и заняться другими делами.. Так-что... Если кому из плагин-мейкеров захочеться поэкспериментировать с многопоточностью, то - ВПЕРЕД! К Победе Коммунизма!
Может все вовсе не так безнадежно, как мне представляется...
Добавлено (30 Март 2011, 22:43) ---------------------------------------------
Quote (Вадим)
Для полноценной реализации Информера, я имел в виду
Это равносильно тому, как если сказать про саму NB: для полноценной реализации авторанов!
Quote (Вадим)
два приложения, которые будут играть роль отдельных самостоятельных потоков,
Эх...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Единственный вариант, допускающий многопоточность, это то, как, к примеру, организован параллельный поток в команде поиска файлов, т.е. плагину задается четко сформулированная задача, он её решает в параллельном потоке (при этом проект пока может заниматься своими делами), а с окончанием работы потока срабатывает подпрограмма, извещащая об окончании работы, с выводом результатов этой работы.
Круто! Ну, это же просто замечательная схема! Ясная, понятная, и, как кажется, безглючная. Тогда получается нужно сформулировать такие "четкие задачи", которые в плагине предстали бы такими командами (как команда поиска файлов). Верно мыслю?
Quote (Peter)
Эх...
"Эх" в смысле "да, это уже сто раз обсуждали, это возможно!" или "Эх", в смысле "если бы всё было так просто... пока нет такой возможности!"?
Тогда получается нужно сформулировать такие "четкие задачи",
Сформулировать-то легко, а вот выполнить...
Quote (Вадим)
или "Эх", в смысле
Есть такой фильм "Гараж"...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Сейчас столкнулся с такой ситуацией: Есть проект тип систем трей, у него есть своя менюшка для пкм, я хотел повесить команду на лкм т.е. чтоб не открывалась, а просто выполнилась команда. Для этого я подключил zmTrayIcon. Но теперь в треи два значка У меня вопрос, есть ли возможность не создавать дубликать иконки в zmTrayIcon?
В принципе, приложение может иметь не один значок в трее, а столько, сколько потребуется.
Quote (Сергей)
есть ли возможность не создавать дубликать иконки в zmTrayIcon
Нет, это невозможно, т.к. каждый экземпляр значка (даже для одного приложения) имеет свой собственный обработчик событий. А если не будет значка, то и щелкать будет не по чему. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
В принципе, приложение может иметь не один значок в трее, а столько, сколько потребуется.
Действительно, может и пригодиться такая возможность. Сергей, а если создать с другой иконкой, то на баг не будет похоже (в отличие от двух одинаковых значков в трее), может обозначать временное состояние приложения... Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Peter, можешь сделать чтобы zmTrayBalloon могло показываться от существующего tray-значка(стандартного трей-приложения)? И для него таймаута не хватает, он исчезает примерно через 1 минуту.
Сообщение отредактировано Alien - Вт, 26 Апреля 2011, 15:05
чтобы zmTrayBalloon могло показываться от существующего tray-значка(стандартного трей-приложения)?
Ну, если ты мне подскажешь как получить доступ или указатель на структуру NOTIFYICONDATA штатной необушной иконки, то (теоретически) все возможно.
Это при условии, что штатная необушная иконка сделана по всем правилам.
Самому мне ковыряться в этой теме пока резону нет.
Хотя, команды плагина по части иконки и "баллона" буду переделывать. Может тогда...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться