fpc/demo/win32/testdll.pp
2002-09-07 15:06:34 +00:00

69 lines
1.2 KiB
ObjectPascal

{
$Id$
Copyright (c) 1998 by Pierre Muller
Win32 DLL usage example. It needs dlltest.pp
}
library testdll;
function GetModuleFileName(hModule:longint;lpszPath:pchar;cchPath:longint):longint;
external 'kernel32' name 'GetModuleFileNameA';
procedure beep(ID:longint);
external 'user32' name 'MessageBeep';
var
teststr : string;
procedure P1(var s:string);export;
var
p:array[0..255] of char;
begin
length(s);
getmodulefilename(Hinstance,@p,255);
writeln('DLL: Hello, I''m DLL ',pchar(@p));
end;
procedure P2(x:longint);export;
begin
writeln('DLL: Argument X=',x);
writeln('DLL: New teststr="',teststr,'"');
end;
procedure P3(var t);export;
var
p : pointer;
begin
p:=Addr(T);
p:=p;
end;
procedure P4(x1:pointer);export;
begin
Inc(x1);
end;
procedure NewExit;
begin
beep(0);
writeln('DLL: Exit from testdll');
end;
exports
P1 index 1,
P2 name 'Proc2',
P3,
P4 resident,
teststr name 'FPC_string';
begin
writeln('DLL: HInstance ',Hinstance,' PrevInst ',Hprevinst,' DLLReason ',DLLreason,' DLLParam ',DLLparam);
teststr:='DLL init done';
exitproc:=@newExit;
end.
{
$Log$
Revision 1.2 2002-09-07 15:06:35 peter
* old logs removed and tabs fixed
}