CALLDLL #handle, "function", param1 as type1 [, param2 as type2 ], return as returnType
CALLDLL #handle, "function", param1 as type1 [, param2 as type2 ], return as returnType
Omschrijving:
CALLDLL wordt gebruikt om functies uit APIs van Windows of uit DLL's van derden aan te roepen.
Een DLL is een Dynamische Dynamic Link Library, hetgeen weer een module is die functies bevat
die door een programma kunnen worden aangeroepen terwijl het programma loopt.
De functies zijn specifiek voor die DLL. De documentatie van een DLL zal de informatie
bevatten om zijn functies aan te kunnen roepen.
#handle
Deze parameter is de handle dat werd gegeven aan de DLL toen het met het OPEN statement
werd geopend.
"function"
Deze parameter is de naam van de functie, omgeven door aanhalingstekens.
Het is hoofdlettergevoelig.
param1 as type1 [, param2 as type2 ]
Dit is een lijst van inputparameters die door de functie worden vereist.
Het aantal en het TYPE van inputparameters zijn afhankelijk van de functie die
wordt aangeroepen. Deze parameters verzenden informatie naar de functie zodat
het weet hoe het de taak moet uit voeren die door het programma wordt gewenst.
Deze parameters moeten AS TYPE worden meegegeven.
Zie het Gebruiken van Types met STRUCTS en CALLDLL voor details.
De parameters kunnen informatie zoals venster of control handles,
tekst strings voor display, etc. bevatten.
return as returnType
Deze parameter bevat de waarde die door de functie is teruggegeven.
Het moet ook van het correcte TYPE zijn dat door de functie wordt verwacht.
Als een functie geen waarde teruggeeft, wordt deze parameter overgedragen als AS VOID.
Gebruik:
Dit voorbeeld roept de WINDOWS API om een venster te minimaliseren op en
zijn titel te veranderen.
open "An Example" for window as #main
h = hwnd(#main)
open "user32" for dll as #user
calldll #user, "CloseWindow", _
h as long, _
result as boolean
calldll #user, "SetWindowTextA", _
h as long, _
"I was minimized!" as ptr, _
result as void
close #user
Liberty BASIC 3 heeft DLL handle gebruik verbeterd. Als een programma bepaalde standaard
DLLs niet heeft geopend, zal een verwijzing naar een gelijknamig handle toch nog naar de
gewenste DLL worden gezonden. Dit bespaart code voor het openen en sluiten van DLLs.
DLLs kunnen nog steeds met het OPEN statement worden geopend.
Hier zijn de standaard handles
#user32
#kernel32
#gdi32
#winmm
#shell32
#comdlg32
#comctl32
Voorbeelden:
'OPEN the DLL and give it a handle
Open "user32" for DLL as #u
Calldll #u, "CloseWindow", h as long, result as boolean
'CLOSE the DLL
close #u
of
'call the dll by its default handle.
'no need to OPEN it or CLOSE it
Calldll #user32, "CloseWindow", h as long, result as boolean
See also: STRUCT, Using Types with CALLDLL, What are APIs/DLLs?, How to Make API Calls