Имя: Пароль:
1C
1C 7.7
v7: Как определить, что подключение через OLE
,
0 droff
 
10.12.11
12:20
Добрый день, коллеги.
Может быть кто-то поможет советом.
Мне необходимо определить в ПриНачалеРаботыСистемы(), что текущий сеанс открыт через OLE.
1 Дядя Васька
 
10.12.11
12:22
лучше сразу уточни зачем, а то может не так уж и необходимо...
2 droff
 
10.12.11
12:28
Хочу, если подключение через OLE некоторые компоненты не подгружать.
3 miki
 
10.12.11
12:30
возможно, это то, что ты ищешь:
Как определить источник обращения по OLE?
4 Дядя Васька
 
10.12.11
12:33
Хм... а разве по оле не работают транзакции? Никогда бы не подумал...
5 droff
 
10.12.11
12:33
(3) Большое спасибо. Попробую.
6 miki
 
10.12.11
12:34
(4)от места зависит, как я понял...
7 droff
 
10.12.11
12:49
(3) Не работает такой вариант. =(
8 miki
 
10.12.11
12:51
сорри, не проверял...
9 droff
 
10.12.11
12:52
(8) Других идей нет?
10 miki
 
10.12.11
12:54
(9)разные пользователи для разных режимов, как вариант.
11 droff
 
10.12.11
12:56
Спасибо. Думал над этим, но не гибко получается.
12 DJ Anthon
 
10.12.11
13:32
ШелСкрипт = СоздатьОбъект("WScript.Shell");
Локатор=СоздатьОбъект("wbemscripting.swbemlocator");
Сервис=Локатор.ConnectServer(Компьютер,"root\cimv2");
Выполнение=ШелСкрипт.Exec("rundll32.exe kernel32,Sleep");
Процесс=Сервис.Get("Win32_Process.Handle="+Выполнение.ProcessID);
ПроцессИД=Процесс.ParentProcessID;
Процесс.Terminate();
Процесс=Сервис.Get("Win32_Process.Handle="+ПроцессИД);
Если Найти(Процесс.CommandLine,"-Embedding")>0 Тогда
  //Это ОЛЕ


Иначе
 Сообщить("Нифига не ОЛЕ");
КонецЕсли;
13 DJ Anthon
 
10.12.11
13:33
если сработает, то скажешь спасибо абрахамсу ))
14 droff
 
10.12.11
13:33
Может быть кому-нибудь пригодится.
Нашел на старой мисте:
locator=СоздатьОбъект("wbemscripting.swbemlocator");
service=locator.connectserver();
WSHShell=createobject("WScript.Shell");
oExec=WSHShell.Exec("rundll32 kernel32,SleepEx");
ProcessId=service.Get("Win32_Process.Handle="+oExec.ProcessId).ParentProcessId;
oExec.Terminate();
CommandLine=service.Get("Win32_Process.Handle="+ProcessId).CommandLine;
ТипЗапуска="";
Если  Найти(CommandLine,"-Embedding")>0 Тогда
 ТипЗапуска="OLE";
Иначе
 ТипЗапуска="Не OLE";
КонецЕсли;
Сообщить(ТипЗапуска+" "+CommandLine);

Огромный привет и благодарность smaharbA.
15 droff
 
10.12.11
13:34
Блин, опередили. =)