|
Вопросы про COM | ☑ | ||
---|---|---|---|---|
0
KuJIT
10.12.15
✎
17:42
|
Добрый вечер. Давно интересует вопрос, откуда люди берут информацию про COM? Откуда узнают, что, если, мне нужно запустить процесс А, то писать нужно Новый COMОбъект("Аблаб.алаы"). Откуда узнают, какие методы можно и нужно применять. Недавно появилась задача на печать пдф файла. Когда нагуглил работающий вариант, то нефигово удивился. Вот код:
oLocator = Новый COMОбъект("WbemScripting.SWbemLocator"); oService = oLocator.ConnectServer("", "", "", ""); //Задания от всех пользователей oService.Security_.impersonationlevel = 3; //получаем необходимые права oService.Security_.Privileges.AddAsString("SeLoadDriverPrivilege"); Для каждого Файл Из МассивФайлов Цикл Попытка WshShell.Run("""" + ПутьAdobeReader + """" + " /N /T " + """" + Файл.ПолноеИмя + """" + ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, ""), 0); Исключение Сообщить("Может быть, не найден Акробат"); ПутьAdobeReader = МастерПоискаАкробата(); Возврат; КонецПопытки; ЗаданиеДобавлено = Ложь; ТекущееВремя = ТекущаяДата(); Пока Не ЗаданиеДобавлено И ТекущаяДата() < ТекущееВремя + 30 Цикл // 30 секунд на добавление задания ОбработкаПрерыванияПользователя(); Для каждого ЗаданиеПечати Из oService.InstancesOf("Win32_PrintJob") Цикл ОбработкаПрерыванияПользователя(); ЗаданиеДобавлено = ЗаданиеПечати.Document = Файл.Имя; КонецЦикла; КонецЦикла; Если Не ЗаданиеДобавлено Тогда Сообщить("Не удалось отправить на печать файл '" + Файл.Имя + "'.", СтатусСообщения.Важное); КонецЕсли; КонецЦикла; // Ожидаем завершения печати Пока oService.InstancesOf("Win32_PrintJob").Count > 0 Цикл КонецЦикла; // Получаем имя процесса НомерСимвола = Найти(ПутьAdobeReader, "\"); Пока НомерСимвола > 0 Цикл ПутьAdobeReader = Сред(ПутьAdobeReader, НомерСимвола + 1); НомерСимвола = Найти(ПутьAdobeReader, "\"); КонецЦикла; // Убиваем процесс WshShell.Run("taskkill /f /im " + ПутьAdobeReader, 0); Начал читать текст и понял, что ничего не понял. Так же искал что-то типа "COM Adobe reader" и ничего не получил. В общем суть вопроса: где бы я мог найти информацию, чтобы написать такой код? |
|||
1
H A D G E H O G s
10.12.15
✎
17:55
|
Что тебе тут непонятно?
Акробата просто пускают с командной строки, а WBEM контролирует задания на печать. |
|||
2
H A D G E H O G s
10.12.15
✎
17:55
|
WBEM также спокойно контролировал бы задания на печать от Ворда, или Екселя.
|
|||
3
Гёдза
10.12.15
✎
18:13
|
Это секретная информация передается из уст в уста
|
|||
4
su_mai
10.12.15
✎
18:33
|
(3) Давай повествуй! Можешь считать, наши уста уже открыты :)
|
|||
5
Гёдза
10.12.15
✎
18:39
|
(4) так чувак из (0) уже все рассказал
|
|||
6
sash-ml
10.12.15
✎
18:46
|
Если ДЛЛ есть но методы неизвестны..
Один из вариантов -открываешь мсворд, нажимаешь альт+Ф11, тулз\реверенз и подгружаешь ДЛЛ, потом нажимаешь Ф2 выбираешь только что подгруженную библиотеку и читаешь все про ее методы и свойства. |
|||
7
mehfk
10.12.15
✎
18:55
|
(6) Предлагаю попытаться воспроизвести на kernel32.dll
|
|||
8
Гёдза
10.12.15
✎
18:56
|
(6) проще в гугле спросить
|
|||
9
Гёдза
10.12.15
✎
18:57
|
(6) а как ты узнаешь какие параметры за что отвечают у функции
|
|||
10
sash-ml
10.12.15
✎
19:00
|
(7) а kernel32 сделан по технологии COM?
(9) только интуитивно. и то не факт, а дальше (8) |
|||
11
mehfk
10.12.15
✎
19:04
|
(10) а) Ты первый сказал "DLL". б) com-сервер может и в ocx и в exe быть
|
|||
12
su_mai
10.12.15
✎
19:12
|
(6) Ну а если PE Explorer?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |