GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skripty:dlls

This is an old revision of the document!


Volání funkcí v DLL knihovnách

Ze skriptů GeoGetu lze volat funkce v externích DLL knihovnách.

Ve skriptu lze nadeklarovat svojí funkci či proceduru, jejíž implementace není ve skriptu, ale v externí DLL knihovně. Externí DLL knihovnu lze připravit v libovolném programovacím jazyce, který umí překládat do standardní DLL knihovny.

Pokud chcete deklarovat funkci uloženou v DLL knihovně, napište za hlavičku funkce klíčová slovo external a za něj řetězec ve formátu: 'functionname@dllname callingconvention'

Překladač pak nebude hledat ve skriptu implementaci funkce a v případě potřeby zavolá příslušnou funkci v DLL knihovně.

Příklad:

function FindWindow(C1, C2: PChar): Longint; external 'FindWindowA@user32.dll stdcall';
function ShowWindow(hWnd, nCmdShow: Longint): Integer; external 'ShowWindow@user32.dll stdcall';
function SetWindowText(hWnd: Longint; Text: PChar): Longint; external 'SetWindowTextA@user32.dll stdcall';
 
procedure something;
var 
  i: Longint;
  wnd: Longint;
Begin
  wnd := Findwindow('', 'Innerfuse Pascal Script III');
  SetWindowText(Wnd, 'This is DLL demo, it calls some windows user32 routines. This will hide this window for a few seconds');
  for i := 0 to 200000 do begin end;
  ShowWindow(Wnd, 0); // hide it
  for i := 0 to 200000 do begin end;
  SetWindowText(Wnd, 'Wasn''t that nice?');
  ShowWindow(Wnd, 5); // show it
  for i := 0 to 200000 do begin end;
  SetWindowText(Wnd, 'Innerfuse Pascal Script III');
End;
user/skripty/dlls.1280404533.txt.gz · Last modified: 2010/07/29 00:00 (external edit)