Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL  
Многопоточность и динамическое создание объектов в NeoBook
Format-X22Дата: Пт, 26 Августа 2011, 10:37 | Сообщение # 1
Участник
Как известно напрямую многопоточность и динамическое создание объектов не возможно в NeoBook на прямую.
Но это можно обойти.



Штатными функциями и в 1 .exe это не возможно. Однако, почему мы обязаны использовать 1 .exe?
Что же можно сделать?
- Запускать скрыто другой exe-шник, в котором будет обрабатываться нужная нам функция.
- Запускать exe-шник в объекте прямоугольник.
Оба способа дают нам возможность создавать альтернативный процесс... однако а как же обмен данными между процессами? Можно:

>> Создать в главном exe скрытую кнопку с горячей клавишей и при необходимости альтернативный процесс будет посылать нажатие этой горячей клавиши через SendKeys. Минусы:
- А вдруг пользователь сам случайно (или специально) нажмет "секретное" сочетание клавиш?
- Некое ограничение в количестве горячих клавиш, т.к. их конечное количество, да и стандартные трогать не стоит.

>> Создать в главном exe таймер, который будет постоянно проверять наличие данных в командной строке и в зависимости от введенных данных выполнять то или иное действие.
Минусы:
- Нагрузка на производительность если таймер слишком частый.
- Не мгновенное исполнение (не ставить же проверку на 1мс - почему смотри выше).

>> Комбинация горячей клавиши и командной строки. В данном случае шлем из вторичного процесса команду главному и после сразу шлем нажатие горячей клавиши. В итоге у нас может быть всего одна кнопка, в которой пишем скрипт обработки командной строки.
Минусы:
- А вдруг пользователь сам случайно (или специально) нажмет "секретное" сочетание клавиш?

>> В место горячих клавиш использовать системное меню (во многих программах оно есть, там всякие Файл, Сохранить, Настройки и т.п. - оно самое). В данном случае мы будем слать пункт меню. Исчезает минус со случайным нажатием. Однако если мы не собирались делать какое-либо там системное меню, да и как спрятать то, что пользователь не должен нажимать?.. Тоже есть выход - создаем "пустышку", через которую запускаем программу. Эта пустышка - тоже NB-приложение, в котором внутри на всё пространство объект прямоугольник. Внутри него запускаем основной exe-шник со свойством скрытия системного меню. Если у вас проект не стандартной формы - рамку надо располагать в пустышке. Если рамка предполагается сменная - для отправки данных о смене её оформления можно использовать способ с горячей клавишей.



Помимо всего прочего это дает нам модульность. При большой программе или для удобства мы можем делать по модулю, не зависящему от других и обменивающемуся с другими модулями способами, описанными выше. Причем модули легко будут в одном окне - просто запускаем где нам нужно и что нам нужно используя объект прямоугольник. Прямоугольники помещаем в рамке-пустышке, например.

Как же сделать так, чтобы пользователь не смог запустить модуль в ручную без главного exe-шника? Просто запускаем через Запуск другого проекта NB и передаем переменную, которая разрешает модулю работать. Ну или через тот же обмен данными шлем команду мол "можно работать", иначе - выход. Правда придется делать ожидание хотябы в 1 секунду на всякий случай (а точнее на время обработки команды), но с другой стороны таким способом можно запускать не только приложения созданные в NeoBook ;)



Если вам известны ещё какие либо способы динамического создания объектов, многопоточности и модульности - пишите, скорей всего есть чем ещё дополнить.


Сообщение отредактировано
Format-X22 - Пт, 26 Августа 2011, 10:51
 
СообщениеКак известно напрямую многопоточность и динамическое создание объектов не возможно в NeoBook на прямую.
Но это можно обойти.



Штатными функциями и в 1 .exe это не возможно. Однако, почему мы обязаны использовать 1 .exe?
Что же можно сделать?
- Запускать скрыто другой exe-шник, в котором будет обрабатываться нужная нам функция.
- Запускать exe-шник в объекте прямоугольник.
Оба способа дают нам возможность создавать альтернативный процесс... однако а как же обмен данными между процессами? Можно:

>> Создать в главном exe скрытую кнопку с горячей клавишей и при необходимости альтернативный процесс будет посылать нажатие этой горячей клавиши через SendKeys. Минусы:
- А вдруг пользователь сам случайно (или специально) нажмет "секретное" сочетание клавиш?
- Некое ограничение в количестве горячих клавиш, т.к. их конечное количество, да и стандартные трогать не стоит.

>> Создать в главном exe таймер, который будет постоянно проверять наличие данных в командной строке и в зависимости от введенных данных выполнять то или иное действие.
Минусы:
- Нагрузка на производительность если таймер слишком частый.
- Не мгновенное исполнение (не ставить же проверку на 1мс - почему смотри выше).

