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.1279882464.txt.gz · Last modified: 2010/07/29 00:00 (external edit)