Сейчас реализованы три варианта. И из них рабочих только два, а по факту один.
1. Через ini.
+: работает в обе стороны.
-: нужно задавать флаг готовности ответа (если разовый ответ) и постоянно читать ini дожидаясь результата. Что напрягает диск. К тому же не
нулевая вероятность напороться на блокировку файла во время записи другой прогой, а обрабатывать эту ситуацию кликер не умеет, просто
вываливаемся с ошибкой. Поэтому часто читать нельзя, получаем тормознутую систему. Чем чаще читаем/проверяем тем больше вероятность
поймать фигу.
2. передать параметром при вызове по EXECUTE.
+: "туда" всё нормально.
-: "обратно" в пролёте. Возвращаемся к первому варианту.
3. написать свой плагин в dll и передавать штатно через CALL
+: наверно классно!
Кликер ждет момента как отработки плагина и только потом продолжает работу.
Возврат в переменную - это хорошо.
-: нужно уметь. Хрен знает на чём писать чтоб не учить С++ ради... ради чего?. Да ну его
Передаёт только целочисленные параметры. Ни float ни str... Хоть разбивай в CHAR и там собирай.
Фиксированный тип и имя функции "execute". Т.е. вызвать из готового чужого набора уже не выйдет, печалька
И что имеем в ЛизуРтате? Туда-сюда, только ini.
Раньше, вроде, писал предложение сделать обмен, но способов не видел. В голову лезли только всякие варианты с стандартным потоком вывода STDOUT. Может это вариант?
Сегодня в очередной раз глядя на утилиту AGClient очередной раз "прозрел". Можно же "туда" передавать через PostMessage. Главное, чтоб "там" ждали. Вот только опять не хватает обратки.
Предложение:Сделать возможность приёма Кликермэном инфы, переданной по WinAPI типа PostMessage. Как ждёт и обрабатывает AGClient.
типа PostMessage($hwnd, 0x666, wParam, lParam)
Если нагрузка лишняя, то сделать команды "слушать/не слушать" и включать по надобности.
Как пришло сообщение окну, допустим 0x666 пишем wParam, lParam в переменные $_return1/2, а лучше в $_return3/4 или $_in1, $_in2
Минусы: опять только целые числа, но можно сообщением передавать только сигналы. Типа "данные обработаны, можно забирать-читать из файла".
Ну или сделать расширенный вариант -
группу команд.
К примеру при получении 0x777, в wParam приходит количество последующих передаваемых кодов CHR которые нужно собрать в строку.
Допустим, получили
PostMessage($hwnd, 0x777, 5, 0) кликер ждёт следующие 5 запросов и собирает из них строку. lParam = 0, значит передано общее количество.
PostMessage($hwnd, 0x777, 1, 65) # A
PostMessage($hwnd, 0x777, 2, 66) # B
PostMessage($hwnd, 0x777, 3, 67) # C
PostMessage($hwnd, 0x777, 4, 67) # D
PostMessage($hwnd, 0x777, 5, 67) # E
После получения последнего выдаём в $_in1 = "ABCDE". Можно ещё в $_in2 оповестить флагом 1, что получено и можно читать.
Понятно, что вся работа по 0x777 со стороны кликермэна не видна, просто получаем в итоге строку.
Возможно есть вариант попроще и я нагородил здесь хрень. Может можно напрямую передавать назад в кликер инфу, как в варианте с плагинами.