Option Explicit Declare Function Init_MatrixAPI Lib "matrix32.dll" () As Integer Declare Function Release_MatrixAPI Lib "matrix32.dll" () As Integer Declare Function GetVersionAPI Lib "matrix32.dll" () As Long Declare Function GetVersionDRV Lib "matrix32.dll" () As Long Declare Function GetVersionDRV_USB Lib "matrix32.dll" () As Long Declare Function PausePrinterActivity Lib "matrix32.dll" () As Integer Declare Function ResumePrinterActivity Lib "matrix32.dll" () As Integer Declare Function GetPortAdr Lib "matrix32.dll" (ByVal DNG_Port As Integer) As Integer Declare Function Dongle_Find Lib "matrix32.dll" () As Integer Declare Function Dongle_Count Lib "matrix32.dll" (ByVal DNG_Port As Integer) As Integer Declare Function Dongle_Version Lib "matrix32.dll" (ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Long Declare Function Dongle_Model Lib "matrix32.dll" (ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function Dongle_MemSize Lib "matrix32.dll" (ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function Dongle_ReadData Lib "matrix32.dll" (ByVal UserCode As Long, _ ByRef DataIn As Long, _ ByVal MaxVar As Integer, _ ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function Dongle_ReadDataEx Lib "matrix32.dll" (ByVal UserCode As Long, _ ByRef DataIn As Long, _ ByVal Fpos As Integer, _ ByVal MaxVar As Integer, _ ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function Dongle_WriteData Lib "matrix32.dll" (ByVal UserCode As Long, _ ByRef DataOut As Long, _ ByVal MaxVar As Integer, _ ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function Dongle_WriteDataEx Lib "matrix32.dll" (ByVal UserCode As Long, _ ByRef DataOut As Long, _ ByVal Fpos As Integer, _ ByVal MaxVar As Integer, _ ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function Dongle_WriteKey Lib "matrix32.dll" (ByVal UserCode As Long, _ ByRef KeyData As Long, _ ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function Dongle_EncryptData Lib "matrix32.dll" (ByVal UserCode As Long, _ ByRef DataBlock As Long, _ ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function Dongle_DecryptData Lib "matrix32.dll" (ByVal UserCode As Long, _ ByRef DataBlock As Long, _ ByVal DNG_Nummer As Integer, _ ByVal DNG_Port As Integer) As Integer Declare Function SetConfig_MatrixNet Lib "matrix32.dll" (ByVal nAccess As Integer, _ ByVal nFile As String) As Integer Declare Function LogIn_MatrixNet Lib "matrix32.dll" (ByVal UserCode As Long, _ ByVal AppSlot As Integer, _ ByVal DNG_Nr As Integer) As Integer Declare Function LogOut_MatrixNet Lib "matrix32.dll" (ByVal UserCode As Long, _ ByVal AppSlot As Integer, _ ByVal DNG_Nr As Integer) As Integer Private Sub Auto_Open() Dim ret As Integer Worksheets("Tabelle2").Visible = xlSheetVisible Worksheets("Tabelle1").Visible = xlSheetVeryHidden On Error GoTo End_Exit_Err 'Force exit if MATRIX32.DLL not found ret = Check_Matrix 'Check if Matrix dongle is present If ret = 1 Then GoTo Ok_Run Else GoTo End_Exit End If End_Exit_Err: MsgBox "MATRIX32.DLL not found !" End_Exit: Application.DisplayAlerts = False Application.Quit Ok_Run: Worksheets("Tabelle1").Visible = xlSheetVisible Worksheets("Tabelle2").Visible = xlSheetVeryHidden End Sub Function Check_Matrix() As Integer Dim DNG_Port As Integer Dim DNG_Nr As Integer Dim DNG_Found As Integer Dim DataIn(256) As Long Dim i As Integer Dim RetCode As Integer Const UserCode = 1234 '*** Demo UserCode, change to your own UserCode RetCode = Init_MatrixAPI() DNG_Found = 0 For i = 0 To 3 If i = 0 Then DNG_Port = 85 '*** 85 (ASCII 'U') = USB Else DNG_Port = i '*** 1-3 = LPT1-LPT3 End If DNG_Nr = Dongle_Count(DNG_Port) If DNG_Nr > 0 Then RetCode = Dongle_ReadData(UserCode, DataIn(0), 3, DNG_Nr, DNG_Port) If RetCode > 0 Then DNG_Found = 1 Exit For '*** Matrix device found End If End If Next i RetCode = Release_MatrixAPI() If DNG_Found <= 0 Then MsgBox "Matrix device not found !" End If Check_Matrix = DNG_Found End Function