Плагин WorkFlow на C#

Автор once, 10.05.17, 14:31:21

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

once

Пытаюсь написать плагин для WorkFlow на шарпе, но не могу понять какое описание должно быть у функции, которая вызывается из автоматической операции через ExecDLLFunction.
Вот, что у меня получилось на C#:

[DllExport("WFAddObject", CallingConvention.StdCall)]
public static string WFAddObject(IntPtr wfbl)
     {         
         MessageBox.Show("Привет, WF!");
         return "Ура!";
     }

Знаю, что не хватает параметров, но так она хоть работает, Т.е. при отработке автооперации появляется сообщение "Привет, WF!". Но вот сообщение "Ура!" уже не появляется, потому что (предполагаю что поэтому) WFAddObject должен возвращать OleVariant, которого нет в шарпе и автооперация ниже не выдает сообщение "Ура!".

Program Main;
begin             
  boRes:=ExecDLLFunction('D:\Путь\My.dll', 'WFAddObject');
  if boRes <> '' then
    begin
      MsgBox('!!!', boRes, MB_OK+MB_ICONERROR);
    end;
SetResultOperation(0);
end;

Еще в WFAddObject первым параметром должен прийти указатель на интерфейс IWFBusinessLogic, но если делать как ниже не работает :-(

[DllExport("WFAddObject", CallingConvention.StdCall)]
public static string WFAddObject(IntPtr wfbl)
     {         
         IWFBusinessLogic bl = (IWFBusinessLogic)Marshal.GetTypedObjectForIUnknown(wfbl, typeof(IWFBusinessLogic));
         MessageBox.Show("Привет, WF!");
         return "Ура!";
     }

Подскажите как на шарпе правильно описать функцию WFAddObject для плагина WF.

nnspu

Столкнулся с необходимостью написать плагин Workflow на c#. Получилось корректно передать параметры?

Chaa


nnspu

Отличная статья!
Код прекрасно работает, спасибо!