Страница 1 из 1

WinAPI в Clarion.NET

Добавлено: 23 Апрель 2009, 8:41
Andrew™
у меня Clarion.NET 2.0.2684

дока очень скудная, может есть что почитать на эту тему, интересует вопрос - как задействовать win api, аналог декларации dllimpot'а я нашёл, а как юзать дальше функции непонятно, т к в .NET нету простых переменных, все наследуются от object, а мне нужны что то типа char *

Re: WinAPI в Clarion.NET

Добавлено: 23 Апрель 2009, 12:04
Andrew™
потихоньку разбираюсь, вот как это выглядит:
  • USING('System.Runtime.InteropServices')
    MAP
    [DllImportAttribute('user32.dll',EntryPoint='MessageBoxA',)]
    MessageBox(UNSIGNED hWnd,STRING Text,STRING Caption,UNSIGNED Type),SIGNED,PROC
    [DllImportAttribute('c70run.dll',EntryPoint='_memcpy']
    RTL::memcpyLF(CLALONG,STRING,CLALONG),CLALONG,PROC,PASCAL
    [DllImportAttribute('c70run.dll',EntryPoint='Cla$NewMemZ']
    RTL::NewMem(CLALONG _Size),CLALONG
    [DllImportAttribute('c70run.dll',EntryPoint='_free')]
    RTL::FreeMem(CLALONG _Addr)

    END
вызов далее
MessageBox(0,'Text','Caption',0)
идёт на ура

а вот тот же memcpy - GPF, понятно что разные декларации функций, для первого PASCAL, для второй C, но эти атрибуты теперь недоступны в описании процедур, а вставить в
  • [DllImportAttribute( 'c70run.dll',EntryPoint='_memcpy',CallingConvention=CallingConvention.Cdecl)]
приводит к GPF на этапе компиляции ;(