HELP su conversione da C# a VB.NET (poche righe di codice ma ostiche!)

di il
2 risposte

HELP su conversione da C# a VB.NET (poche righe di codice ma ostiche!)

Ciao.
Più di un annetto fa ho scritto un programma che si compone di due programmi, definiamoli "principale" e "secondario": il secondario è scritto in C#, mentre il primario in altro linguaggio (ne C#, ne VisualBasic). Funziona tutto a meraviglia e nessun problema.

Ora vorrei "trasferirmi" completamente in VisualStudio ed ho iniziato la conversione. Nessun problema con il "primario".
Ma ho difficoltà con il "secondario", che in calce lascerò due link dove poter scaricare il .sln, sia del C# (quello che funziona a meraviglia) e del VBNET mio che devo/spero riuscire a farlo funzionare.

PARTENZA
Il primario è un programma VB.NET core 5 in WinForm (per cui non UWP e non WPF - per adesso non mi importa di queste tecnologie, tanto è un app libera e nessun guadagno. Comunque il tempo deciderà, ma non ora !)

Mi interessa una dritta per il programma secondario
Questo secondario si connette ad un videogioco, ne legge i parametri ogni secondo, e li trascrive in un file.
Il codice lo ho preso da un forum di FS2020 che era lì come risorsa e me lo sono modificato a mio piacimento.

Ho iniziato la conversione in VB.NET ma ovviamente, come vi immaginerete, non posso utilizzare il classico convertitore (code converter). Se avvierete il .sln capirete subito il problema.

(chi non è alle prime armi come me gli sarà sicuramente utile !)

(versione funzionante)
(da far funzionare)

Mi aiutereste per piacere a capire come devo procedere ?

Grazie.

2 Risposte

  • Re: HELP su conversione da C# a VB.NET (poche righe di codice ma ostiche!)

    Perché non ci spieghi il problema invece di farci scaricare e avviare il tutto?
  • Re: HELP su conversione da C# a VB.NET (poche righe di codice ma ostiche!)

    Ciao Oregon. Ho creduto che lasciando il progetto fosse molto più esplicativo.
    Comunque ci provo a spiegarlo:

    Il programma in C# usa XALM, io VB.NET in Console.
    Il programma deve Intercettare l'ID dell'evento Win32 di SimConnect (----> SimConnect è un DLL di Microsoft.FlightSimulator.SimConnect)

    Ecco parte del codice in C#
    // Intercept our custom Win32 event ID for SimConnect
                IntPtr hWnd = new WindowInteropHelper(this).EnsureHandle();
                HwndSource router = HwndSource.FromHwnd(hWnd);
                router.AddHook(this.onWindowProc);
    Ecco parte del codice in VB.NET che mi crea scompiglio:
    Dim hWnd As IntPtr = New WindowInteropHelper(Me).EnsureHandle() '--> WindowInteropHelper è per Framework ! E per Console ?
            Dim router As HwndSource = HwndSource.FromHwnd(hWnd)
            router.AddHook(AddressOf Me.onWindowProc)
    Il problema lo abbiamo in due punti:
    WindowInteropHelper
    WindowInteropHelper fa parte della WPF, ma io non uso interfacce bensì Console !
    Da documentazione MS: Assists interoperation between Windows Presentation Foundation (WPF) and Win32 code. Per cui il suo "sostituto" quale sarebbe per App Console ?

    HwndSource
    HwndSource fa parte di System.Windows.Interop. Ma anche qua è parte di WPF. Di conseguenza inutile importarlo con "Imports System.Runtime.InteropServices" !
    A titolo di completezza mi viene detto: HwndSource non è dichiarato. Potrebbe essere inaccessibile a causa del livello di protezione.
    Da documentazione MS: Provides supporting types for interoperation between Windows Presentation Foundation (WPF) and other technologies such as Windows APIs and provides base classes for other specific interoperation scenarios involving WPF.


    Per cui il primo problema è: i corrispettivi per Console App ?


    Spero Oregon di essermi spiegato bene. Ecco il perché ho pensato che farvi vedere il codice a voi sarebbe stato più chiaro

    Grazie.
Devi accedere o registrarti per scrivere nel forum
2 risposte