Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
А вот если написать так: Set abc = 1; faMouseHookCreate "[abc]" "true" "true" "false" "false" "false" То вместо первого параметра я получу пустоту.
Естественно. А при чем здесь Set abc = 1; и [abc]. И зачем ты вместо имени переменной хочешь передать значение если там изначально имя переменной? Не хочешь читать хелп?
Если к примеру у нас стоит чекбокс, как выше писал, который прячет трекбар\поле ввода, то проверяя передаваемое значение мы получаем либо число, что элементарно проверяется, либо пустоту, что так же элементарно проверяется, либо текст или сочетание текста и цифр и т.д. Если число, выводим трекбар, чекбокс труе. Если пустота, выводим трекбар, значение по умолчанию, чекбокс труе. Если не число, не пустотата выводим поле ввода, вводим переменную, чекбокс фалсе. Я не пойму о чем мы рассуждаем?
Извини, я уже не соображаю, завтра на это отвечу. У нас 2:30
Как из первого параметра получить два значения? А если их там 5, 10...
Это кстати на тему, не помню с кем говорили, "можно передать только 9 или 10 параметров"... Можо передать хоть 100 параметров.
Добавлено (09 Июля 2023, 01:39) ---------------------------------------------
Цитатаfrolandr ()
К стати по умолчанию плагин может обработать только 10 параметров из оной команды.
Отвечал не дочитав. Ну вот, и ты туда же.
Цитатаfrolandr ()
преобразовывать в число StrToInt, в буль и т.д. Затем проверять и т.д.
Зачем преобразовать и проверять? А сразу строку нельзя проверить? Или там очень много вариантов может быть?
Цитатаfrolandr ()
Ну вот а я час зачем то это доказывал
Нужно услышать собеседника, что бы не тратить время на объяснение того, что он тебе же и объясняет.
Добавлено (09 Июля 2023, 01:56) ---------------------------------------------
Цитатаfrolandr ()
завтра на это отвечу.
ОК. А я пока еще немного накидаю...
По поводу 10 параметров...
Как выше уже сказал, можно отправлять сколько угодно параметров, естественно не выходя за рамки положенных десяти.
Ты можешь одним параметром отправить к примеру 50 значений разделив их символом разделителем. После просто парсишь этот параметр, получаешь массив значений, проверяешь кол-во значений которое вернулось (пользователь например ручками влез и их стало меньше, или ты версию новее выпустил где их стало больше или меньше), если вернулось не то кол-во которое нужно = ошибка, если то = продолжаешь их разбирать.
И дальше уже разбираешь тк как тебе нужно. Например 1 значение должно быть True\False. Проверил на пустоту. Если пусто устанавливаешь по умолчанию к примеру True, если не пусто преобразуешь, или проверяешь как тебе нравится. И т.д. по порядку.
Так же можешь в окно помощника добавлять не помню как называется объект который может содержать пару строка=значние. Где так же можешь использовать чекбоксы, комбобоксы, поля ввода и т.д. Ну это когда очень много значений нужно передать\получить. Не хочешь читать хелп?
Теперь понял, да, так сделать можно или на подобие.
Другое дело, что это небольшое отступление от стиля НЕО. В любом случая для плагина Скриншотов, там где ТрекБар это было бы очень хорошим решение. Конечно писанины больше, а ее иногда избегаю. К примеру в том же плагине Скриншотов(SnapShot) команд 14, а окон - помощников меньше. К примеру для сохранения в png и bmp используется одно динамически созданное окно, а для сохранения в jpg еще одно, ведь там добавляется трекбар. Однако можно было сделать всего одно окно на три команды. Просто добавлять этот трекбар в коде или убирать. Для быстроты и упрощения иногда легче создать еще окно, чем делать что-то новое.
Добавлено (09 Июля 2023, 12:09) ---------------------------------------------
Цитатаmishem ()
Зачем преобразовать и проверять? А сразу строку нельзя проверить? Или там очень много вариантов может быть
Можно конечно с char работать, в первых плагинах именно так и делал, но функции AnsiString более понятные, чем atoi или обратная itoa и пр. Мне больше по душе StrToInt, IntToStr и пр. Да и c++builder как то больше под такие функции заточен.
Добавлено (09 Июля 2023, 12:16) ---------------------------------------------
Цитатаmishem ()
По поводу 10 параметров...
Как выше уже сказал, можно отправлять сколько угодно параметров, естественно не выходя за рамки положенных десяти.
Да это не проблема думаю, можно в заголовочном файле в строке: const int MaxActionParams = 10; изменить на 20 или др. Правда проверять это нужно, вдруг еще в самой НЕО где то ограничение стоит. Можно и так, как ты пишешь, но длина строк может быть ограничена к примеру 256 символов. А с русской кодировкой это 256 могут превратиться в 128 или даже 64, иногда кирилический символ может занимать 2 байта, иногда 4, а может, плюс символ один окончания строки char \'0' - в ней в конце обязателен такой символ, сигнализирующий, что строка закончилась.
Добавлено (09 Июля 2023, 12:18) ---------------------------------------------
Цитатаmishem ()
Ты можешь одним параметром отправить к примеру 50 значений разделив их символом разделителем.
Проверять нужно, вдруг длина строки ограничена количеством символов.
Добавлено (09 Июля 2023, 12:24) ---------------------------------------------
Цитатаmishem ()
Естественно. А при чем здесь Set abc = 1; и [abc].
Извини, хотел конечно вот так написать: SetVar "[abc]" "1" Однако в 2 часа ночи уже в голове все смешалось.
Добавлено (09 Июля 2023, 12:38) --------------------------------------------- Вернусь к предыдущему. НЕО тоже определяет координаты мыши функцией GetCursorPos(&P) и тоже они не верные, если масштаб экрана виндовс не 100%, а больше. Я когда пытался сделать скриншот, сначала брал координаты из НЕО, он мне давал размер моего дисплея 1344 на 840, но размеры у меня установлены: 1680 на 1050. У меня установлен масштаб 125%, вот если разделить 1680/1344 или 1050/840, то и получаем коэффициент 1,25, что соответствует 125%. Может кто напишет на офф форум, что они при получении координат не учитывают масштаб.
Сообщение отредактировано frolandr - Вс, 09 Июля 2023, 12:12
Может кто напишет на офф форум, что они при получении координат не учитывают масштаб.
А зачем его учитывать, если при масштабировании у тебя становится реальное разрешение экрана 1344 на 840. Или я что то не догооняю? Не хочешь читать хелп?
А зачем его учитывать, если при масштабировании у тебя становится реальное разрешение экрана 1344 на 840. Или я что то не догооняю?
Нет, реальное как установлено в "разрешение дисплея" 1680x1050, так и остается. Однако функция GetCursorPos() показывает не верное разрешение. К примеру беру я средствами НЕО положение окна и пытаюсь сделать его скриншот, то у меня на скане только часть окна. Чем дальше я отвожу окно вправо, тем меньшую часть получаю в скриншоте. Если делаю скрин всего экрана, то обрезается правая и нижняя часть.
Добавлено (09 Июля 2023, 16:41) --------------------------------------------- Обновил плагин. Вернул в окна Комбобоксы, теперь можно вставлять переменные или выбирать true - false. Если написать билеберду при проверке будет false mishem, тормозит функция получения пикселя, сейчас должна показывать правильные цвета и в правильной точке.
Добавлено (09 Июля 2023, 18:49) --------------------------------------------- Сейчас еще сделал разбиение события колесика мыши, на MOUSE_WHEEL_FORWARD и MOUSE_WHEEL_BACKWARD. Считчик еще сделал, крутишь колесу вперед он увеличивается, крутишь назад уменьшается. Хотя может это скорее бесполезная вещь, так как нужно единомоментное значение общей прокрутки, а через циклы и таймеры не хочется. Эти обновления пока не выкладываю.
Сообщение отредактировано frolandr - Вс, 09 Июля 2023, 16:41
Нет, реальное как установлено в "разрешение дисплея" 1680x1050, так и остается.
Когда на заборе что то написано, а под забором дрова, ты же веришь тому что видишь, а не тому что написано.
Так и здесь. Написано одно, но при масштабировании разрешение меняется. Чем выше разрешение, тем больше у тебя на экране объектов уместится. Как это наркоманы организовали и зачем, я не знаю. Но фак остается фактом.
Сделай окно в НБ 1344 на 840 и посмотри, сколько места у тебя на экране по краям останется. Нету места? Так откуда тогда может быть разрешение 1680x1050 . Видимо у них алгоритм смены разрешения и масштабирования разный. За одно отвечают дрова, за другое винда. Вот и вся разница. А как они это обозвали и во что пользователь верит, это уже другой вопрос.
Хочешь верить что у тебя разрешение 1680x1050, ну это твое право. Некоторым на украине внушили что они черное море выкопали. Судя по последним тенденциям, то ли еще будет. "Верь нам, зачем глазам своим верить"
Цитатаfrolandr ()
Хотя может это скорее бесполезная вещь
Это полезная вешь.
Добавлено (09 Июля 2023, 19:35) ---------------------------------------------
Цитатаmishem ()
Как это наркоманы организовали и зачем
К примеру у тебя возможно монитор не поддерживает разрешение 1344 на 840, а с помощью масштабирования они это воплотили в жизнь. Не хочешь читать хелп?
Вот еще скан разрешения экрана, там установлено 1680, даже выбора 1344 нет. Если бы я не далал скриншоты с помощью всевозможных плагинов, и затем сам не полез, я бы так и не знал этого.
Добавлено (09 Июля 2023, 20:10) ---------------------------------------------
Цитатаmishem ()
Хочешь верить что у тебя разрешение 1680x1050, ну это твое право. Некоторым на украине внушили что они черное море выкопали. Судя по последним тенденциям, то ли еще будет. "Верь нам, зачем глазам своим верить"
Я как раз писал, что я сам лично проверял, что разные функции показывают разное разрешение экрана. Одни правильно, другие нет. Попробуй увеличь масштаб и сделай скриншоты хоть плагином Гарика, хоть моим, у Гарика старая функция скриншот получится обрезанный, т.е. на нем ты сам увидишь, что экран у тебя больше, чем скриншот с плагина Гарика. Затем сделай скрин моим плагином и почувтсвуешь разницу. Доставай Делфи и проверь сам тогда.
Ну хочешь себя обманывать - обманывай. У меня разрешение 1400х1050. Делаю масштаб 125%. Создаю в нб окно 1120х840. Кидаю на окно объект текст и в нем пишу [ScreenHeight]х[ScreenWidth]. Запускаю проект. Окно во весь экран с небольшими зазорами. И соответственно в переменных 1120х840. Т.е. чистый размер экрана с вычетом панели задач. С панелью будет чуть больше.
Нет желания в этом разбираться.
Цитатаfrolandr ()
На размер скриншота можешь посмотреть он 1680x1050
Размер изображения ни как не влияет на размер экрана. Какое ему задаешь при сохранении, такое оно и будет. Можешь 600х800 задать, это же не значит что у тебя разрешение такое. Не вводи сам себя в заблуждение.
Цитатаfrolandr ()
даже выбора 1344 нет.
Так я тебе об этом и говрил выше. Но у тебя на сколько я понимаю не 1344 на 840, а 1440 на 1080. По этому и есть место. Создай окно 1440 на 1080 и запусти проект. Ты все поймешь, ты все увидишь сам. Не хочешь читать хелп?
Я тебя понял про снимки, координаты мыши... Когда Гарик плагин делал, 10ки по моему еще не было. Это во первых. Во вторых, это упущение не разработчиков плагинов, программ, а разработчиков винды, т.к. инфа которую получают разработчики или функции берется не правильная.
Разрешение записывается в реестр или откуда его там берут записывается то, которое установлено изначально, а то которое выходит в итоге масштабирования не пишется. У тебя кстати в 11 винде как я понимаю есть хоть какие то уже циферки нового разрешения, у меня нет никаких.
Обратил внимание на это. Молодец. Пофиксил - вдвойне молодец. Только имей ввиду что со временем разработчики винды могут пофиксить и придется все переписывать. Не хочешь читать хелп?
Я тебя понял про снимки, координаты мыши... Когда Гарик плагин делал, 10ки по моему еще не было. Это во первых. Во вторых, это упущение не разработчиков плагинов, программ, а разработчиков винды, т.к. инфа которую получают разработчики или функции берется не правильная.
Так а я кого обвиняю разве? По этому старые программы, в том числе и плагины перестают со временем работать правильно или совсем перестают. Это все не с 10 началось, а с 8.1. Я не могу сказать упущение это или нет. Бери JS там, все что когда то было выложено из функций будет работать. Все это сделано, чтобы не упали сайты. в JS только 3 функции получения части строки, спрашивается зачем? substr, substring даже названия похожи, а еще slice
Добавлено (09 Июля 2023, 21:33) ---------------------------------------------
Цитатаfrolandr ()
Разрешение записывается в реестр или откуда его там берут записывается то, которое установлено изначально, а то которое выходит в итоге масштабирования не пишется.
В реестре есть правильное разрешение. Я даже сначала его вытягивал. НО БЕДА в том, что если юзер включил комп, а затем в процессе работы изменил масштаб, то изменения в реестре поменяются только после перезагрузки компа. К счастью нашел функцию, которая получает правильное разрешение.
Добавлено (09 Июля 2023, 21:34) ---------------------------------------------
Цитатаmishem ()
У тебя кстати в 11 винде как я понимаю есть хоть какие то уже циферки нового разрешения, у меня нет никаких.
Добавлено (09 Июля 2023, 21:45) --------------------------------------------- Стиль окна "заморозил", там не чего интересного, может позже...
Вообще думаю наверное на этом этапе нужно заканчивать. Нужно на ошибки потестить, исправить кое-что. Вроде бы основное все сделано, позже можно будет еще что-то добавить.
[faMouseWhellScroll] обнуляй после того как прокрутка остановилась.
Заметьте, не я это предложил.. таймером пришлось делать. Добавил переменную предупреждений, в демке в самом низу, сообщает, об установке или удалении хука.
Цитатаmishem ()
Если все параметры false, наверно не стоит запускать монитор вообще.
И об этом переменная сообщит. Не нравятся мне вот подтормаживания, может по этому и не делали такой хук. Если конечно пользоваться ограниченным числом возможностей, не включая все, вроде более-менее ок. Ссылка Забыл написать таймер на 300 млск сделал. Позже можно в настройках сделать возможность устанавливать интервал, и обязательно с помощью СпинЕдит
Добавлено (10 Июля 2023, 05:29) --------------------------------------------- Вот сейчас тестирую, включены только 1 и 2 параметры, т.е. кнопки, прокрутка, координаты, торможения совсем нет.
Сообщение отредактировано frolandr - Пн, 10 Июля 2023, 05:28
Тормозят координаты мыши, координаты и размер объекта и цвет пикселя. Т.е. все те, как я пологаю, где проходят математические расчеты. Не хочешь читать хелп?
Сделал возможность установки подпрограммы на левую кнопку мыши. Ссылка mishem, посмотри так нужно?
Добавлено (10 Июля 2023, 17:39) ---------------------------------------------
Цитатаmishem ()
Тормозят координаты мыши, координаты и размер объекта и цвет пикселя. Т.е. все те, как я пологаю, где проходят математические расчеты.
У меня фактически нет на этих параметрах тормозов. Тормоза появляются на вычислении углов и величины объекта. Вычисления минимальные, только там, где нужно. Получение события кнопок, координат - вообще нет вычислений, только функция получения координат и запись в переменную НЕО. При вычислении Хэндла там есть немного, получение и конвертация из 16ричного в 10ричное. Вот вычисление координат там есть не много, но тоже в основном арифметические операции + и -. Вычисление цвета пикселя, там больше вычислений, ну примерно как и координат. Кроме того заметил, после запуска снчала есть небольшие фризы, а через 5 сек, вроде снижаются до минимума. Думаю просто что вычислений много, к примеру чтобы получить Класс объекта, снчала берутся координаты, даже если они отключены, затем вычисляется хэндл объекта, даже если он отключен, ну и затем получение класса. Ну а как получить класс, нужно знать что за объект, его координаты, его хендл. Вот как то так.
Добавлено (11 Июля 2023, 00:09) --------------------------------------------- Так... У меня монитор начал слетать... При открытом отладчике на вкладке Команды. И именно при работе подпрограмм. Во первых не успевают срабатывать. Во вторых когда к примеру долго задерживаю нажатой ЛКМ.
Добавлено (11 Июля 2023, 00:38) --------------------------------------------- Обрати внимание, я там текст некоторый сменил, колесико, стало просто Whell, вроде еще что-то изменил.
Цитатаfrolandr ()
Так... У меня монитор начал слетать...
У меня не слетало. Попробуй скачай по новой ссылке. Левую и правую кнопку подключил как даун, так и ап. !!Колесико пока не подключил!!.(не вешай пока на него подпрограммы) Кликай на моем проекте левой кнопкой, текс2 будет подниматься, кликай правой кнопкой текст2 будет опускаться.
Посмотри, может в твоем проекте ошибка? Пришли его, посмотрю.
Добавлено (11 Июля 2023, 00:53) --------------------------------------------- Сейчас еще и колесико подключил и повесил на него движение объекта текст2 Ссылка
Повесить на событие подпрограмму знаешь как, а удалить, просто это же команда, но с пустыми параметрами. .Так установить на колесико подпрограммы. faSubroutineWhell "MoveUp" "MoveDown" .Так отключить MoveUp faSubroutineWhell "" "MoveDown" .Так обе отключить faSubroutineWhell "" ""
Добавлено (11 Июля 2023, 01:11) --------------------------------------------- Увидел ошибку. Вызов подпрограммы news. Хмм я тестировал на этой подпрограмме, но потом удалил. Ладно завтра посморю, сейчас в люлю пора.
Добавлено (11 Июля 2023, 01:13) --------------------------------------------- Вот она у меня на кнопке "Удалить хук"
Посмотри может у тебя тоже такие две команды? faMouseHookRemove "true" faSubroutineLeftButton "news" "news"
Втрорую просто удалить нужно, проверку нужно делать, нет пока ее.
Сообщение отредактировано frolandr - Вт, 11 Июля 2023, 00:39
Посмотри, может в твоем проекте ошибка? Пришли его, посмотрю.
Нет ни какой ошибки. Сейчас твой пример запустил, тоже слетел. Может памяти не хватает... У меня комп слабенький на даче. И видео нечем снять показать. На вкладку Команды переключись и погоняй пару минут беспрерывно, что бы подпрограмма работала.
Еще окно дважды появилось с ошибкой Gocub " news ".
Монитор подвисает. Удаляю и следом запускаю монитор. Пр клике левой кнопкой выскочило окно с ошибкой из плагина Gocub " news ".
Добавлено (11 Июля 2023, 01:19) --------------------------------------------- А, у тебя на кнопке Удалить хук подпрограмма навешена faSubroutineLeftButton "news" "news"
Так и комп подвесить можно. Ели выхожу из этого режима. Окна сыпятся одно за другим...
Добавлено (11 Июля 2023, 01:23) --------------------------------------------- Если в отладчике через ПКМ выбираю "Очищать перед выполнением сценария", монитор не слетает. Если снимаю галку, слетает через какое то время.
Добавлено (11 Июля 2023, 01:25) ---------------------------------------------
Цитатаmishem ()
Если в отладчике через ПКМ выбираю "Очищать перед выполнением сценария", монитор не слетает.
А, у тебя на кнопке Удалить хук подпрограмма навешена faSubroutineLeftButton "news" "news"
Да, это я тестировал, забыл убрать. НУ а проверки нет. Удали, попробуй, слетать не будет?
Добавлено (11 Июля 2023, 11:43) --------------------------------------------- Нет сейчас в проекте подпрограммы news, по этому баг. Я во вчерашнем посте еще об этом написал добавлением, видимо ты не увидел уже.
Добавлено (11 Июля 2023, 11:47) ---------------------------------------------
Цитатаfrolandr ()
Так и комп подвесить можно. Ели выхожу из этого режима. Окна сыпятся одно за другим...
Потому что на левую кнопку не существующая программа навешана, ты кликаешь левой кнопкой закрыть, а там снова не существующая подпрограмма вызывается. Комп не подвесишь на мертво, просто стрл+алт+дел, в открывшемся окне выбираешь диспетчер задач и там снять задачу тестплагинамоусехук.
Добавлено (11 Июля 2023, 11:47) --------------------------------------------- Сделаю проверку, не будет такого.
Добавлено (11 Июля 2023, 12:47) --------------------------------------------- Обновил, ошибка не выскакивает. Ссылка. Даже оставил ту команду, которая добавляет не существующую подпрограмму.
Сообщение отредактировано frolandr - Вт, 11 Июля 2023, 12:12
Обрати внимание, до программы которая записывает видео перехватчик мыши не доходит. Почитай инфу по этому поводу. Твой перехватчик похоже не передает дальше событие после того как его перехватил. Это не есть хорошо.
Все видео я либо кручу колесико, либо щелкаю левой\правой кнопкой. Как инфа монитора перестает обновляться, монитор завис...
Добавлено (11 Июля 2023, 14:21) ---------------------------------------------
Цитатаmishem ()
перехватчик мыши не доходит
И не доходит когда мышь находится именно на окне, за пределами окна и отладчика доходит. Не хочешь читать хелп?
Ну это все что я умел. В JS, на каждое событие я бы вызывал async функцию, а так наверное если подпрограмма тяжелая, то и фриз. В с++ нужно поток наверное создавать, не разу не создавал и не знаю будет ли несколько потоков работать в НЕО. Наверное нужно оставить в плагине только вывод событий, а остальное убрать.
Добавлено (11 Июля 2023, 14:54) --------------------------------------------- Ну а подпрограмму запускать по условию, средствами НЕО, т.е. получил LEFT_UP вызывай свою подпрограмму GOSUB.