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