>> Комбинация горячей клавиши и командной строки. В данном случае шлем из вторичного процесса команду главному и после сразу шлем нажатие горячей клавиши. В итоге у нас может быть всего одна кнопка, в которой пишем скрипт обработки командной строки.
Минусы:
- А вдруг пользователь сам случайно (или специально) нажмет "секретное" сочетание клавиш?

>> В место горячих клавиш использовать системное меню (во многих программах оно есть, там всякие Файл, Сохранить, Настройки и т.п. - оно самое). В данном случае мы будем слать пункт меню. Исчезает минус со случайным нажатием. Однако если мы не собирались делать какое-либо там системное меню, да и как спрятать то, что пользователь не должен нажимать?.. Тоже есть выход - создаем "пустышку", через которую запускаем программу. Эта пустышка - тоже NB-приложение, в котором внутри на всё пространство объект прямоугольник. Внутри него запускаем основной exe-шник со свойством скрытия системного меню. Если у вас проект не стандартной формы - рамку надо располагать в пустышке. Если рамка предполагается сменная - для отправки данных о смене её оформления можно использовать способ с горячей клавишей.



Помимо всего прочего это дает нам модульность. При большой программе или для удобства мы можем делать по модулю, не зависящему от других и обменивающемуся с другими модулями способами, описанными выше. Причем модули легко будут в одном окне - просто запускаем где нам нужно и что нам нужно используя объект прямоугольник. Прямоугольники помещаем в рамке-пустышке, например.

Как же сделать так, чтобы пользователь не смог запустить модуль в ручную без главного exe-шника? Просто запускаем через Запуск другого проекта NB и передаем переменную, которая разрешает модулю работать. Ну или через тот же обмен данными шлем команду мол "можно работать", иначе - выход. Правда придется делать ожидание хотябы в 1 секунду на всякий случай (а точнее на время обработки команды), но с другой стороны таким способом можно запускать не только приложения созданные в NeoBook ;)



Если вам известны ещё какие либо способы динамического создания объектов, многопоточности и модульности - пишите, скорей всего есть чем ещё дополнить.

Автор - Format-X22
Дата добавления - 26 Августа 2011 в 10:37
DEMBELДата: Пт, 26 Августа 2011, 12:27 | Сообщение # 2
Наш дизайнер
ну, концепция совместной работы нескольких приложений. игрались так еще со времен ммб... все работает как-то тяжеловесно...
а где тут про динамическое создание обьектов то?
Quote (Format-X22)
Как же сделать так, чтобы пользователь не смог запустить модуль в ручную без главного exe-шника?
нужно скомпилировать ехе в виде запускаемого модуля runtime package, специально сделанного для таких случаев (см. справку), параметры в дочерние приложения передавать через параметры комстроки при запуске

Добавлено (26 Август 2011, 12:27)
---------------------------------------------
есть слабое место - это обмен инфой между такими приложениями, нужно его упростить. жаль нет системы событий в нб... наиболее подходящий способ - через буфер обмена (вроде можно поюзать монитор буфера в плаге zmFunctions)


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениену, концепция совместной работы нескольких приложений. игрались так еще со времен ммб... все работает как-то тяжеловесно...
а где тут про динамическое создание обьектов то?
Quote (Format-X22)
Как же сделать так, чтобы пользователь не смог запустить модуль в ручную без главного exe-шника?
нужно скомпилировать ехе в виде запускаемого модуля runtime package, специально сделанного для таких случаев (см. справку), параметры в дочерние приложения передавать через параметры комстроки при запуске

Добавлено (26 Август 2011, 12:27)
---------------------------------------------
есть слабое место - это обмен инфой между такими приложениями, нужно его упростить. жаль нет системы событий в нб... наиболее подходящий способ - через буфер обмена (вроде можно поюзать монитор буфера в плаге zmFunctions)


Автор - DEMBEL
Дата добавления - 26 Августа 2011 в 12:27
СергейДата: Пт, 26 Августа 2011, 12:41 | Сообщение # 3
Необукер
Quote (Format-X22)
Но это можно обойти.
А юзер вырубит этот скрытый?! Я всегда вырубаю, если вижу непонятный файл в процессах, да и вообще сама идея с горячими кнопками, как обмен не ахти. Слишком много "если".
Quote (DEMBEL)
а где тут про динамическое создание обьектов то?
кстати да?!
Quote (DEMBEL)
наиболее подходящий способ - через буфер обмена
тогда уж лучше альтернативный поток, можно избежать участия юзера...
Самый нормальный вариант по обмену, это юзать плаг
 
