Freigeben über


DECLARE - DLL-Befehl

Registriert eine Funktion in einer externen gemeinsam genutzten Bibliothek. Bibliotheken sind 32-Bit-Dynamic-Link-Library-Dateien (.DLL)

DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName]
   [cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...]

Parameter

  • cFunctionType
    Gibt, sofern vorhanden, den Datentyp des Rückgabewerts der gemeinsam genutzten Bibliotheksfunktion an. Hat die Funktion keinen Rückgabewert, geben Sie cFunctionType nicht an.

    cFunctionType kann die folgenden Werte annehmen:

    cFunctionType Beschreibung
    SHORT 16-Bit-Ganzzahl
    INTEGER 32-Bit-Ganzzahl
    SINGLE 32-Bit-Gleitkomma
    DOUBLE 64-Bit-Gleitkomma
    LONG 32-Bit-Ganzzahl (lang)
    STRING Zeichenfolge
    OBJECT IDispatch-Objekttyp
  • FunctionName
    Gibt den Namen der gemeinsam genutzten Bibliotheksfunktion an, die in Visual FoxPro angemeldet werden soll. Bei den durch diesen Parameter übergebenen Funktionsnamen wird zwischen Groß- und Kleinschreibung unterschieden.

    Anmerkung   Der Name der DLL-Funktion darf nicht mit dem Namen identisch sein, der im Win32-API-Handbuch genannt wird. Die MessageBox-Funktion sollte z. B. als "MessageBoxA" (1-Byte-Zeichen) und "MessageBoxW" (UNICODE) bezeichnet werden. Wenn Visual FoxPro die DLL-Funktion, die Sie mit FunctionName angegeben haben, nicht finden kann, wird der Buchstabe "A" am Ende des Funktionsnamen angefügt, und Visual FoxPro sucht die Funktion mit dem neuen Namen.

    Hat die gemeinsam genutzte Bibliotheksfunktion denselben Namen wie eine Visual FoxPro-Funktion oder ist der Name kein gültiger Visual FoxPro-Name, müssen Sie beim Anmelden der Funktion mit der AS-Klausel entsprechend der Beschreibung weiter unten in diesem Thema einen Alias zuweisen.

    Sie können auch OBJECT als Rückgabewert verwenden, wie z. B. in "DECLARE OBJECT myfunc IN some DLL ...", obwohl COM normalerweise über keine APIs in diesem Format verfügt. Beispiel:

    DECLARE INTEGER AccessibleObjectFromWindow IN oleacc.dll ;
    integer, integer, string , object @
    
  • IN LibraryName
    Gibt den Namen der gemeinsam genutzten externen Bibliothek an, die die als FunctionName angegebene Funktion enthält.

    Wenn Sie als LibraryName WIN32API angeben, sucht Visual FoxPro die 32-Bit-Windows-.DLL-Funktion in KERNEL32.DLL, GDI32.DLL, USER32.DLL, MPR.DLL und ADVAPI32.DLL.

  • AS Alias
    Gibt einen Alias für den Namen einer gemeinsam genutzten Bibliotheksfunktion an, der mit dem Namen einer Visual FoxPro-Funktion identisch oder kein zulässiger Visual FoxPro-Name ist. Alias darf nicht ein in Visual FoxPro reserviertes Wort und nicht der Name einer bereits in Visual FoxPro angemeldeten gemeinsam genutzten Bibliotheksfunktion sein.

    Wenn Sie einer Funktion einen Alias zuweisen, verwenden Sie diesen Namen zum Aufrufen der Funktion. Bei Alias wird nicht zwischen Groß- und Kleinschreibung unterschieden.

  • cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2, ...
    Gibt die Parametertypen an, die der gemeinsam genutzten Bibliotheksfunktion übergeben werden.

    cParameterType ist erforderlich und gibt den Datentyp aller Parameter an, die die gemeinsam genutzte Bibliotheksfunktion erwartet. cParameterType kann einer der folgenden Datentypen sein:

    CParameterType Beschreibung
    INTEGER 32-Bit-Ganzzahl
    SINGLE 32-Bit-Gleitkomma
    DOUBLE 64-Bit-Gleitkomma
    LONG 32-Bit-Ganzzahl (lang)
    STRING Zeichenfolge

    Visual FoxPro erstellt einen Fehler, wenn ein Parameter nicht den Typ hat, den die gemeinsam genutzte Bibliotheksfunktion erwartet. Nullwerte können als leere Zeichenfolgen übergeben werden.

    Damit ein Parameter als Verweis übergeben wird, wenn die Funktion aufgerufen wird, müssen Sie sowohl in diesem Befehl nach dem Parameter cParameterType als auch in der aufrufenden Funktion vor der entsprechenden Variablen @ angeben. Wenn Sie @ nicht in DECLARE, in der aufrufenden Funktion oder in beiden angeben, wird der Parameter als Wert übergeben. Weitere Informationen zu gemeinsam genutzten Bibliotheken, die @ für die Übergabe von Parametern als Verweis benötigen, finden Sie im Programmierhandbuch zu dem eingesetzten Betriebssystem oder der verwendeten Umgebung (z. B. finden Sie im Microsoft Win32 Programmierhandbuch Informationen hierzu, wie Sie Parameter an Windows-DLLs übergeben).

    Anmerkung   Die Parameternamen ParamName1, ParamName2 usw. sind optional und werden von Visual FoxPro und der gemeinsam genutzten Bibliotheksfunktion nicht verwendet. Sie können sie als Hinweis auf die Namen und Typen der Parameter angeben, die an die Funktion übergeben werden.

