mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-07 04:52:39 +02:00
69 lines
1.2 KiB
ObjectPascal
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
|
|
|
|
}
|