Уважаемые специалисты, подскажите начинающему
Пишу внешнюю компоненту на C# для 1с (7.7).
Стоит задача создать окно внутри главного окна 1с (чтобы потом работать с этим окном из c#)
1сина загружает мою внешнюю компоненту, но при попытке создания окна выдает сообщение "Создание формы в 1С: В результате вызова компонента COM возвращена ошибка в формате HRESULT E_FAIL"
вот что получилось :
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Drawing;
namespace Создание_Формы_В_1С.AddInLib
{
[Guid("AB634001-F13D-11d0-A459-004095E1DAEA"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IInitDone
{
void Init([MarshalAs(UnmanagedType.IDispatch)] object pConnection);
void Done();
void GetInfo([MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)] ref object[] info);
}
[Guid("EFE19EA0-09E4-11D2-A601-008048DA00DE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IExtWndsSupport
{
void GetAppMainFrame(IntPtr pHWnd);
void GetAppMDIFrame(IntPtr pHWnd);
void CreateAddInWindow( string bstrProgID, string bstrWindowName,
int lStyles, int lExStyles,
System.Drawing.Size rctSize, int lFlags,
IntPtr pHWnd,
[MarshalAs(UnmanagedType.IDispatch)] object pDisp);
}
}
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Создание_Формы_В_1С
{
[ComVisible(true), Guid("DAFF3CBF-7E3D-475b-856A-4E2047AB8B56"), ProgId("AddIn.SimpleVK9")]
public class HelloWorld : AddInLib.IInitDone
{
private static object m_1cApp;
// IInitDone
public void Init([MarshalAs(UnmanagedType.IDispatch)] object pConnection) {
m_1cApp = pConnection;
MessageBox.Show("Загружена компонента HelloWorld", "", MessageBoxButtons.OK);
}
public void Done() {
MessageBox.Show("Выгружена компонента HelloWorld", "", MessageBoxButtons.OK);
}
public void GetInfo([MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)] ref object[] info){
info[0] = 2000;
}
// Создание окна в 1с
public string Run() {
AddInLib.IExtWndsSupport n;
n = (AddInLib.IExtWndsSupport)m_1cApp;
string bstrProgID = "AddIn.SimpleVK9";
string bstrWindowName = "Тест";
int lStyles = 0;
int lExStyles = 0;
System.Drawing.Size rctSize = new System.Drawing.Size();
rctSize.Height = 10;
rctSize.Width = 10;
int lFlags = 0;
IntPtr pHWnd = new IntPtr();
object pDisp = null;
n.CreateAddInWindow(bstrProgID, bstrWindowName,
lStyles, lExStyles,
rctSize, lFlags,
pHWnd,
pDisp);
return "Hello 4 !!!!";
}
}
}
в самой 1с делаю так:
ПодключитьВнешнююКомпоненту("AddIn.SimpleVK9");
ВК = СоздатьОбъект("AddIn.SimpleVK9");
Сообщить(ВК.Run());
Что неправильно?
Значит то ли интерфейс объявляю неправильно, то ли при вызове что-то не так.