2016-04-05 26 views
1

Temelde CoRegisterClassObject kullanarak özel bir arabirimi kaydeden ComfyJ kullanarak Java'da uygulanan bir COM sunucum var. Ben aşağıdaki Java kodunu kullanarak erişebilir: Ben varsayalımVBA'da kayıtsız bir COM bileşenine nasıl erişebilirim?

OleMessageLoop.invokeAndWait(new Runnable() { 
    public void run() { 
     IUnknown unknown = new IUnknownImpl(
      COMServerSample.COMServer.CLSID, 
      ClsCtx.LOCAL_SERVER); 
     Automation automation = new Automation(unknown); 
     automation.invoke("method2", new Object[] {new Integer(123) }); 
    } 
}); 
OleMessageLoop.stop(); 

sunucusuna erişmek için kaputun altında CoGetClassObject kullanır.

Bunu yaparak, kayıt defterini değiştirmeden ve sunucu yürütülebilir dosyasına herhangi bir meta veri eklemeden bir COM sunucusuna erişebilirim.

Bu sunucuya VBA'dan erişmenin bir yolu var mı? VBA'dan CoGetClassObject numaralı telefonu arayabilir miyim?

+0

ClsCtx.LOCAL_SERVER değeri nedir: Bu örnek "ADODB.Recordset" yeni bir örneğini oluşturur? –

+0

@FlorentB. ClsCtx.LOCAL_SERVER değeri 4'tür (bkz. https://msdn.microsoft.com/de-de/library/windows/desktop/ms693716%28v=vs.85%29.aspx) –

+0

Set obj gibi bir şey denediniz mi = CreateObject ("yeni: {00000535-0000-0010-8000-00AA006D2EA4}") –

cevap

1

Clsid ile bir COM bileşeninin bir örneğini oluşturmak için CreateObject öğesini kullanabilirsiniz.

Set obj = CreateObject("new:{00000535-0000-0010-8000-00AA006D2EA4}") 
İlgili konular