Jak wywołać metodę z windows API na delphi 7?

0

Witajcie mam takie dość nietypowe pytanie. Przypuszczalnie źle odpytywałem wujka google o to ale może chociaż wy zarzucicie jakimś linkiem lub podpowiecie jakiej frazy w google użyć. Mam projekt, do którego zmuszony jestem używać Delphi7 (tylko taka jest zakupiona licencja). Jako, że Delphi 7 jest już dość archaicznym środowiskiem to zakres funkcji z Windows API udostępniany za pomocą unita Windows jest dość ograniczony. Nowych windowsach (7 i 8) windows API udostępnia kilka dodatkowych funkcji, które chciałbym wywołać w mojej aplikacji ale z powodu starego kompilatora w unicie Windows nie mam takich wywołań.
Pytanie zatem do was. Jak wywołać metodę z Windows API, której nie widać z poziomu Delphi?

0

Dodaj deklarację analogicznie jak w przypadku innych funkcji z unitu Windows.pas. Następnie ją wywołaj :)

0

Czyli co jak np w unicie Windows.pas mam coś takiego

function DeleteFile; external kernel32 name 'DeleteFileW';

to wystarczy, że zrobię coś w ten deseń:

function NAZWA_MOJEJ_FUNKCJI; external NAZWA_DLL name 'NAZWA_FUNKCJI_Z_API';

?
Co do nazwa_dll to rozumiem, że trzeba ją najpierw zaimportować jeśli nie jest już zaimportowana tak?

1

W zasadzie tak - tylko zwróć uwagę na wartość zwracaną i argumenty. Nie mam delphi pod ręką, ale kernel32 to najprawdopodobniej const string o wartości 'kernel32.dll'

EDIT:
jeżeli nie masz pewności, czy funkcja jest dostępna (np. aplikacja będzie uruchamiana na różnych wersjach systemu), to powinieneś ładować funkcje dynamicznie i sprawdzać, czy istnieją:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683212(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684175(v=vs.85).aspx

0

Tak kernel to kernel32.dll. No to dzięki za info bardzo mi pomogłeś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1