mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 12:59:29 +01: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
 | 
						|
 | 
						|
}
 |