Сообщение
Quote (Format-X22)
Но это можно обойти.
А юзер вырубит этот скрытый?! Я всегда вырубаю, если вижу непонятный файл в процессах, да и вообще сама идея с горячими кнопками, как обмен не ахти. Слишком много "если".
Quote (DEMBEL)
а где тут про динамическое создание обьектов то?
кстати да?!
Quote (DEMBEL)
наиболее подходящий способ - через буфер обмена
тогда уж лучше альтернативный поток, можно избежать участия юзера...
Самый нормальный вариант по обмену, это юзать плаг

Автор - Сергей
Дата добавления - 26 Августа 2011 в 12:41
Format-X22Дата: Пт, 26 Августа 2011, 20:31 | Сообщение # 4
Участник
Quote (Сергей)
Я всегда вырубаю

Можно обзывать их ИмяОсновнойПрограммы_ИмяМодуля.exe
Будет понятно что это.

Quote (DEMBEL)
а где тут про динамическое создание обьектов то?

Объекты в прямом смысле этого слова создавать нельзя, однако можно в прямоугольники запихивать exe и с ними играться. Да, это нифига не объекты и использование жестоко ограничено. Но хоть так, костыли, но ходить всё-же как-то и можно.

Quote (DEMBEL)
через буфер обмена

Тоже вариант, накатаешь описание?
Хотя минусы есть сильные, однако имеются и плюсы.

Quote (Сергей)
идея с горячими кнопками, как обмен не ахти.

Это почему? Всё ок!

Quote (Сергей)
это юзать плаг

Про плаг тоже не плохо бы описание и ссылку.

Quote (DEMBEL)
в виде запускаемого модуля runtime package

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


Мой сайт - http://фирмы.онлайн
 
Сообщение
Quote (Сергей)
Я всегда вырубаю

Можно обзывать их ИмяОсновнойПрограммы_ИмяМодуля.exe
Будет понятно что это.

Quote (DEMBEL)
а где тут про динамическое создание обьектов то?

Объекты в прямом смысле этого слова создавать нельзя, однако можно в прямоугольники запихивать exe и с ними играться. Да, это нифига не объекты и использование жестоко ограничено. Но хоть так, костыли, но ходить всё-же как-то и можно.

Quote (DEMBEL)
через буфер обмена

Тоже вариант, накатаешь описание?
Хотя минусы есть сильные, однако имеются и плюсы.

Quote (Сергей)
идея с горячими кнопками, как обмен не ахти.

Это почему? Всё ок!

Quote (Сергей)
это юзать плаг

Про плаг тоже не плохо бы описание и ссылку.

Quote (DEMBEL)
в виде запускаемого модуля runtime package

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

Автор - Format-X22
Дата добавления - 26 Августа 2011 в 20:31
DEMBELДата: Пт, 26 Августа 2011, 20:35 | Сообщение # 5
Наш дизайнер
Quote (Format-X22)
Тоже вариант, накатаешь описание? Хотя минусы есть сильные, однако имеются и плюсы.

недавно ктото описывал подобное. мониторил таймером [Clipboard] на предмет "спецсигналов"


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение
Quote (Format-X22)
Тоже вариант, накатаешь описание? Хотя минусы есть сильные, однако имеются и плюсы.

недавно ктото описывал подобное. мониторил таймером [Clipboard] на предмет "спецсигналов"

Автор - DEMBEL
Дата добавления - 26 Августа 2011 в 20:35
Format-X22Дата: Пт, 26 Августа 2011, 20:49 | Сообщение # 6
Участник
DEMBEL, Ну если не сложно - опиши процесс строк в 5-10, добавлю в шапку.

Мой сайт - http://фирмы.онлайн
 
СообщениеDEMBEL, Ну если не сложно - опиши процесс строк в 5-10, добавлю в шапку.

Автор - Format-X22
Дата добавления - 26 Августа 2011 в 20:49
DEMBELДата: Пт, 26 Августа 2011, 20:52 | Сообщение # 7
Наш дизайнер
не я щас над информером бошку ломаю. недавно кто-то постил, Сергей или mishem

Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениене я щас над информером бошку ломаю. недавно кто-то постил, Сергей или mishem

Автор - DEMBEL
Дата добавления - 26 Августа 2011 в 20:52
СергейДата: Пт, 26 Августа 2011, 20:55 | Сообщение # 8
Необукер
Quote (Format-X22)
Тоже вариант, накатаешь описание?
тут в кратце, но понятно
Вот еще вариант, на мой взгляд меньше вероятности вмешаться в процесс из вне, как например клавиши или буфер
 
Сообщение
Quote (Format-X22)
Тоже вариант, накатаешь описание?
тут в кратце, но понятно
Вот еще вариант, на мой взгляд меньше вероятности вмешаться в процесс из вне, как например клавиши или буфер