Hinweise

Bevor Sie eine gemeinsam genutzte Bibliotheksfunktion aus Visual FoxPro heraus aufrufen, müssen Sie DECLARE mit dem Namen der Funktion, dem Namen der gemeinsam genutzten Bibliothek, die die Funktion enthält, und den Parametertypen, die die Funktion erwartet, eingeben.

Aus Gründen der Abwärtskompatibilität unterstützt Visual FoxPro Aufrufe externer API-Bibliotheken mit dem SET LIBRARY-Befehl. (Mit SET LIBRARY können Sie auf Funktionen in Foxtools.fll zugreifen.) DECLARE ist jedoch die bevorzugte Methode zum Registrieren gemeinsam genutzter Bibliotheksfunktionen.

Visual FoxPro fügt diesem Befehl den OBJECT-Befehl mit cFunctionType in erster Linie hinzu, um einige ActiveX API-Routinen für Eingabehilfen zu unterstützen, Sie können ihn aber auch generisch für andere Windows API-Routinen verwenden.

Weitere Informationen zum Aufrufen gemeinsam genutzter Bibliotheksfunktionen finden Sie im Programmierhandbuch zu dem eingesetzten Betriebssystem oder der verwendeten Umgebung (z. B. finden Sie im Microsoft Win32 Programmer's Guide Informationen hierzu, wie Sie DLLs aufrufen).

Geben Sie DISPLAY STATUS oder LIST STATUS ein, um die Namen registrierter Funktionen anzuzeigen. Geben Sie CLEAR ALL oder CLEAR DLLS ein, um registrierte Funktionen aus dem Arbeitsspeicher zu entfernen.

Beispiel

Im folgenden Beispiel für Windows wird das Fensterhandle von Visual FoxPro bzw. Null zurückgegeben, wenn Sie zu einer anderen Windows-Anwendung wechseln. Wird das WAIT-Fenster angezeigt, haben Sie 5 Sekunden Zeit, die Tastenkombination ALT+TAB einzugeben, um zu einer anderen Anwendung zu wechseln, oder Sie können Visual FoxPro als aktive Anwendung beibehalten.

CLEAR
DECLARE INTEGER GetActiveWindow IN win32api
WAIT WINDOW "You can switch to another application now" TIMEOUT 5
? GetActiveWindow( )

Siehe auch

CALL | CLEAR | DISPLAY DLLS | DISPLAY STATUS | LIST DLLS | LOAD | SET LIBRARY