Vai al contenuto
PLC Forum


Problema Con Activex In Rsviewstudio... - Unable to load ActiveX control for display...


Namelessx

Messaggi consigliati

Salve a tutti, :rolleyes:

sono nuovo di questo forum e vorrei esporre un problema che non riesco proprio a capire...

Lavoro su ambiente Rockwell automation per plc Allen Bradley e RSViewStudio come ambiente di sviluppo SCADA.

Ho creato per il mio SCADA un ActiveX in Visual C# ( una DLL in cui ho inserito uno UserControl con visibilità COM basato sul Framework 3.5 )

Registro la libreria e riesco ad importarla senza problemi nel mio SCADA da RSViewStudio...

Creo il file ControlloUtenteDll.cab che contiene ControlloUtente.dll e ControlloUtente.inf e lo posiziono sul server....

Provo ad utilizzare il tutto e funziona alla perfezione! ;)

salvo, chiudo, riapro... e mi appare l'errore:

----

Unable to load ActiveX control for display

cause: CAB file missing on the server http://localhost/RSViewActiveXControlSetup/mscoreedll.cab

----

mscoree.dll dovrebbe (da quello che ho letto sul web) essere una libreria .NET che è presente in /system32/ della macchina in uso... :blink:

non so proprio più cosa fare... :(

spero che qualcuno mi possa aiutare!

Grazie!

Enzo

Link al commento
Condividi su altri siti


Ciao,

tempo fa ho fatto lo stesso con RSView32. Il mio cliente aveva bisogno di diversi motori di ricetta personalizzati.

Ti posso dire che sul RSView32 anche l'ultima versione, non supporta ActiveX sviluppati in .NET, ho dovuto svilupparlo in VB6 in formato ocx.

Solo così ha funzionato a dovere.

Ora penso, spero, la cosa sia stata sistemata per RSView Studio, anche perchè sarebbe assurdo che non si possa inserire un activex sviluppato in .net.

Se non riesci a risolvere ti consiglio di chiamare il Sig. Carboni di rockwell che è il capotecnico per la famiglia View di Rockwell italia.

In bocca al lupo, e fammi sapere. Sono curioso.

Link al commento
Condividi su altri siti

si il file è presente nella cartella del framework...

Ho provato ad installare l'IIS (Internet Information Services), ho creato la cartella RSViewActiveXControlSetup e dentro ho piazzato il file ControlloUtenteDll.cab... adesso all'indirizzo http://localhost/RSViewActiveXControlSetup/mscoreedll.cab trovo il file cab.

RSView non so per quale motivo l'ha visto una sola volta...

ed ora ha ripreso a dire che non trova questo file cab...

Come dovrei impostare il FactoryTalk directory?

Grazie per l'aiuto!

Link al commento
Condividi su altri siti

  • 9 years later...
Emanuele Manca

Salve a Tutti,

Io ho risolto. Il problema sta io una sottochiave del registro relativo all'Activex che si vuole utilizzare. 

image.thumb.png.81594530b4dc546035ac51cc9a561765.png

In InprocServer32 del vostro ActiveX dovete modificare il valore "Predefinito" da mscoree.dll in C:\Windows\SysWow64\mscoree.dll. Per cercarlo sul registro dovete conoscere la GUID del vostro Activex, per esempio nel mio caso è "6E325D2A-0E6A-4471-A8D3-F923BF102B85".

 

Oppure se non volete modificarlo a mano, nel vostro codice C# dovete aggiungere alla classe questa funzione:

    <ComRegisterFunction()>
    Private Shared Sub ComRegister(ByVal t As Type)
        Dim keyName As String = "CLSID\\" & t.GUID.ToString("B")
        Dim key As RegistryKey = Registry.ClassesRoot.OpenSubKey(keyName, True)

        key.CreateSubKey("Control").Close()
        Dim subkey As RegistryKey = key.CreateSubKey("MiscStatus")
        subkey.SetValue("", "131201")
        subkey = key.CreateSubKey("TypeLib")
        Dim libid As Guid = Marshal.GetTypeLibGuidForAssembly(t.Assembly)
        subkey.SetValue("", libid.ToString("B"))
        subkey = key.CreateSubKey("Version")
        Dim ver As Version = t.Assembly.GetName().Version
        Dim version As String = String.Format("{0}.{1}", ver.Major, ver.Minor)
        If version = "0.0" Then version = "1.0"
        subkey.SetValue("", version)
        subkey = key.CreateSubKey("InprocServer32")
        subkey.SetValue("", Environment.SystemDirectory + "\" + "mscoree.dll")

    End Sub

Questa funzione viene richiamata quando andate a registrare l'ActiveX sul registro con regasm. Io L'activeX lo registro in questo modo: 

regasm /codebase /tlb nome_dll

 

Spero di essere stato di aiuto

 

Link al commento
Condividi su altri siti

  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...