Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Вообщем то тема давно была. Подниму этот вопрос в новой теме.
Вообщем то суть вопроса.
Цитатаmishem ()
Цитата mishem () К примеру как с таймером. Не столкнулся бы с проблемой, так и продолжал бы таймером пользоваться. А теперь только в крайних случаях
ЦитатаPeter
Тут проблема не в самом по себе таймере, а в том, что текущий необушный скрипт может быть прерван новым скриптом. Таковы особенности работы интерпретатора, это и хорошо и плохо. Беда NB, что она не может работать (как и все скриптовые языки) с сообщениями и событиями. Это особенно важно, когда выполняется какая-то операция, момент окончания которой заранее предсказать невозможно, а можно только повесить на окончание сообщение, которое передать в другой обработчик. Это примерно как ожидать загрузки страницы (или файла) в интернете. Цитата mishem () Тоже плагин был бы отличный, если б таймер в отдельном потоке работал бы. Вообще ему цены не было бы.
Такой таймер создать не проблема, только вот толку от этого не будет. В отдельном потоке таймер будет выполнять свой внутренний код, а не необушный скрипт, который выполняется интерпретатором в любом случае в главном потоке. Потоки должны работать согласовано, таймер будет только "тикать" в отдельном потоке, но когда таймеру нужно будет выполнить необушный скрипт, он вынужден будет вернуться в главный поток (точнее отправить туда результат свой работы - выполнить скрипт), а затем снова вернуться в отдельный поток, начать "тикать, и так по кругу. Для NB разницы не будет никакой, иначе такой NB-таймер давно бы уже кто-нибудь сделал.
Никак он у меня из головы не выходит.
Цитата
В отдельном потоке таймер будет выполнять свой внутренний код, а не необушный скрипт
Вот смотри, допустим нам через таймер нужно просто проверять переменную. И если она изменилась, только тогда запускать скрипт NeoBook.
Можно же плагину например укакзать переменную которую он самостоятельно может проверять?
К примеру. Нам нужно определить расположение окна. Окно не трогают, оно стоит на месте, но таймер то молотит. А так он в фоне работает, и мы его не видим и не ощущаем. Двинули окно, таймер плагина это определил, и выполнил скрипт.
Или допустим нам надо узнать, изменился какой нибудь текст. Если переменная изменилась, выполнить скрипт. И т.д.
Т.е. такой таймер, который делал бы какие то сравнения, и если что то изменилось, или не изменилось выполнить указанную подпрограмму.
Таймер на события, на те же клики мыши например.
Короче если фантазию включить, ....
Цитата
давно бы уже кто-нибудь сделал
У эсперальты по моему есть что то подобное, но я давно уже смотрел. Не помню толком. Не хочешь читать хелп?
Уж сам бы мог давно такой плагин сделать. Только таймер лучше брать не штатный делфиский, а мультимедиа таймер виндовский, т.к. по сути он работает в отдельном потоке. Тут вообще возможны варианты, но с мультимедиа таймером - самое простое, правда и систему (НЕ приложение) он будет грузить больше, чем обычный таймер. Думаю, что можно найти готовые к употреблению дэлфийские реализации. Только вот это:
Цитатаmishem ()
таймер будет только "тикать" в отдельном потоке,
все-равно остается в силе, т.к. таймеру, чтобы проверить содержимой переменной, придется обратиться к главному потоку посредством nbGetVar, правда, для приложения это будет практически нечувствительно, в отличие от выполнения необушного скрипта. Суть любого дополнительного потока заключается в том, чтобы выполнить (в отдельном потоке) какую-то работу, а по её завершении вывести конечный результат (или промежуточный, а затем продолжить) в главный поток.
Цитатаmishem ()
Короче если фантазию включить, ...
... можно ТАКОГО насочинять, что... гм...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
правда, для приложения это будет практически нечувствительно
Вот, вот это самое главное.
Сама суть, понимаешь, мы к примеру в тот же таймер NeoBook даже обычное условие вставляем, просто, что бы проверить, и фсе. Код рвется, выполнение тормозится. Хорошо если через минуту проверка, а если 100-10 миллисекунд? Да не один фоновый таймер не будет так систему тормозить как необушный.
ЦитатаPeter ()
мультимедиа таймер виндовский
Так он именно по моему в NB и задействован.
ЦитатаPeter ()
Уж сам бы мог давно такой плагин сделать.
Не, не созрел я еще. Тут других дел не в проворот.
ЦитатаPeter ()
... можно ТАКОГО насочинять, что... гм...
Ну я к тому, что если делать, то не просто тяп - ляп, а продумать возможные варианты. Что б он уневирсальный получился. Что б их допустим с десяток можно было запустить. Что бы какие то свои заложены функции были, типа монитора мыши. Короче как ты умеешь. Не хочешь читать хелп?
универсального плагина не получится, т.к. в таком таймере код нб не выполнишь (иначе будет обращение в поток проекта), т.е. только программировать в плагине. Это если только делать под конкретную задачу отдельный плагин, что-либо мониторить или еще что Как задавать вопросы
Универсальный в каком смысле... Смотри. Что нам нужно в повседневной жизни? Без чего практически не обойтись в любом (я имею ввиду более менее серьезном проекте)? Монитор мыши. Монитор дескриптора окна. Монитор буфера обмена. Монитор размеров страницы. Монитор положение окна. и т.д. Можно сделать через таймер, а можно сделать в самом плагине включаемым\отключаемым.
Монитор переменных, можно сделать одну на таймер, а можно указать несколько для одного таймера, и так же несколько названий подпрограмм.
Тоесть вот такие варианты продумать. То, с чем постоянно сталкиваемся куда приходится таймер воткнуть, а он нам только мешает. И без него никак, и с ним не выход.
А таймер через плагин много вопросов мог бы порешать.
Особо конечно смысла нет загоняться, но основные моменты надо учесть. Не хочешь читать хелп?
Есть, но она не работает нормально глобально, а на супер осях может вообще не работать
ЦитатаDEMBEL ()
и дескриптор окон под курсором
Да, только в таймере нужно что бы еще сравнение делалось, не просто выводилось, а допустим нужное нам окно на передний план перешло, к примеру, и выполняется какая либо указанная подпрограмма.
То есть отлов нужных значений.
Или к примеру, в той теме что выше ссылку дал, точно уже не помню, но там нужно было получить координаты окна, и вот когда их получаешь средствами НБ, есть тормоз. И существенный. В простом проекте вроде не заметно, а в той теме, сразу выявлялось. Много таких ситуаций попадается.
Короче нужно его просто начинать делать, и при тестах будет сразу понятно. Весь список я тебе ни как не оглашу. Это все просто что уже наболевшее, так сказать.
Я уж не знаю как еще мысль передать...
Ну вот смотри еще пример, допустим возьмем информер над которым тогда многие "пыхтели". Нам к примеру нужно обращаться к сайту через какое то время. В плагин можно было бы вставить что то типа запроса в интернет. Он сам запрос делает по указанному адресу, ну к примеру получает код страницы, сравнивает с переменной в НБ, в которой лежит предыдущий код, и если они разные, запускает подпрограмму.
Если в НБ такое делать, бяда. В такой плагин можно было бы накидать команды, которые в НБ могут долго обрабатываться. Тем самым, мы создали бы типа многопоточности. Допустим запщено три-четыре... таймера с разным заданием. Они сами по себе не так то много ресурсов будут жрать, а в фоне выполнять кучу работы элементарного сравнения на изменение. Изменилась переменная, пошла работать подпрограмма. Она мож через час изменится, а мож через 5 минут. А теперь представь эти три таймера работают в НБ наперебой друг друга, выгоду чуешь от такого плагина?
ну когда их много то да, но если они сработают примерно в одно время (так чтобы подпрограмма одного-двух таймеров еще не успела выполниться) то повесят проект скорее всего
просто нефиг задавать период таймерам в 20мс и все с ними будет ок
Цитатаmishem ()
Или к примеру, в той теме что выше ссылку дал, точно уже не помню, но там нужно было получить координаты окна, и вот когда их получаешь средствами НБ, есть тормоз. И существенный. В простом проекте вроде не заметно, а в той теме, сразу выявлялось.
это типа RubberBand делал чтоли, ну щас гляну те ты хочешь сказать что GetObjectInfo тормозит всю малину, но чтото не пойму почему оно должно так делать и не влом было бы в координатах окна переписать, кто это в полноэкранном режиме запускать то будет Как задавать вопросы
Дата: Вс, 21 Сентября 2014, 13:49 | Сообщение # 10
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитатаmishem ()
Монитор мыши. Монитор дескриптора окна. Монитор буфера обмена. Монитор размеров страницы. Монитор положение окна. и т.д.
Остапа понесло!...
Цитатаmishem ()
А таймер через плагин много вопросов мог бы порешать.
Да ничего такой плагин не порешает, т.к. скрипт-то он будет выполнять все-равно в главном потоке со всеми "прелестями".
Плагин может только СВОЮ ВНУТРЕННЮЮ РАБОТУ выполнять вне потока NB в зависимости от того, что и как сделает его автор (в общем случае плагин работает в потоке NB).
Цитатаmishem ()
Я так понимаю что каждый таймер должен в отдельном потоке запускаться.
В принципе, да, только это ничего не изменит - см. чуть выше. mishem, дать тебе такой плагин в руки, так ты всю систему на уши поставишь, не говоря о самом проекте.
Поэтому, если и делать такой плагин (с таймером на один скрипт), то только с одним экземплярои таймера
Цитатаmishem ()
ну к примеру получает код страницы, сравнивает с переменной в НБ, в которой лежит предыдущий код, и если они разные, запускает подпрограмму.
Это уже будет специализированный плагин.
Из того арсенала, при помощи которого плагин общается с проектом, "незаметно" для проекта можно выполнить всего две вещи: nbSetVar и nbGetaVar, все остальное будет работать точно так же как и в NB. Впрочем, из "арсенала общения" и остается-то только nbPlayAction. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Вс, 21 Сентября 2014, 14:00 | Сообщение # 11
Эксперт форума
Модераторы
Сообщений: 5942
Offline
ЦитатаPeter ()
"незаметно" для проекта можно выполнить всего две вещи: nbSetVar и nbGetaVar
Ну, так этого достаточно. А остальное сам плагин смогет.
ЦитатаPeter ()
Впрочем, из "арсенала общения" и остается-то только nbPlayAction.
Не, это уже не пойдет. Смысл необушный скрипт запускать.
Я ж говорю, определится какие именно функции часто требуют таймер и их сделать в плагине. А плагин или эти функции выполнять, типа монитора или сравнивать указанные значения переменных, и при необходимости запускать подпрограмму. Не хочешь читать хелп?
Дата: Вс, 21 Сентября 2014, 14:05 | Сообщение # 12
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Забыл сказать...
Цитатаmishem ()
Цитата Peter () мультимедиа таймер виндовский
Так он именно по моему в NB и задействован.
Нет, в NB работает "классический" таймер.
Добавлено (21 Сентября 2014, 14:05) ---------------------------------------------
Цитатаmishem ()
Смысл необушный скрипт запускать.
Вот интересно.... А КАК плагин будет выполнять скрипт? Тебе же надо по наступлении события (совпадение переменных) выполнить какую-то работу (какой-то скрипт). Иначе какой смысл в таймере-то?
Цитатаmishem ()
Я ж говорю, определится какие именно функции часто требуют таймер и их сделать в плагине
ЦитатаPeter ()
Это уже будет специализированный плагин.
Только в этом случае, батенька, на вас никаких "таймеров" на напасешься! И плагин будет с 1000000 функций и размером в гигабайт.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Вс, 21 Сентября 2014, 14:38 | Сообщение # 13
Эксперт форума
Модераторы
Сообщений: 5942
Offline
ЦитатаPeter ()
А КАК плагин будет выполнять скрипт?
Нет, ну один раз запустить подпрограмму, и все. Остальное время он только будет мониторить. Здесь суть этого плагина, не скрипт выполнять, а тикать.
Тоесть основное его предназначение, мониторить, сравнивать переменные. Как я себе это представляю....
Присвоили к примеру переменной [Text] 0, и даем команду плагину мониторить эту переменную. Как только она не равна 0, плагин запускает указанную подпрограмму. Получается что, плагин в фоне тикает, а когда нужно выполнить событие, он его запускает.
ЦитатаPeter ()
И плагин будет с 1000000 функций и размером в гигабайт.
Ну почему миллион? Я ж говорю, основные. Ну мож штук 20-30 наберется, и то, это я по большому счету предполагаю. А так мож и с 10ток не наберется. Тут если возьмешься делать, то еще думать надо будет. Это все в теории, в голове крутится. Смысл разрабатывать стратегию, если ее никто выполнять не хочет. Не хочешь читать хелп?
Дата: Вс, 21 Сентября 2014, 15:10 | Сообщение # 14
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитатаmishem ()
Здесь суть этого плагина, не скрипт выполнять, а тикать
И плагин назвать "Tiktak" Ну так создай обычный необушный таймер, поставь ему пустой скрипт, запусти и пусть себе тикает и тикает (в ночи). Щютка....
Цитатаmishem ()
Получается что, плагин в фоне тикает, а когда нужно выполнить событие, он его запускает.
Ну да.
Цитатаmishem ()
Ну мож штук 20-30 наберется,
Ага! Как известно, аппетит приходит во время еды.
Да и 20-30 специализированных функций уже прилично, т.к. за одной функцией может скрываться, образно говоря, только одна строчка кода Delphi, а за другой 500 и более....
Цитатаmishem ()
Смысл разрабатывать стратегию, если ее никто выполнять не хочет.
Собственно, эта фраза и ожидалась.
mishem, стратегия тут предельно проста (отслеживать переменную, а когда совпадет условие "работать"), да и реализация непосредственно самого таймера тоже, все упирается в:
Цитатаmishem ()
штук 20-30
т.к. в этом-то и вся "соль". - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Вс, 21 Сентября 2014, 16:54 | Сообщение # 16
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитатаmishem ()
давай остановимся на этом.
Цитатаmishem ()
Монитор мыши.
Уже есть в известном чуде. А чтобы нормально работало в суперосях, то надо полностью все переделывать.
Цитатаmishem ()
Монитор дескриптора окна.
Что имеется ввиду? Если окно создано, то дескриптор у него не меняется.
Цитатаmishem ()
Монитор буфера обмена.
Уже есть в известном чуде.
Цитатаmishem ()
Монитор размеров страницы.
Имеется в самой NB в свойствах проекта.
Цитатаmishem ()
Монитор положение окна.
Какого окна? Если главного необушного, то Уже есть в известном чуде.
И никакой таймер тут не нужен.
Цитатаmishem ()
Сделаешь? А?
ЦитатаPeter ()
Уж сам бы мог давно такой плагин сделать.
Уж если даже гарик сумел подобные вещи осилить....
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Вс, 21 Сентября 2014, 19:59 | Сообщение # 17
Эксперт форума
Модераторы
Сообщений: 5942
Offline
ЦитатаPeter ()
Уже есть в известном чуде. А чтобы нормально работало в суперосях, то надо полностью все переделывать.
Ну вот, как раз момент настал.
ЦитатаPeter ()
Что имеется ввиду? Если окно создано, то дескриптор у него не меняется.
Монитор верхнего окна в системе. Желательно с заголовком.
ЦитатаPeter ()
Монитор буфера обмена. Уже есть в известном чуде.
Ну не подключать же 10 плагинов. Монитор он и есть монитор.
ЦитатаPeter ()
Монитор размеров страницы.
Имеется в самой NB в свойствах проекта.
Тормоза. Тормоза...
ЦитатаPeter ()
Монитор положение окна.
Какого окна? Если главного необушного, то Уже есть в известном чуде.
Читай выше.
И забыл про монитор указанных переменных.
И еще один пунктик можно добавить, монитор интернета. Отправить запрос получить файл/код страницы, и в памяти сравнить, если изменились, выполнить подпрограмму.
ЦитатаPeter ()
Уж если даже гарик сумел
Ну правда некогда, и интереса к делфи нет почему то. Подсознательно не хочется себя нагружать что ли. Но я работаю над этим.
Дата: Вс, 21 Сентября 2014, 21:24 | Сообщение # 18
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитатаmishem ()
как раз момент настал.
Какой такой "момент"? Я и по сей день работаю в обычной нормальной (а не супер-) операционке, и переходить на "супер" в обозримом будущем не намерен, а делать наугад не получится.
Цитатаmishem ()
Монитор верхнего окна в системе. Желательно с заголовком.
?
Цитатаmishem ()
Монитор он и есть монитор.
Ну да, только у всех они разные - у кого-то 19", у кого-то 21", у кого-то 16:9, а у кого-то 4:3....
Цитатаmishem ()
Тормоза. Тормоза...
Цитатаmishem ()
Читай выше.
Какая разница кто именно (сама NB или плагин) отследит "нужный момент" и вызовет подпрограмму? В обоих случаях все работает "по событию", а не по таймеру. Ты полагаешь, что плагин будет выполнять необушный скрипт быстрее, чем сама NB? Тормоза со скриптами как были, так и останутся.
Кстати, монитор мыши, монитор буфера обмена и подпрограмма на изменение позиции и размеров главного окна работают (в известном чуде) вовсе не по таймеру, а по событиям (по сообщениям).
Цитатаmishem ()
И забыл про монитор указанных переменных.
Да переменные мониторить не проблема! Проблема - ЧТО ДЕЛАТЬ ДАЛЬШЕ? Ну, предположим, мониторишь ты верхнее окно в системе... ну, изменилось оно, плагин это засек... А ДАЛЬШЕ-ТО ЧТО?
Цитатаmishem ()
Отправить запрос получить файл/код страницы, и в памяти сравнить, если изменились, выполнить подпрограмму.
И подпрограмма благополучно будет выполнена с теми же самыми тормозами....
Цитатаmishem ()
Подсознательно не хочется себя нагружать что ли.
Вот-вот! "Мне напрягаться неохота, так пусть напрягаются другие за меня!"
Цитатаmishem ()
Но я работаю над этим.
Цитатаmishem ()
как раз момент настал.
Я наверное, когда-нибудь, поработаю и над этим....
mishem, подобные простые плагины ты прекрасно сможешь и сам научиться делать. Я ведь недаром сказал:
ЦитатаPeter ()
Уж если даже гарик сумел подобные вещи осилить....
Причем, сможешь сделать так, как именно тебе нужно. Не трать время на всякие костыли! Хотя бы попробуй....
Вот и Дембель к плагинотворению решил приобщиться...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Вс, 21 Сентября 2014, 22:32 | Сообщение # 20
Эксперт форума
Модераторы
Сообщений: 5942
Offline
ЦитатаPeter ()
?
Блин, я хрен его знает как тебе объяснить... Если б я сейчас что то делал, я б привел пример, а так в голове что то в памяти крутится что надо, а когда и при каких обстоятельствах... Я ж всего не упомню.
ЦитатаPeter ()
Какая разница кто именно (сама NB или плагин) отследит "нужный момент" и вызовет подпрограмму?
Та разница что у плагина это быстрее происходит. Плагин выполняет свою работу, и нб выполняет свою работу. В нужный момент плагин посылает команду на подпрограмму, а не нб сначала высчитывает, а после посылает. Секунда это много или мало? Когда приложение зависает на секунду, кажется целая вечность проходит.
Мне в нб, именно скорости не хватает. Даже если просто координаты окна получить, она тормозит, а если еще что то надо высчитать относительно окна,....
ЦитатаPeter ()
Ну, предположим, мониторишь ты верхнее окно в системе... ну, изменилось оно, плагин это засек... А ДАЛЬШЕ-ТО ЧТО?
Запускает подпрограмму. Окно это как пример. Возьми например, попробуй в нб сделать так, что бы окно прилипала к краю рабочего стола на определенном расстоянии. Пикселей 10-20 когда остается до края, что б оно прилипло. Левый верхний угол, если и там и там меньше 10-20, прилипло к обеим сторонам. и т.д. Сделаешь, но это будет через раз. Потому что не успевает. Убираем из нб расчет расстояния, и все должно быть в елочку. И таких куча вариантов. Всего не помню. Тоже самое с объектами, какая разница чей дескриптор мониторить. Тоже самое с переменными. Сколько объектов не поддерживают разные события? Тот же прямоугольник. Отловили момент когда мышь на нем, отправили таймеру команду ждать событие на левую, или правую кнопку, вот тебе события на объектах. и т.д. и т.п.
ЦитатаPeter ()
И подпрограмма благополучно будет выполнена с теми же самыми тормозами....
Подпрограмма уже выполнит чистый код, без всяких высчитов, ожиданий и прерываний.
ЦитатаPeter ()
Вот-вот! "Мне напрягаться неохота, так пусть напрягаются другие за меня!"
В нб я тебе давай что хошь сделаю, а там читать надо, а я через 10 минут засыпаю. Я вот сейчас вторые сутки сижу за компом, и ничего, спать не хочу. Стоит читать начать, и вся, я отключусь. А образ жизни у меня примерно такой постоянно. Двое-трое суток не сплю, после вздремнул и опять по новой. Тоесть если интереса нет, я буду спать. А чтение, это вообще как колыбельная. Не хочешь читать хелп?
Дата: Вс, 21 Сентября 2014, 22:38 | Сообщение # 21
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
ЦитатаPeter ()
Кстати, монитор мыши, монитор буфера обмена и подпрограмма на изменение позиции и размеров главного окна работают (в известном чуде) вовсе не по таймеру, а по событиям (по сообщениям).
а чего тогда там у тебя не так, все же должно работать как часы. в чем проблема то Как задавать вопросы
Дата: Пн, 22 Сентября 2014, 03:14 | Сообщение # 22
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
ЦитатаDEMBEL ()
монитор буфера реализован, с SetClipboardViewer ?
Да я не помню точно уже, по-моему, да, там ведь все стандартно, т.к. это - функция самой винды. Чего ради изобретать велосипед? Я попытался с монитором мыши отсебятину лепить Что из этого получилось - известно.
ЦитатаDEMBEL ()
в чем проблема то
Вот в этом и проблема. В отсебятине. Монитор работает нестандартно: он не упреждает (перехватывает) событие мыши (как это делается в классических хуках), а отслеживает его, т.е. срабатывает вслед за обработчиком мыши в NB. К тому же, как показала практика, если локальный монитор еще работает, то глобальный , в системах с UAC, работать уже не будет.
Цитатаmishem ()
Блин, я хрен его знает как тебе объяснить... Если б я сейчас что то делал, я б привел пример,
Гениально!
А зачем же тогда тебе оно надо, если ты ничего не делаешь?
Цитатаmishem ()
Та разница что у плагина это быстрее происходит.
Это почему? Событие наступает вне зависимости от плагина или самого приложения (оно просто наступает), и плагин и само приложение (если у обоих предусмотрен обработчик этого события) на него отреагируют одновременно, а дальше уже выполняется скрипт.
Цитатаmishem ()
а не нб сначала высчитывает,
Что она высчитывает? См. чуть выше.
Цитатаmishem ()
Мне в нб, именно скорости не хватает.
В NB есть тормознутые места, например, скорость отрисовки окна (можно сказать что NB сама работает в чем-то "по-таймеру"), но о своих собственных событиях она будет узнавать раньше всех (она же сама их и генерирует), и раньше плагина. Плагин может (теоретически) обогнать NB только в обработке каких-то "внешних" событий (сообщений), и то если не будет слишком сильно занят своей собственной работой. Правда, есть даже вариант, когда можно узнавать плагином о сообщениях приходящих в окно проекта, раньше проекта с помощью тех же хуков, подменить оконную процедуру, но это способ рискованный, к тому же антивирь может забеспокоиться.
Цитатаmishem ()
И таких куча вариантов. Всего не помню.
Разумеется! Можно привести тысячи примеров, когда NB будет работать медленнее, чем обычный экзешник. mishem, не стОит требовать от программы то, на что она неспособна. Плагинами, конечно можно какие-то моменты "подправить", но всегда это будет "спец-плагин" с четко ориентированным функционалом.. Универсальный плагин сделать невозможно. Тот вариант с липким окошком, который ты описАл можно реализовать в плагине (просто высчитывать позицию окна и удерживать его на ней), это совсем несложно и работать будет без тормозов (теоретически), но опять-таки это - "спецвариант", частный случай, и его больше никуда не приткнешь.
Цитатаmishem ()
Подпрограмма уже выполнит чистый код, без всяких высчитов, ожиданий и прерываний.
Да, для NB расчетов будет меньше, но, снова - ЧАСТНЫЙ СЛУЧАЙ.
Цитатаmishem ()
а там читать надо, а я через 10 минут засыпаю.
Открою тебе тайну: там не только (и не столько) читать надо, но и РАБОТАТЬ!
Цитатаmishem ()
Стоит читать начать, и вся, я отключусь.
Выпей кофейку!
Цитатаmishem ()
после вздремнул и опять по новой.
Выспись по-нормальному один раз... другой... третий...
Цитатаmishem ()
А чтение, это вообще как колыбельная.
А на компьютере ты что делаешь? Ведь тоже читаешь. А интерес и стимул во многом схожи...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Пн, 22 Сентября 2014, 10:54 | Сообщение # 23
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
ЦитатаPeter ()
К тому же, как показала практика, если локальный монитор еще работает, то глобальный , в системах с UAC, работать уже не будет.
почитай по ссылке, там насчет обработки сообщений с UAC режимом As part of UAC, there is a restriction for sending/posting messages from an application started with standard user token to applications started with higher user token like Admin/System. This is called UIPI. Only write access is restricted. You can send read type messages like WM_GETTEXT with out restriction. UIPI can be bypassed using ChangeWindowMessageFilterEx() as explained here Как задавать вопросы
Дата: Пн, 22 Сентября 2014, 15:19 | Сообщение # 24
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
ЦитатаDEMBEL ()
почитай по ссылке, там насчет обработки сообщений с UAC режимом
Спасибо, почитаю, но все-равно надо переделывать этот "монитор", надоело мне (ещё тогда) каждый раз чего-то придумывать. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Пн, 22 Сентября 2014, 15:51 | Сообщение # 25
Эксперт форума
Модераторы
Сообщений: 5942
Offline
ЦитатаPeter ()
А зачем же тогда тебе оно надо, если ты ничего не делаешь?
Я не делаю сейчас. Другим занят. Но я тебе говорю что это надо уже сколько месяцев?
И говорилось это когда надо было. Итог, то что надо было, заброшено. Сейчас опять поднял этот вопрос, потому что надо будет. (в планах) Если не будет такого плагина, смысл эти планы пробовать воплощать?
Говорю об этом плагине, потому что он нужен будет постоянно, так же как и чудо твое.
ЦитатаPeter ()
но опять-таки это - "спецвариант", частный случай, и его больше никуда не приткнешь.
Похоже я не могу донести свою мысль....
Для того что бы нам узнать размеры окна приложения, что нам нужно сделать? Выполнить команду НБ. Раз. Для того что бы узнать размеры рабочей области приложения, что нам нужно сделать? Выполнить команду НБ. Два. Для того что бы нам узнать размеры рабочего стола, что нам нужно сделать? Выполнить команду НБ. Три. Для того что бы узнать расположение рабочей области приложения относительно экрана? Выполнить команду НБ. Четыре. Для того что бы вычислить координаты расположения указанного объекта относительно страницы и\или относительно рабочего стола? Выполнить команду НБ. И не одну. и т.д. На каждое выполнение у НБ уходит значительное время. Если все это, и еще некоторые моменты будет мониторить плагин, и он же сам делать вычисления, это ускорит выполнение многих задач.
Обратится уже к готовому значению, или делать вычисления командами НБ, есть разница?
Еще раз, нужен монитор некоторых значений, и вычисление некоторых координат плагином, а не НБ. Плагин, вычисляет и отправляет значения в определенные переменные, из которых мы в любой момент можем получить эти значения. То же самое что в твоем чуде делает монитор координат мыши. Только еще к тому же монитору, нужно добавить координаты относительно окна и\или относительно рабочего стола. Не хочешь читать хелп?
Дата: Пн, 22 Сентября 2014, 16:04 | Сообщение # 26
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитатаmishem ()
Другим занят.
А я вот получается ничем не занят, и свободного времени хоть отбавляй!
Цитатаmishem ()
говорю что это надо уже сколько месяцев?
mishem, знаешь ЧТО прикольно? За это время ты бы уже сам мог все это сделать с десяток раз!
Цитатаmishem ()
Для того что бы нам узнать размеры окна приложения
Какого приложения? - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Пн, 22 Сентября 2014, 17:19 | Сообщение # 27
Эксперт форума
Модераторы
Сообщений: 5942
Offline
ЦитатаPeter ()
Какого приложения?
Ну своего естественно. Пока говорим только о приложении которое сделано в НБ.
ЦитатаPeter ()
За это время ты бы уже сам мог все это сделать с десяток раз!
Может быть. Но я наверно знаешь чего боюсь? Того что так на делфи и останусь, а про НБ забуду. У меня есть такая черта, если внутреннее предчувствие подсказывает не делать, лучше не делать. Все равно ничего хорошего из этого не выйдет.
Когда нужно будет сделать, оно, предчувствие само толкнет в нужном направлении. Тоже самое ММВ и НБ было. Я до НБ на ММВ лет за 6 наверно еще смотрел, но так к ней и не притронулся. А после НБ увидел, и как то сразу начал в нее вникать. Не хочешь читать хелп?
Дата: Пн, 22 Сентября 2014, 19:15 | Сообщение # 28
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитатаmishem ()
Ну своего естественно.
Ну тогда зечем тебя вся эта чехарда:
Цитатаmishem ()
Для того что бы нам узнать размеры окна приложения, что нам нужно сделать? Выполнить команду НБ. Раз. Для того что бы узнать размеры рабочей области приложения, что нам нужно сделать? Выполнить команду НБ. Два. Для того что бы нам узнать размеры рабочего стола, что нам нужно сделать? Выполнить команду НБ. Три. Для того что бы узнать расположение рабочей области приложения относительно экрана? Выполнить команду НБ. Четыре.
например когда нужно сделать "липкое окошко"? Нужно ОДИН раз вычислить позицию окна, а дальше использовать подпрограмму по обработке события перетаскивания окна (в известном чуде). Всего одна строчка кода NB (одна команда плагина): SetWindowPos. Причем, это будет экономичнее и "профессиональнее", чем заморочки с таймером.
Цитатаmishem ()
Того что так на делфи и останусь,
Ну так радоваться надо - ты ведь сам хотел больших возможностей.
Цитатаmishem ()
про НБ забуду
Не беспокойся - не забудешь! Не забывается такое никогда!
Цитатаmishem ()
внутреннее предчувствие подсказывает
А что именно сейчас подсказывает тебе "внутренний голос"?
Цитатаmishem ()
оно, предчувствие само толкнет в нужном направлении.
Нужно, не дожидаясь предчувствия, просто дать тебе хорошего пинка в нужном направлениии. Вот я все пытаюсь... пытаюсь... Но так и не получается задать это самое нужное направление. Ты все время либо уворачиваешься, либо, как бумеранг, двигаешься обратно в точку старта (ходишь кругами) Я уж упрел весь! Может просто надо ускорение побольше придать?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Пн, 22 Сентября 2014, 20:24 | Сообщение # 29
Эксперт форума
Модераторы
Сообщений: 5942
Offline
ЦитатаPeter ()
Нужно ОДИН раз вычислить позицию окна
Да ты что? Это как? А дальше от чего отталкиваться? От координат мыши? Но их тоже нужно получать постоянно. Но это не важно, а то мы сейчас в дебри уйдем.
Дата: Пн, 22 Сентября 2014, 21:34 | Сообщение # 30
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитатаmishem ()
Но их тоже нужно получать постоянно.
А зачем тебе координаты мыши, если ты хочешь сделать "липкое окошко"?
Цитатаmishem ()
Нужен монитор. Монитор всего что движется, изменяется.
mishem, ты до крайности предсказуем.
Впрочем, такой "монитор" уже существует... Сама Windows!!!! Ты хочешь в плагин запихнуть целую W....? - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться