Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Utilizzare una dll con VB6

    Ciao a tutti,
    mi ritrovo a dover utilizzare una dll scritta in c. VVoVe:
    Come informazione ho il file .h (che credo mi sia inutile in vb) e lo sto "traducendo" in vb.
    Sono quasi aposto con le varie strutture, mi rimane un dubbio....

    Una delle funzioni è questa...

    CMCommand_AsyncExecute (WORD HCon, HWND HWnd, CHAR IdCommand, LPVOID lpCmd, LPVOID lpReply, WORD TimeOut);

    il tipo word in vb6 come lo dichiaro?
    LPVOID che cos'è? come lo gestisco.

    Non sono un granchè come programmatore, cercate se possibile, di fare esempi a prova di cretino..... ovvero io :berto:

  2. #2
    WORD = Integer (qualora ti capitasse: DWORD = Long, CHAR = Byte)
    Senza altre informazioni è impossibile dirti come tradurre LPVOID, visto che in VB non si possono usare i puntatori; bisognerebbe sapere bene come funziona la libreria per poterti dare suggerimenti adeguati.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Il .h può essere di aiuto?

  4. #4
    Dimenticavo.... grazie per la risposta!!!

  5. #5
    Provo a postare il .h??? Aiuto....

    .h#include <windows.h>
    #ifndef CMLINKNT

    #define CMLINKNT


    typedef struct SRSConf
    {
    char device[5];
    long baudrate;
    int parity;
    int stop;
    int car;
    } RSCONF;


    typedef struct STcpipPar
    {
    char ClientIpAddr[20];
    int PortNumber;
    int TimerValue;
    int Encription; char CertificateName[80];
    } TCPIPPAR;


    typedef struct _ConnectionParam
    {
    char ConnectionMode;
    RSCONF pRsConf;
    TCPIPPAR TcpIpConf;
    } CONNECTIONPARAM;


    #define DLINK_MODE_SERIAL 'S'
    #define DLINK_MODE_SERIAL_EASY 's'
    #define DLINK_MODE_TCPIP 'L'
    #define DLINK_MODE_USB 'U'
    #define DLINK_MODE_EMULATION 'E'


    #define WM_EXECUTE_COMPLETE WM_USER+1017


    //----------API Return code-----------------------------------------------------
    #define CM_OK 1
    #define CM24_TABCONFULL 1401
    #define CM24_SYSTEMERR 1402
    #define CM24_SEQUENCEERR 1403
    #define CM24_PARAMERR 1404
    #define CM24_CMDFAILED 1405
    #define CM24_CFGFILENOTFOUND 1406
    #define CM24_RCUNKNOW 1407
    #define CM24_CONNECTFAILED 1408
    #define CM24_DISCONNECTFAILED 1409
    #define CM24_CONNECREFUSED 1410
    #define CM24_SYNTAXERROR 1412
    #define CM_SYNTAXERROR 1413
    #define CM_UNEXPECTEDREPLY 1414
    #define CM_OUTPUTOVERFLOW 1415

    #define CM24_FWFILENOTFOUND 1451
    #define CM24_FWFILEERR 1452

    #define CM_SYSTEM_ERR 1001
    #define CM_CONNECTION_ERR 1002
    #define CM_ALREADY_CONNECTED_ERR 1003
    #define CM_PARAMETERS_ERR 1004
    #define CM_WRITE_ERR 1005
    #define CM_LAN_WRITE_ERR 1006
    #define CM_TIMEOUT_ERR 1007
    #define CM_OVERFLOW_ERR 1008
    #define CM_READ_ERR 1009
    #define CM_LAN_OPEN_ERR 1010
    #define CM_HCONNECT_UNAVAILABLE 1011
    #define CM_LAN_READ_ERR 1012
    #define CM_BCC_ERR 1013
    #define CM_PROTOCOL_ERR 1014
    #define CM_CDM_IN_PROGRESS 1015


    #define LEN_PASSWORD 6
    #define CM_SINGLE_CONNECTION 0xFFFF
    #define CM_DEF_TIMEOUT 0xFFFF
    #define MAX_SLOT_ACTIVE 4
    #define MAX_FLASH_REF 16
    #define MAX_CASSETTES 10
    #define MAX_DELAYCLASS 10
    #define MAX_USERID 10
    #define MAX_MODULE 20
    #define MAX_CHARDENOM 4
    #define MAX_CHANNEL 32
    #define MAX_DEPOSIT 200
    #define MAX_DENOMINATION 32
    #define MAX_BOOKING 29


    #define OPEN 'O'
    #define CLOSE 'C'
    #define EXTENDED_STATUS 'E'
    #define GET_CASH_DATA 'G'
    #define TEST 'T'
    #define TRASPARENT '#'
    #define TRASPARENT_START 'X'
    #define TRASPARENT_END 'Y'
    #define DEPOSIT 'D'
    #define WITHDRAWAL 'W'
    #define GET_CONFIG 'R'
    #define MOD_FILL 'Z'
    #define FILL 'F'
    #define UNDO 'U'
    #define INIT 'I'





    typedef struct _InpOpTest
    {
    CHAR Module;
    WORD Type;
    LPVOID ExInfo;
    } INPUT_OP_TEST,INPUT_OP_MOD_FILL;

    typedef struct _InpOpFill
    {
    WORD Type;
    LPVOID ExInfo;
    } INPUT_OP_FILL;

    typedef struct _OpTrasp
    {
    char* Buff;
    WORD Size;
    } IO_TRASP;

    //********************* Open
    typedef struct IOpen
    {
    CHAR Side;
    CHAR Password[LEN_PASSWORD+1];
    WORD* Opt;
    } INPUT_OP_OPEN;

    typedef struct OOpen
    {
    CHAR Side;
    CHAR FwVersion[MAX_CHARDENOM+1];
    WORD Rc;
    } OUT_OP_OPEN;
    //********************* Open

    //********************* Close
    typedef struct _IClose
    {
    CHAR Side;
    } INPUT_OP_CLOSE;

    typedef struct _OClose
    {
    CHAR Side;
    WORD Rc;
    } OUT_OP_CLOSE;
    //********************* Close

    //******************************** GetCashData
    typedef struct _InfoCassettes
    {
    CHAR Denom[MAX_CHARDENOM+1];
    WORD NotesNum;
    WORD NumFree;
    CHAR Cassette;
    CHAR Enable;
    } INFOCASSETTES;

    typedef struct _IGetCashData
    {
    CHAR Side;
    } INPUT_OP_GETCASH;

    typedef struct _OGetCashData
    {
    CHAR Side;
    WORD NumItem;
    INFOCASSETTES Info[MAX_CASSETTES*MAX_CHANNEL];
    WORD Rc;
    } OUT_OP_GETCASH;
    //******************************** GetCashData

    //******************************** Deposit
    typedef struct _InfoNotes
    {
    CHAR Denom[MAX_CHARDENOM+1];
    WORD Num;
    } INFONOTES;

    typedef struct _IDeposit
    {
    CHAR Side;
    WORD Mode;
    CHAR Denom[MAX_CHARDENOM+1];
    } INPUT_OP_DEPOSIT;

    typedef struct _ODeposit
    {
    CHAR Side;
    WORD aaa;
    WORD rrr;
    WORD uuu;
    WORD NumItem;
    INFONOTES DepNote[MAX_CASSETTES*MAX_CHANNEL];
    WORD Rc;
    } OUT_OP_DEPOSIT;
    //******************************** Deposit

    //******************************** Withdrawal

    typedef struct _IWithdrawal
    {
    CHAR Side;
    WORD NumItem;
    INFONOTES Info[MAX_CASSETTES];
    } INPUT_OP_WITHDRAW;

    typedef struct _OWithdrawal
    {
    CHAR Side;
    WORD NumItem;
    INFONOTES Info[MAX_CASSETTES];
    WORD Rc;
    } OUT_OP_WITHDRAW;
    //******************************** Withdrawal

    //******************************** Extended-Status
    typedef struct _InfoErr
    {
    CHAR err[4];
    } INFOERR;

    typedef struct _OutExStatus
    {
    WORD NumItem;
    INFOERR Info[MAX_MODULE];
    WORD Rc;
    } OUT_OP_EXSTATUS;
    //******************************** Extended-Status

    //******************************** GetConfig
    typedef struct _CassDenom
    {
    CHAR Denom[MAX_CHARDENOM+1];
    } CASSDENOM;

    typedef struct _CassEnable
    {
    CHAR Enable;
    } CASSENABLE;

    typedef struct _IGetConfig
    {
    CHAR Side;
    WORD* Bank;
    } INPUT_OP_GETCONFIG;

    typedef struct _Config
    {
    CHAR Denom[MAX_CHARDENOM+1];
    CHAR Version[MAX_CHARDENOM+1];
    WORD Height;
    CHAR Enable;
    CASSENABLE CassEnable[MAX_CASSETTES];
    } CONFIGINFO;

    typedef struct _OGetConfig
    {
    CHAR Side;
    WORD Bank;
    CASSDENOM CassDenom[MAX_CASSETTES];
    CONFIGINFO ConfigInfo[MAX_CHANNEL];
    WORD NumItem;
    WORD Msg;
    WORD Rc;
    } OUT_OP_GETCONFIG;
    //******************************** GetConfig

    //******************************** Test

    typedef struct _OTn0_8
    {
    BOOL SafeDoor;
    BOOL TryCassette;
    BOOL Cover;
    BOOL Feeder;
    BOOL InputSlot;
    BOOL RejectSlot;
    BOOL LeftSlot;
    BOOL RightSlot;
    BOOL LeftExtButton;
    BOOL RightExtButton;
    WORD Rc;
    } OUT_OP_Tn0_8;

    typedef struct _ITn0_35
    {
    CHAR Nation[MAX_CHARDENOM+1];
    CHAR* Side;
    } INPUT_OP_Tn0_35;

    typedef struct _OTn0_35
    {
    WORD NumItem;
    INFONOTES Info[MAX_CASSETTES];
    WORD Rc;
    } OUT_OP_Tn0_35;

    typedef struct _ITn2_2
    {
    CHAR Side;
    CHAR Password[LEN_PASSWORD+1];
    } INPUT_OP_Tn2_2;

    typedef struct _Status
    {
    CHAR Cassette;
    CHAR SideEnab;
    WORD SwitchStatus;
    CHAR Err[4];
    CHAR Denom[MAX_CHARDENOM+1];
    WORD NumNotes;
    WORD CapacityFree;
    } SAFE_STATUS;

    typedef struct _OTn2_2
    {
    CHAR Side;
    WORD NumItem;
    SAFE_STATUS Info[MAX_CASSETTES];
    WORD Rc;
    } OUT_OP_Tn2_2;

    typedef struct _ITn6_60
    {
    WORD nn;
    LPVOID Ext;
    } INPUT_OP_Tn6_60;

    typedef struct _OTn6_60
    {
    WORD Port;
    WORD Rc;
    } OUT_OP_Tn6_60;

    typedef struct Tn3_0
    {
    WORD IdChannel;
    WORD IdChannelInUse;
    WORD Rc;
    } OUT_OP_Tn3_0;

    typedef struct _Currencies
    {
    CHAR Cur_name[3];
    WORD Numslot;
    CHAR Ena;
    } CURRENCIES;


    typedef struct Tn3_1
    {
    WORD NumCurr;
    CURRENCIES CurrInUse[MAX_FLASH_REF];
    WORD Rc;
    } OUT_OP_Tn3_1;

    typedef struct Tn3_3
    {
    WORD Act_slt;
    WORD Rc;
    } OUT_OP_Tn3_3;

    typedef struct _Slot
    {
    char Ref_name[3];
    CHAR Ena;
    } SLOT;

    typedef struct Tn3_4
    {
    WORD NumSlot;
    SLOT SlotInUse[MAX_SLOT_ACTIVE];
    WORD Rc;
    } OUT_OP_Tn3_4;

    typedef struct _References
    {
    char Ref_name[3];
    char Ref_ver [5];
    WORD BankId;
    } REFERENCES;


    typedef struct Tn3_5
    {
    WORD NumRef;
    REFERENCES RefInFlash[MAX_FLASH_REF];
    WORD Rc;
    } OUT_OP_Tn3_5;

    typedef struct Tn3_9
    {
    WORD NumSlot;
    WORD DspFlash[MAX_SLOT_ACTIVE];
    WORD Rc;
    } OUT_OP_Tn3_9;

    typedef struct Tn0_1
    {
    CHAR ProtInterface[5];
    WORD Rc;
    } OUT_OP_Tn0_1;

    typedef struct Tn0_4
    {
    WORD FeedTick;
    WORD FeedHigh;
    WORD FeedVertical;
    WORD Reserved;
    WORD ReadVisible;
    WORD ReadIrw;
    WORD ReadLen;
    WORD ReadIrf;
    WORD ReadMag;
    WORD ReadAux;
    WORD Rc;
    } OUT_OP_Tn0_4;

    typedef struct Tn0_9
    {
    CHAR Code[7];
    WORD Rc;
    } OUT_OP_Tn0_9;

    typedef struct Tn0_11
    {
    WORD NumItem;
    INFONOTES Notes[MAX_SLOT_ACTIVE * MAX_DENOMINATION];
    WORD Rc;
    } OUT_OP_Tn0_11;

    typedef struct Tn0_15
    {
    CHAR BitNotation[5];
    WORD Rc;
    } OUT_OP_Tn0_15, OUT_OP_Tn0_28;

    typedef struct Tn0_17
    {
    WORD Rc;
    } OUT_OP_Tn0_17,OUT_OP_Tn0_18,OUT_OP_Tn0_19,OUT_OP_T n0_27;

    typedef struct _ITn0_19
    {
    WORD Flag;
    } INPUT_OP_Tn0_19;


    typedef struct T_Class
    {
    WORD amount;
    WORD delay;
    }CLASS;

    typedef struct Tn0_21
    {
    WORD fd;
    WORD NumItem;
    CLASS DelayClass[MAX_DELAYCLASS];
    WORD Rc;
    } OUT_OP_Tn0_21;


    typedef struct Tn0_22
    {
    WORD day;
    WORD hour1;
    WORD min1;
    WORD hour2;
    WORD min2;
    WORD lunch_hour1;
    WORD lunch_min1;
    WORD lunch_hour2;
    WORD lunch_min2;
    WORD Rc;
    } OUT_OP_Tn0_22;

    typedef struct _ITn0_25
    {
    WORD day;
    WORD month;
    WORD year;
    } INPUT_OP_Tn0_25;

    typedef struct Tn0_25
    {
    WORD day;
    WORD month;
    WORD year;
    WORD hour1;
    WORD min1;
    WORD hour2;
    WORD min2;
    WORD lunch_hour1;
    WORD lunch_min1;
    WORD lunch_hour2;
    WORD lunch_min2;
    WORD Rc;
    } OUT_OP_Tn0_25;

    typedef struct _ITn0_27
    {
    CHAR Side;
    WORD cass_num;
    } INPUT_OP_Tn0_27;

    typedef struct TnX_13
    {
    CHAR Name[5];
    CHAR Ver[5];
    CHAR Rel[5];
    CHAR SerialNumber[13];
    WORD Rc;
    } OUT_OP_TnX_13;

    typedef struct Tn0_31
    {
    DWORD WithdrLimit;
    WORD Rc;
    } OUT_OP_Tn0_31;
    //******************************** Test
    //******************************** Fill
    typedef struct _IFn4
    {
    CHAR cc[2];
    CHAR ss[2];
    CHAR mm[2];
    CHAR hh[2];
    CHAR ww[2];
    CHAR DD[2];
    CHAR MM[2];
    CHAR YY[2];
    } INPUT_OP_Fn4;

    //******************************** Fill


    //******************************** ModFill
    typedef struct _IZn0_2
    {
    WORD fd;
    WORD NumItem;
    CLASS DelayClass[MAX_DELAYCLASS];
    } INPUT_OP_Zn0_2;

    //******************************** ModFill

    //******************************** Booking
    typedef struct _IZn0_11
    {
    CHAR Id_User[MAX_USERID+1];
    WORD Id_Op;
    WORD NumItem;
    INFONOTES Info[MAX_CASSETTES];
    } INPUT_OP_Zn0_11;

    typedef struct _OZn0_11
    {
    CHAR Id_User[MAX_USERID+1];
    WORD Index;
    CHAR ss[2];
    CHAR mm[2];
    CHAR hh[2];
    CHAR DD[2];
    CHAR MM[2];
    CHAR YY[2];
    WORD Rc;
    } OUT_OP_Zn0_11;

    typedef struct _IZn0_12
    {
    CHAR Id_User[MAX_USERID+1];
    WORD Index;
    } INPUT_OP_Zn0_12,INPUT_OP_Zn0_20;

    typedef struct _OZn0_14
    {
    WORD NumItem;
    INFONOTES Info[MAX_CASSETTES];
    WORD Rc;
    } OUT_OP_Zn0_14,OUT_OP_Zn0_20;

    typedef struct _OZn0_18
    {
    WORD Index;
    CHAR Id_User[MAX_USERID+1];
    WORD Id_Op;
    WORD NumItem;
    INFONOTES Info[MAX_CASSETTES];
    CHAR ss[2];
    CHAR mm[2];
    CHAR hh[2];
    CHAR DD[2];
    CHAR MM[2];
    CHAR YY[2];
    WORD Status;
    CHAR Side;
    WORD Rc;
    } OUT_OP_Zn0_18;

    typedef struct _IZn0_19
    {
    WORD Index;
    WORD Status;
    } INPUT_OP_Zn0_19;

    typedef struct _OZn0_19
    {
    WORD PrevStatus;
    WORD Rc;
    } OUT_OP_Zn0_19;

    typedef struct _IUndo
    {
    CHAR Side;
    WORD Mode;
    } INPUT_OP_UNDO;

    typedef struct _OUndo
    {
    CHAR Side;
    WORD NumItem;
    INFONOTES Info[MAX_CASSETTES*MAX_CHANNEL];
    WORD Rc;
    } OUT_OP_UNDO;


    typedef struct _IInitMode
    {
    WORD Inote;
    WORD* Bundle;
    }INIT_MODE;

    typedef struct _IInit
    {
    CHAR Side;
    CHAR Denom[MAX_CHARDENOM+1];
    CHAR Password[LEN_PASSWORD+1];
    INIT_MODE* Mode;
    } INPUT_OP_INIT;

    typedef struct _OInit
    {
    CHAR Side;
    CHAR Denom[MAX_CHARDENOM+1];
    WORD ms;
    WORD NumPhysical;
    WORD NumLogical;
    WORD Rc;
    } OUT_OP_INIT;

    #ifdef __cplusplus
    extern "C" {
    #endif

    WORD APIENTRY CMCommand_Connect (WORD*,CONNECTIONPARAM*);
    WORD APIENTRY CMCommand_Disconnect (WORD);
    WORD APIENTRY CMCommand_Execute (WORD,CHAR, LPVOID, LPVOID, DWORD);
    WORD APIENTRY CMCommand_AsyncExecute (WORD,HWND, CHAR, LPVOID,LPVOID, DWORD);
    WORD APIENTRY CMCommand_AsyncGetResult (WORD,LPVOID);
    WORD APIENTRY CMCommand_ChangeConnect (WORD ,CONNECTIONPARAM* );

    #ifdef __cplusplus
    }
    #endif

    #endif /* CMLINKNT */

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Hai postato il (lungo) .h ... ma la DOMANDA SPECIFICA qual e'?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Ciao Oregon,
    il mio cruccio è come gestire LPVOID in Vb6, in una risposta precedente MItaly mi diceva che vb non gestisce i puntatore e occorreva sapere come era fatta la dll per potermi dire qualcosa e ho provato a postare il .h
    Se occorrono maggiori informazioni posso vedere di reperirle, fatemi sapere, e grazie comunque per l'aiuto che mi state dando.

    ciao

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Per LPVOID puoi utilizzare un Long

    Devi pero' esaminare caso per caso.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Grazie oregon, proverò....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.