Здравствуйте, гость ( Вход | Регистрация )

> Вопросы по разработке.
DarkMaster
сообщение 27.5.2016, 13:29
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.495
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28055
Пользователь №: 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____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 27.5.2016, 18:43
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.495
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28055
Пользователь №: 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 килобайт ) Кол-во скачиваний: 1602
Прикрепленный файл  msvcp120d.7z ( 150,41 килобайт ) Кол-во скачиваний: 1442
Прикрепленный файл  msvcr120d.7z ( 446,96 килобайт ) Кол-во скачиваний: 1441
Прикрепленный файл  socket2.7z ( 13,14 килобайт ) Кол-во скачиваний: 1484
Прикрепленный файл  socket3.7z ( 13,35 килобайт ) Кол-во скачиваний: 1445
Прикрепленный файл  socket4.7z ( 13,35 килобайт ) Кол-во скачиваний: 1586
Прикрепленный файл  socket5.7z ( 13,37 килобайт ) Кол-во скачиваний: 1600


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
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


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 15.6.2024, 20:54
Designed by Nickostyle