|
Вопросы по разработке. |
|
|
DarkMaster |
27.5.2016, 13:29
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29736
Пользователь №: 11.279

|
Cockney, ты использовал новый интерфейс плагинов с передачей результата по указателю? У меня пустоту возвращает хоть убей. Причем структуру создаю, все назначаю, старый вариант по всей цепочке указателей значение считывает нормально: Код sprintf_s(ParamStruct->Result, "%u " "%u " "%s", &ResultStruct.RArray, ParamStruct->pResultStruct, ParamStruct->pResultStruct->RArray ); Но как только я ствалю: Код ResultStruct.used = true; пустота приходит. Сообщение отредактировал DarkMaster - 27.5.2016, 20:03
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
  |
Ответов
DarkMaster |
27.5.2016, 18:43
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29736
Пользователь №: 11.279

|
С адресами я тоже тупил. Точнее я думал структуру создаст пилот, а мне ее надо только принять, соответственно писал сначала в молоко и понять ничего не мог. Но сейчас вроде как все нормально сделано... Код include <stdexcept>
using namespace std;
struct tInitStruct { long unsigned FunctionCount; const char** FunctionNames; };
struct tResultStruct // Заполняется плагином. Память под строку выделяется и освобождается плагином. { bool used; // Используется ли эта структура при возврате значения. = false unsigned int RLength; // Размер данных. char *RArray; // Указатель на возвращаемую строку. unsigned int Reserved1; unsigned int Reserved2; unsigned __int64 Reserved3; unsigned __int64 Reserved4; }; tResultStruct ResultStruct;
struct tParamStruct { int unsigned* WindowHandle; // Handle of workWindow int unsigned* WindowPID; // pid of process of workWindow tResultStruct *pResultStruct; char* ParamString; // string of parameters with substituted variables char* ParamStringOrig; // original string of parameters char Result[32767]; // array for returned values };
tParamStruct *ParamStruct; // init by UOPilot static tInitStruct InitStruct; // init by plugin, free on unload
extern "C" __declspec(dllexport) unsigned long * __stdcall InitPlugin(int App, int Scr, double& Version) { // Количество полезных экспортируемых функций для сообщения пилоту // в зависимости от версии протокола обмена между пилотом и плагином. // Это НЕ версия самого пилота, а версия протокола обмена между пилотом и длл. if (Version >= 2.18) { InitStruct.FunctionCount = 2; InitStruct.FunctionNames = new const char*[InitStruct.FunctionCount]; InitStruct.FunctionNames[0] = "Function1"; InitStruct.FunctionNames[1] = "Function2"; } else { InitStruct.FunctionCount = 0; // Выгурзит длл, т.к. функций для экспорта нет. } return (&InitStruct.FunctionCount); }
static char message[] = "123\0"; // Образец функции возвращающей строку. extern "C" __declspec(dllexport) void __stdcall Function2(tParamStruct *ParamStruct) { // Так работает по старой схеме: ResultStruct.RArray = message; ResultStruct.RLength = 4; ParamStruct->pResultStruct = &ResultStruct; sprintf_s(ParamStruct->Result, "%u " "%u " "%s", &ResultStruct.RArray, ParamStruct->pResultStruct, ParamStruct->pResultStruct->RArray );
// Вот так пустоту возвращает: ResultStruct.used = true; ResultStruct.RArray = message; ResultStruct.RLength = 4; ParamStruct->pResultStruct = &ResultStruct; }
Т.е. у тебя на практике реально новым методом данные возвращались? Сообщение отредактировал DarkMaster - 27.5.2016, 23:26
Прикрепленные файлы
socket.7z ( 13,13 килобайт )
Кол-во скачиваний: 1727
msvcp120d.7z ( 150,41 килобайт )
Кол-во скачиваний: 1575
msvcr120d.7z ( 446,96 килобайт )
Кол-во скачиваний: 1546
socket2.7z ( 13,14 килобайт )
Кол-во скачиваний: 1624
socket3.7z ( 13,35 килобайт )
Кол-во скачиваний: 1570
socket4.7z ( 13,35 килобайт )
Кол-во скачиваний: 1750
socket5.7z ( 13,37 килобайт )
Кол-во скачиваний: 1743
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Сообщений в этой теме
DarkMaster Вопросы по разработке. 27.5.2016, 13:29 Cockney Игрался. Было раз такое, но это я с адресами тупил... 27.5.2016, 18:30 Cockney Да.
А если так ? я не знаю, есть ли разница, но..... 27.5.2016, 18:51 DarkMaster reserved был заменен на tResultStruct *pResultStru... 27.5.2016, 19:03 Cockney Он корректный, да, ты же знаешь, что он там находи... 27.5.2016, 19:09 DarkMaster дык адрес это и есть unsigned int. Он хранится как... 27.5.2016, 19:19 Cockney Да.
Ты пробовал, как я писал? 27.5.2016, 19:26 DarkMaster Да, сейчас как раз сижу. Так же попробовал сделать... 27.5.2016, 19:34 DarkMaster Дай работающий пример. Чет у меня такое чувство, ч... 27.5.2016, 19:47 Cockney чуть позже будет. 27.5.2016, 20:09 DarkMaster кстати на:
ResultStruct.used = true;
реакция идет ... 27.5.2016, 20:36 Cockney а почему он должен ее не видеть? 27.5.2016, 20:56 Cockney tResultStruct = packed record // Заполняется плаги... 27.5.2016, 21:11 DarkMaster Потому что не видит результат, как следствие у нас... 27.5.2016, 21:25 TemTriss Доброго времени суток, а не кто случаем не сталкив... 8.6.2016, 18:03 Aimed
Доброго времени суток, а не кто случаем не сталки... 8.6.2016, 22:02 DarkMaster Это не решается плагином. 8.6.2016, 18:11 TemTriss
Это не решается плагином.
Может подскажите а ест... 8.6.2016, 18:19 Cockney Нет. Нету. 8.6.2016, 18:25 DarkMaster И? А как ты пилот заставишь потом понимать эти шиф... 8.6.2016, 23:23 Aimed
И? А как ты пилот заставишь потом понимать эти ши... 9.6.2016, 8:27 Cockney Что мешает один раз кому-то купить и раздать всем?... 9.6.2016, 9:44 TemTriss
А я предлагал дать возможность дергать функции пи... 16.6.2016, 12:38 DarkMaster К тому же подобное шифрование никак не скрывает ко... 9.6.2016, 10:13 Cockney да 16.6.2016, 13:15 WKnight В планы реализации входит.
Туда много чего входит... 16.6.2016, 14:49 Cockney
В планы реализации входит.
Что именно входит? ... 16.6.2016, 18:09 WKnight Вообще, всё из перечисленного, но подозреваю, что ... 16.6.2016, 22:32 DarkMaster
О.о 17.6.2016, 9:44 Cockney
О.о
Да-да,не подведи,вся надежда на тебя) 17.6.2016, 15:26 DarkMaster Мне бы еще понять причем тут я и, что от меня хотя... 17.6.2016, 17:58 Cockney Кнайта пинать. 18.6.2016, 15:35 WKnight :lol: 18.6.2016, 16:28 Cockney Скрипт :
set logging clear
set logging mode fullti... 11.7.2016, 13:07 Cockney в 2.35 тоже самое.
Где брать 2.33 и другие стар... 12.7.2016, 22:10 DarkMaster вообще на сайте они есть. ну и я залить могу. 13.7.2016, 3:11 Cockney в старых версиях нет. упоминание есть, а скачать н... 13.7.2016, 11:03 DarkMaster Все прекрасно качается с сайта. Обновил репозитори... 13.7.2016, 11:19 Cockney ссылку сайта тогда можно? 13.7.2016, 11:21 DarkMaster http://uopilot.uokit.com/
тыкаем old version тыкам... 13.7.2016, 11:23 Cockney 33 недоступен. как и многие другие 13.7.2016, 11:26 DarkMaster Хм... Странно.
https://redmine.uokit.com/projects/... 13.7.2016, 11:32 Cockney Чего? написать репорт? 13.7.2016, 11:33 DarkMaster Чиркани =) Ну или я чиркану... 13.7.2016, 11:37 DarkMaster версии все нужные в полезных советах есть? могу ещ... 13.7.2016, 13:56 Cockney В советах только ссылка на самую новую. Истории не... 13.7.2016, 14:27 WKnight Добавил несколько ссылок на старые версии на хомпе... 13.7.2016, 15:07 Cockney в чем прикол? и где теперь его брать? 13.7.2016, 16:10 DarkMaster скорее всего проблема из-за гугла с его паническим... 13.7.2016, 16:13 Kortez Приветствую, есть некоторые вопросы по плагинам:
... 16.9.2017, 21:12 Cockney Массив вроде можно передать как %a[1] 16.9.2017, 21:21 Kortez
Массив вроде можно передать как %a[1]
так можно... 23.9.2017, 17:59 DarkMaster
У луа есть собственные требования к функциям для ... 17.9.2017, 6:35 cirus
--lua
local w = findwindow("BlueStacks... 23.9.2017, 19:07 DarkMaster
Главное чтобы на костре не сожгли:
get (... 23.9.2017, 22:16 WKnight build 12
Починил 'get windowpos' в Lua. Те... 12.10.2017, 13:56
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|