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?
Dodaj deklarację analogicznie jak w przypadku innych funkcji z unitu Windows.pas. Następnie ją wywołaj :)
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?
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
Tak kernel to kernel32.dll. No to dzięki za info bardzo mi pomogłeś.