I'm a fool, you provided the full source, we don't have to dig at guesses. I can work backwards from the text in the error dialog box you posted a screenshot of.
I started by searching for "Controllare la registrazione", that takes me to a subroutine called RTE1 in STMMain.bas. This subroutine is called when an error exception gets thrown. This line of code controls the text shown in the error dialog:
MsgBox Err.Source + ":" + vbCrLf + Err.Description + vbCrLf + "DllError: " + CStr(Err.LastDllError) + vbCrLf + "Numero: " + CStr(Err.Number) + vbCrLf + "Componente:" + BADDLL$ + vbCrLf + "Controllare la registrazione dei componenti di Magneto sui files OCX e DLL", vbExclamation, "Attenzione"
The "Componente:x" string is set by the var BADDLL. In your screenshot it's "Componente:LptClass2".
There is only one place in the entire codebase where BADDLL gets set to LptClass2. DLLLetttore.frm:
Public Function CE() As Boolean
BADDLL$ = "LptClass2"
LPT.Pin(3) = 1
CE = (LPT.Pin(15) = 0)
BADDLL$ = ""
End Function
Soo this means an exception is being thrown between the first BADDLL$ and second BADDLL$ lines.
I think the file LPT.cls is the source for the LPT class. There are only 3 exception throw lines in there:
If N < 1 Or N > 17 Then Err.Raise 5, "LPTClass", "Pin " + CStr(N) + " not connected!"
...
Err.Raise 5, "LPTClass", "The pin " + CStr(N) + " is for input only"
...
If Mips = 0 Then Err.Raise 5, "LPTClass", "Stream not initialized"
So to understand your problem you need to focus on the LPT.cls file. Read that, try and understand what it's doing.
I have a sneaking suspicion that it's for talking over a parallel (LPT) port. Maybe this software will work if you add an old-fashioned LPT printer to your system? You should be able to add one without it being connected, but I'm not sure.
Regardless, read that file, see if you can work out what it's trying to do.