Вопрос по написанию модулей

Больше
15 года 7 мес. назад #1 от qmor
Хочу написать небольшой плагин для смены икс-статуса. Скачал SDK почитал API но все же не работает у меня смена статуса. Что я делаю не так?
   function pluginFun (data:pointer):pointer;stdcall;
       begin
        result:=str2comm(char(206)+char(15)+_istring('1111')+_istring('esss'));
           end;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 7 мес. назад #2 от Vinum
из апи:
if cmd = PC_SET_XSTATUS  // set user x-status
     BYTE      xstatus code
     ISTRING   xstatus name
     ISTRING   xstatus text
То есть примерно вот что должно получиться:
procedure SetXStatus(code: Byte; name,text: String);
begin
 callStr(ansichar(PM_CMD)+ansichar(PC_SET_XSTATUS)+ansichar(code)+_istring(name)+_istring(text));
end;
:)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 7 мес. назад #3 от qmor
function pluginFun (data:pointer):pointer;stdcall;
       begin
        result:=str2comm(ansichar(5)+ansichar(206)+ansichar(15)+_istring('1111')+_istring('esss'));

           end;

переписал вот так, но эффекту не последовало

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 7 мес. назад #4 от Vinum
function pluginFun(data: Pointer): Pointer; stdcall;
begin
 Result := NIL;
 if (data = NIL) or (_int_at(data) = 0) then exit;
 case _byte_at(data, 4) of
  PM_EVENT:
   case _byte_at(data, 5) of
   PE_INITIALIZE: 
    begin
     callback:=_ptr_at(data, 6);
     Result := str2comm(char(PM_DATA) + _istring('Имя плагина') + _int(APIversion));
     callStr(ansichar(PM_CMD)+ansichar(PC_SET_XSTATUS)+ansichar(code)+_istring(name)+_istring(text));
    end
   end; 
 end; 
end;

При инициализации плагина должен выставиться допстатус.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 7 мес. назад #5 от qmor
а где находится функция callstr? что то так не могу найти.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 7 мес. назад #6 от Vinum
Дак это... в CallExec.pas
var
  callback:TpluginFun;      // &RQ callback function
  outBuffer:string;

// convert a string to a "plugin communication"
function str2comm(s:string):pointer;
begin
outBuffer:=_int(length(s))+s;
result:=@outBuffer[1];
end; // str2comm

// execute callback on a string instead of pointer
function callStr(s:string):pointer;
begin
 result:=callback(str2comm( s ))
end;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: dekRapid D
Время создания страницы: 0.462 секунд
Работает на Kunena форум