dll_function
_DLL Function
In VO functions from DLLs can be used with the _dll function
statement.
This works als in X#, but the ptr
datatype is not available in the Core dialect, you need something else, often the intptr
datatype, but this depends on the function declaration.
There are two possibilities in X#. The first is the VO compatible syntax:
_dll function ShowWindow(hWnd as IntPTR, nCmdShow as int) as logic pascal:user32.ShowWindow ANSI
and the other the C# compatible syntax:
[DllImport("user32.dll")] function ShowWindow(hWnd as IntPTR, nCmdShow as int) as logic pascal
For the C# syntax you need to include also
using System.Runtime.InteropServices
Of course you can also declare these functions as methods of a class:
using System.Runtime.InteropServices using System.Text class IniFile [DllImport("kernel32.dll",CharSet:=CharSet.Ansi,EntryPoint:="GetPrivateProfileString")]; static method GetString(lpAppName as string, lpKeyName as string, lpDefault as string, lpBuffer as StringBuilder, nSize as dword, lpFileName as string) as dword pascal [DllImport("kernel32.dll",CharSet:=CharSet.Ansi,EntryPoint:="GetPrivateProfileString")]; static method GetString(lpAppName as string, lpKeyName as string, lpDefault as string, lpBuffer as byte[], nSize as dword, lpFileName as string) as dword pascal [DllImport("kernel32.dll",CharSet:=CharSet.Ansi,EntryPoint:="WritePrivateProfileString")]; static method WriteString(lpAppName as string, lpKeyname as string,lpString as string, lpFileName as string) as logic pascal [DllImport("kernel32.dll",CharSet:=CharSet.Auto,EntryPoint:="GetPrivateProfileInt")]; static method GetInt(lpAppName as string, lpKeyname as string,nDefault as int , lpFileName as string) as int pascal [DllImport("kernel32.dll",CharSet:=CharSet.Ansi,EntryPoint:="GetPrivateProfileSection")]; static method GetSection(lpAppName as string, lpszReturnBuffer as byte[], nSize as int, lpFileName as string) as logic pascal end class
Please note that in the _dll statement the calling convention must be specified (in VO this is not necessary). Please see here: _dll function changes
dll_function.txt · Last modified: 2018/09/03 18:51 by wolfgangriedmann