Автор - Сергей
Дата добавления - 26 Августа 2011 в 20:55
PeterДата: Пт, 26 Августа 2011, 21:14 | Сообщение # 9
Админ NeoBook
А почему бы не попробовать воспользоваться, например, этим плагином?
Буфер обмена - штука крайне ненадежная.
;)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеА почему бы не попробовать воспользоваться, например, этим плагином?
Буфер обмена - штука крайне ненадежная.
;)

Автор - Peter
Дата добавления - 26 Августа 2011 в 21:14
СергейДата: Пт, 26 Августа 2011, 21:54 | Сообщение # 10
Необукер
Quote (Peter)
А почему бы не попробовать воспользоваться
Да он в курсе. Это просто тема - способы передачи данных между проектами, т.е. не вопрос по сабжу, а так, вата-катание
Его тоже есть смысл перевести, он полезен при больших проектах и особенно, когда проект разделен на несколько, которые выполняют свою работу не мешая главному :)


Сообщение отредактировано
Сергей - Пт, 26 Августа 2011, 21:56
 
Сообщение
Quote (Peter)
А почему бы не попробовать воспользоваться
Да он в курсе. Это просто тема - способы передачи данных между проектами, т.е. не вопрос по сабжу, а так, вата-катание
Его тоже есть смысл перевести, он полезен при больших проектах и особенно, когда проект разделен на несколько, которые выполняют свою работу не мешая главному :)

Автор - Сергей
Дата добавления - 26 Августа 2011 в 21:54
Format-X22Дата: Пт, 26 Августа 2011, 22:13 | Сообщение # 11
Участник


Мой сайт - http://фирмы.онлайн
 
Сообщение

Автор - Format-X22
Дата добавления - 26 Августа 2011 в 22:13
СергейДата: Пт, 26 Августа 2011, 22:17 | Сообщение # 12
Необукер
Quote (Format-X22)
Это в смысле?
перебор возможных вариантов обмена данных между проектами НБ.
Так пойдет?
 
Сообщение
Quote (Format-X22)
Это в смысле?
перебор возможных вариантов обмена данных между проектами НБ.
Так пойдет?

Автор - Сергей
Дата добавления - 26 Августа 2011 в 22:17
Format-X22Дата: Пт, 26 Августа 2011, 22:23 | Сообщение # 13
Участник
Сергей, Ок.
А почему вата-катание? :)
Да и тут мы обсуждаем немного другое, однако без связей модулей ничего не выйдет.
С другой стороны тот плагин делает не актуальным все эти способы как я понимаю.
Quote (Сергей)
Его тоже есть смысл перевести

Вот с этим согласен.


Мой сайт - http://фирмы.онлайн
 
СообщениеСергей, Ок.
А почему вата-катание? :)
Да и тут мы обсуждаем немного другое, однако без связей модулей ничего не выйдет.
С другой стороны тот плагин делает не актуальным все эти способы как я понимаю.
Quote (Сергей)
Его тоже есть смысл перевести

Вот с этим согласен.

Автор - Format-X22
Дата добавления - 26 Августа 2011 в 22:23
xaker01Дата: Вс, 18 Ноября 2012, 23:53 | Сообщение # 14
Любопытный
И данный вопрос остается актуальным, как ни как уже больше года прошло, может появились более надежные и быстрые способы много поточной работы программ написанными на NB ?
 
СообщениеИ данный вопрос остается актуальным, как ни как уже больше года прошло, может появились более надежные и быстрые способы много поточной работы программ написанными на NB ?

Автор - xaker01
Дата добавления - 18 Ноября 2012 в 23:53
PeterДата: Пн, 19 Ноября 2012, 01:11 | Сообщение # 15
Админ NeoBook
Quote (xaker01)
И данный вопрос остается актуальным, как ни как уже больше года прошло,

Ничего не изменилось и ничего не изменится.
Уж сколько раз обсуждали эту тему.
Создание многопоточных приложений В ПРИНЦИПЕ НЕВОЗМОЖНО в NeoBook!

Ситуация с динамическим созданием объектов тоже не изменилась.
Все вопросы на эту тему просьба поднимать на оффоруме.

============================


Тема временно закрыта до внесения соответствующих изменений в NeoBook самими разработчиками.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (xaker01)
И данный вопрос остается актуальным, как ни как уже больше года прошло,

Ничего не изменилось и ничего не изменится.
Уж сколько раз обсуждали эту тему.
Создание многопоточных приложений В ПРИНЦИПЕ НЕВОЗМОЖНО в NeoBook!

Ситуация с динамическим созданием объектов тоже не изменилась.
Все вопросы на эту тему просьба поднимать на оффоруме.

============================


Тема временно закрыта до внесения соответствующих изменений в NeoBook самими разработчиками.

Автор - Peter
Дата добавления - 19 Ноября 2012 в 01:11
  • Страница 1 из 1
  • 1
Поиск: