|
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
|
|
|
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
|
Блин, опередили. =)
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший