Newsgroup: it.comp.lang.visual-basic
Titolo: Errori di Visual Basic in lingua?

Se un'applicazione scritta in VB 6.0 ha un errore di run-time, vien
fuori giustamente una message box con la descrizione del problema. E'
possibile localizzare questo errore in base alla lingua del sistema
operativo su cui sta girando l'applicazione? In alternativa, è
possibile visualizzare questi errori in inglese piuttosto che in
italiano?


Con la gestione delle eccezioni permessa da .net sono sicuro che
l'errore viene fuori nella lingua del SO, penso sia così anche in vb
però non sono sicuro (non l'ho mai usato)...
Ciao, Babbo

 wrote:

In VB6 il testo degli errori di runtime dipende dalla lingua delle DLL
di runtime (msvbvm60 ecc...), indipendentemente dalla lingua del S.O.
Non mi risulta tu possa forzarlo in alcun modo se non distribuendo le
DLL base della tua applicazione nella lingua desiderata.... se il tuo
ambiente di sviluppon è VB6 in italiano, è facile che nel tuo
pacchetto di installazione siano finite quelle versioni lì; dovresti
trovare le altre lingue sul sito Microsoft

 trovare le altre lingue sul sito Microsoft
Per creare il pacchetto di installazione MSI utilizzo il Visual Studio
Installer che, immagino, vada a prendere le librerie nel mio computer,
quindi quelle in italiano.
Mi sai dire come fare per includere nell'MSI le DLL in inglese
(ammettendo
di trovarle)?

 quindi quelle in italiano.
Quello che va Visual Studio Installer è utilizzare i cosiddetti Merge
Modules,
che sono file con estensione MSM che contengono all'interno (allo
stesso
modo degli MSI) le informazioni delle librerie condivise (DLL, OCX e
altro)
e le librerie stesse.
Durante la compilazione il VSI incorpora nell'MSI risultante gli MSM.
Sul sito della Microsoft è possibile scaricare gli MSM relativi alle
librerie
di run-time di Visual Basic 6.0 in inglese, cosa che ho fatto. Il VSI
incorpora
giustamente questi MSM. Però vedo che ci sono altre dipendenze nel
progetto VSI. Per esempio vb6it.dll che non è incluso in nessun MSM,
ma
viene preso direttamente dal sistema ed immagino sia una libreria
localizzata
in italiano.
Bisognerebbe sostituire queste dipendenze con le analoghe librerie in
inglese.
Ma dove le trovo?

Ho fatto qualche passo in avanti.
Le librerie di run-time di Visual Basic principalmente sono contenute
in msvbvm60.dll. All'interno sono
presenti i messaggi in inglese. Per visualizzare i messaggi in
italiano, viene usata la libreria satellite
vb6it.dll (così come la vb6fr.dll per i messaggi in francese, ecc.).
Sembra che nell'eseguibile ci sia scritto quale libreria satellite
caricare all'avvio in base alla lingua del
sistema. Per verificare questa informazione codificata nell'exe
generato da Visual Basic è possibile
utilizzare il programma vblocal.exe presente nel pacchetto IPDK.
In effetti vblocal mi dice che bisogna caricare la vb6it.dll quando la
lingua è 0x410 (Italiano).
Se cancello la vb6it.dll nella cartella di Windows, gli errori vengon
fuori in inglese.
Ho provato a modificare, tramite vblocal, queste informazioni
codificate nell'exe in questo modo:
  vblocal mio.exe * 0x409
che dovrebbe dire di non caricare librerie satelliti (quindi
utilizzare i messaggi di default in inglese).
Però non funziona. I messaggi rimangono in italiano e con Process
Explorer vedo che è stata caricata
la vb6it.dll.
Qualcuno mi può aiutare?