DLL einbinden

  • Hallo
    ich weiß nicht ob das überhaupt geht aber trotzdem mal kurz ne Frage:
    Ich habe eine DLL (cwbsy.dll von IBM Client Access). Diese DLL stellt mir bestimmte Funktionen zur Verfügung.

    Kann ich nun über AutoIT diese DLL einbinden um an die Funktionen zu kommen ???

    Vielen Dank für Eure Hilfe. Ich bin in diesem Bereich leider kein Experte.

  • Danke für deine Antwort. Bin schon mal einen Schritt weiter.
    Aber ich habe ein wenig mit der Syntax Probleme.

    Die cwbsy.dll bietet folgende Funktion:


    cwbSY_VerifyUserIDPwd
    Purpose
    Verifies the user ID and password are valid for the given system.
    Syntax

    --------------------------------------------------------------------------------

    unsigned int CWB_ENTRY cwbSY_VerifyUserIDPwd(

    cwbSY_SecurityHandle securityHandle,

    char *userID,

    char *password,

    cwbSV_ErrHandle errorHandle);


    --------------------------------------------------------------------------------


    Parameters
    cwbSY_SecurityHandle securityHandle - input
    A valid handle to a security object. The handle is obtained using cwbSY_CreateSecurityObj.
    char * userID - input
    A pointer to an ASCIIZ string which contains the user ID. The maximum length is 10 bytes + 1 byte for the NULL terminator.
    char * password - input
    A pointer to an ASCIIZ string which contains the current password. The maximum length is 10 bytes + 1 byte for the NULL terminator.
    cwbSV_ErrHandle errorHandle - output
    Any returned messages will be written to this object. It is created with the cwbSV_CreateErrHandle API. The messages may be retrieved through the cwbSV_GetErrText API. If the parameter is set to zero, no messages will be retrieved.
    Return codes
    The following list shows common return values.
    CWB_OK
    Successful completion.
    CWB_COMMUNICATIONS_ERROR
    A communication error occurred when attempting to contact the system.
    CWBSY_UNKNOWN_USERID
    The supplied user ID is not known to this system.
    CWBSY_WRONG_PASSWORD
    Password is not correct.
    CWBSY_PASSWORD_EXPIRED
    Password has expired.
    CWBSY_USER_PROFILE_DISABLED
    The user ID has been disabled.
    CWB_INVALID_HANDLE
    The security handle is not valid.
    Usage Notes
    The system name must set prior to calling this API by using cwbSY_SetSys API.
    Successful cwbSY_VerifyUserIDPwd and cwbSY_ChangePwd cause an entry to be created in .signon file.

    Wie binde ich das nun in DLLCALL oder DLLOPEN ein ?

    Vielleicht kann mir ja jemand helfen.

    Danke

  • Die Sache die ich eigentlich erreichen möchte ist folgende:

    Durch 2 Inputboxen werden Username und Passwort eingetragen. Diese werden in einer Datei oder in der Registry verschlüsselt abgelegt.

    Allerdings möchte ich mit den eingegebenen Daten kurz einen Connect, in dem Fall auf die AS400 durchführen, um zu sehen ob die eingegebenen Daten auch korrekt sind.

    Um diesen Testconnect machen zu können muss ich über diese DLL gehen die mir diese Funktion bieten würde.

    Aber ehrlich gesagt habe ich keine Schimmer momentan wie ich das in Autoit integrieren sollte.

    Danke für das super Forum.

  • Also mit 'DLLOpen' die DLL in den Zugriff bringen. Dann mit 'DLLCall' die Funktion aufrufen und den Rückgabewert prüfen (dafür müssen die Konstanten 'CWB_' bzw. 'CWBSY_' als Zahlen bekannt sein). Was mit den beiden 'handles' ist hab ich durch das Überfliegen noch nicht rausgefunden, aber ich würde es erstmal mit zweimal '0' probieren. Also der 'DLLCall' sollte etwa so aussehen :

    [autoit]

    $Result = DLLCall($dll, "int", "cwbSY_VerifyUserIDPwd", 0, $User, $Password, 0 )

    [/autoit]


    Danach kannst du dann die Variable $Result überprüfen. Anstatt der beiden Nullen muß eventuell eine Variable übergeben werden.

    Einmal editiert, zuletzt von JanSchmidt (15. März 2007 um 16:41)

  • Hi,

    danke für die Antwort.
    Ich bekomme zwar keinen Fehler, aber als Rückgabewert immer die 0, egal was ich einstelle.

    Irgendwie merkwürdig. Noch eine Idee ?

    $Temp = DLLCall($DLL, "int", "cwbSY_VerifyUserIDPwd", 0, $useridin, $userpass, 0 )

    Danke

  • Hi,

    ich bin jetzt grad auf Arbeit, und kann mir den Source nicht ansehen, da der auf nem FTP liegt.. Wenn ich zu Hause bin mach ich das mal.. kenne mich mit c++ aus und denke dann ist das kein Problem ;)

    Gruß,
    M4CH!N3