powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Передача OLE объекта из COM+
1 сообщений из 1, страница 1 из 1
Передача OLE объекта из COM+
    #32770826
vashkovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оговорюсь заранее , это мое первое пприложение на С# поэтому могу ошибиться как с постановкой задачи (может такое не возможно в принципе ?)
так и с ее решением :) :) :)
Итак суть проблемы такова .
Хочется написать серверный COM объект, в который передается строка инициализации для 1С. Сервер создает Ole объект 1С и возвращает его клиенту и далее клиент работает с 1С как с локально запущеной копией.

Пишу сервер :

автор
namespace ServerV7
{
[InterfaceQueuing]
public interface ISComponent
{
void DisplayMessage(string msg);
void Get1c(string v77base,string user,string password);

object _1c
{
get;
}

}
public class Service1 : System.EnterpriseServices.ServicedComponent,ISComponent
{
public object v77;
public object getv77object;
public Type lateBoundType;

public void DisplayMessage(string msg)
{
MessageBox.Show(msg, "Component Processing Message");
}

public void Get1c(string v77base,string user,string password)
{
v77=null;
getv77object = null;
lateBoundType = null;
try
{
DisplayMessage("Begin Processing Message");
object[] arg=new object[3];
//Type lateBoundType=Type.GetTypeFromProgID("v77S.Application");
lateBoundType=Type.GetTypeFromProgID("v77S.Application");
v77=Activator.CreateInstance(lateBoundType);
arg[0]=lateBoundType.InvokeMember("RMTrade", BindingFlags.GetProperty ,null,v77,null);
arg[1]=@"/D"+v77base+" /N"+user+" /P"+password;
arg[2]="NO_SPLASH_SHOW";
getv77object=lateBoundType.InvokeMember("Initialize", BindingFlags.InvokeMethod , null, v77,arg);

DisplayMessage("End Processing Message");
}
catch (Exception ex)
{
Marshal.ReleaseComObject(getv77object);
Marshal.ReleaseComObject(v77);
MessageBox.Show("An exception was caught from 1C: "+ex.Message , "Error");
}
}
public object _1c
{
get {return v77;}
}
public Service1()
{
}

}
}


хочу на клиенте, что-то
типа
автор
ISComponent iSC;
this.Cursor = Cursors.WaitCursor;
Ole1C = null;
try
{
iSC = (ISComponent)Marshal.BindToMoniker("queue:/new:ServerV7.Service1");
iSC.Get1c(V77base.Text,user.Text ,password.Text);
Ole1C = iSC._1c; - хотим , но не знаем как :))


Так вот без _1с все работает, запускается.
А как мне получить саму ссылку на 1с ?
При попытке зарегистрировать COM получаем ошибку

автор
An unknown COM+ 1.0 catalog error occurred:
1. Произошли ошибки при доступе к одному или нескольким объектам
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Передача OLE объекта из COM+
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]