IE2017

"Захват окон" - ActiveX-компонента для 1С

Программирование - Внешние компоненты

Захватывает открытые окна и помещает их в 1С, так же получает скриншот выбранного окна.

Хотите играть в пасьянс в 1С, смотреть кино или просматривать секретные документы ;)
и не светить эти окна на рабочем столе, тогда эта компонента для Вас :)

*** Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, который можно скачать отсюда.

и зарегистрировать компоненту в Windows - запустить reg.bat
(для удаления информации о компоненте в Windows - запустить unreg.bat)
или использовать совместно с хранилищем внешних компонент: //infostart.ru/projects/2863/

В архиве приложены примеры для 7.7 и 8.1

*** Добавление на форму 1С:

v7: Использовать 1С++:

Перем ЗахватОкон;
Процедура ПослеОткрытия() ЗахватОкон = СоздатьОбъект("АктивИкс"); 
    ЗахватОкон.УстановитьАтрибут(Форма, "АктХ"); 
    //"АктХ" - идентификатор элемента диалога, на месте которого будет создан элемент ActiveX. 
//только для реквизитов диалога типа "Текст".
ЗахватОкон.СоздатьЭУ("Душелов.WinHost1C"); ЗахватОкон.УстановитьФокус(); КонецПроцедуры


v8: Меню "Форма" - "Вставить ActiveX..." - Выбрать элемент "Душелов.WinHost1C"

*** Методы:

//ВОССТАНОВИТЬ ВСЕ ЗАХВАЧЕННЫЕ ОКНА:
 
   ВосстановитьОкна();

//ПОЛУЧИТЬ СПИСОК ОТКРЫТЫХ ОКОН (Массив):

   ПолучитьСписокОткрытыхОкон(Фильтр); //фильтр - строка для фильтрации в заголовке 
   //возвращает в виде строки: Заголовок окнаИдентификатор процессаПуть к exe-файлу процесса 

//ПОЛУЧИТЬ СПИСОК ОТКРЫТЫХ ОКОН (Строка с разделителями): 

   ПолучитьСписокОткрытыхОконСтрокой(Фильтр); //фильтр - строка для фильтрации в заголовке 
   //возвращает в виде строки: Заголовок окнаИдентификатор процессаПуть к exe-файлу процесса 

//ЗАХВАТИТЬ ОТКРЫТОЕ ОКНО: 

   ЗахватитьОкно(ЗаголовокОкна);
   ЗахватитьОкноПоPID(PID);

//СКРИНШОТ ОКНА: Скриншот(ЗаголовокОкна, ПутьКФайлу);

   СкриншотПоPID(PID, ПутьКФайлу);

//МЕНЮ:
  
   ПоказатьМеню();
   СкрытьМеню();

//АКТИВАЦИЯ ОКНА:

   АктивироватьОкно(ЗаголовокОкна);
   АктивироватьОкноПоPID(PID);

//ЗАКРЫТЬ ОКНО:

   ЗакрытьОкно(ЗаголовокОкна);
   ЗакрытьОкноПоPID(PID);

//ВОССТАНОВИТЬ ОКНО:

   ВосстановитьОкно(ЗаголовокОкна);
   ВосстановитьОкноПоPID(PID);

Скачать файлы

Наименование Файл Версия Размер
Полная версия
.1234947992 95,33Kb
03.10.09
164
.1234947992 95,33Kb 164 Скачать бесплатно

См. также

Комментарии
1. Василий Демидов (Душелов) 3801 20.11.08 14:27 Сейчас в теме
Вообщем, режим "АнтиБосс" ;)
2. Андрей Скляров (coder1cv8) 3296 20.11.08 14:35 Сейчас в теме
Прикольно! Но бесполезно... )
А можешь сделать ВК что-бы она выбранное окно принтскринила?... )
3. Василий Демидов (Душелов) 3801 20.11.08 14:38 Сейчас в теме
(2) Ну почему же бесполезно? Я на позапрошлом месте работы использовал аналог для сокрытия оперы, а то когда подходили к компу - много чего левого можно было в заголовках окон увидеть ;)))

Ну запринтскринить -то можно, если оно открыто, а если закрыто другим приложением, тогда врядли....
4. Андрей Скляров (coder1cv8) 3296 20.11.08 14:44 Сейчас в теме
(3) В смысле принтскринить в файл, пофиг, с активизацией окна!...
Типа так:
ВК.ПринтскринВФайл(ПИДПроцессаОкна, ПутьКФайлу)
Но это я так, мечтаю... Кроме плюса предложить нечего )
А со всякими существующими длл-ками, типа V7ICQ.dll у меня лично, проблемы...
5. Василий Демидов (Душелов) 3801 20.11.08 17:16 Сейчас в теме
(4) Да в целом можно.... Так же по заголовку, активировать его, определить координаты и запринскринить выбранный диапазон.
6. Сергей Лунев (luns) 20.11.08 18:26 Сейчас в теме
(0) Ай молодец, сколько интересных идей...
7. Сhe Burashka (CheBurator) 20.11.08 18:34 Сейчас в теме
Душелов жжот!
+1
.. а закладочки в 7-ке тоже будут?
.. чат - дорабатывается?
8. Василий Демидов (Душелов) 3801 20.11.08 18:37 Сейчас в теме
(7) С чатом пока взял перерыв... То, на практике его использовал, а чисто теоретически дорабатывать - не интересно...
Скрин 7.7 сейчас сделаю и выложу.
9. Василий Демидов (Душелов) 3801 20.11.08 18:54 Сейчас в теме
10. H A D G E H O G s (Hadgehogs) 328 23.11.08 00:58 Сейчас в теме
(4) Чего, Нетленку уже отменили?
11. Василий Демидов (Душелов) 3801 23.11.08 01:13 Сейчас в теме
12. Василий Демидов (Душелов) 3801 23.11.08 01:54 Сейчас в теме
Добавил функцию получения скриншота. Пока в таком виде...
13. Андрей Скляров (coder1cv8) 3296 23.11.08 08:08 Сейчас в теме
(12) Спасибо. Но, лично мне, по PID-у нужно... )
(10) Будем смотреть! )
14. Василий Демидов (Душелов) 3801 23.11.08 13:13 Сейчас в теме
(13) Добавил:
- Получение списка открытых окон - возвращает в виде строки: <title>Заголовок окна</title><pid>Идентификатор процесса</pid><path>Путь к exe-файлу процесса</path>
- ЗахватитьОкноПоPID(PID);
- СкриншотПоPID(PID, ПутьКФайлу);
15. Андрей Скляров (coder1cv8) 3296 23.11.08 13:22 Сейчас в теме
(14) Класс! Спасибо огромное!!!
16. Василий Демидов (Душелов) 3801 23.11.08 13:27 Сейчас в теме
(15) Единственное, с чем я не стал заморачиваться - когда окон развернутое на весь экран, я просто делаю полный скриншот, не вычисляю размер окна.
17. Сергей (skom) 74 25.11.08 13:26 Сейчас в теме
)))) вот это прикол под конец раб дня.....
Антибосс))
клева...
тока скачал. сегодня присоединить уже не успею. завтра побалуюсь.
но идейка зачет
19. Сергей (skom) 74 25.11.08 13:26 Сейчас в теме
сорри за дубль...два раза даванул. модеры - убейте дубль и этот мессаг плиз
20. Роман Осадченко (cleaner_it) 211 28.11.08 10:43 Сейчас в теме
Когда располагаю на другом в закладке - фокус не устанавливается. Хотя окно "живое" - то есть отображаются все действия. А мышкой тыкнуть не моги. Еще помучаюсь, может у меня косяк
21. Роман Осадченко (cleaner_it) 211 28.11.08 10:44 Сейчас в теме
(20) на другом слое, конечно. в 7.7
22. Василий Демидов (Душелов) 3801 28.11.08 10:55 Сейчас в теме
(20-21) Ок, сейчас при себе исходников нет, дома посмотрю. Проблему воспроизвел.
23. Дмитрий (Froloid) 66 05.12.08 00:34 Сейчас в теме
Добрался наконец-то до нужной странички. Душелову однозначно +
24. Василий Демидов (Душелов) 3801 05.12.08 00:35 Сейчас в теме
25. Василий Демидов (Душелов) 3801 09.12.08 11:19 Сейчас в теме
(20) что 7-ка, что 8-ка таким образом перехватывают окна, так что победить эту проблему не могу. На других платформах этой проблемы нет.
26. HotShot Nemesis (HotShot) 2 15.12.08 09:57 Сейчас в теме
Очень удобная компонента. Каким методом можно автоматически перейти на вновь захваченное окно?
27. Василий Демидов (Душелов) 3801 15.12.08 09:58 Сейчас в теме
(26) Т.е. активировать нужную закладку?
28. HotShot Nemesis (HotShot) 2 15.12.08 10:04 Сейчас в теме
Необходимо автоматически активировать закладку с захваченным окном... и скрыть закладку меню, что бы не вводить пользователя в заблуждение.
29. Андрей (Solemn) 15.12.08 10:04 Сейчас в теме
(27) ага, и мне тож это нужно очень
30. Василий Демидов (Душелов) 3801 15.12.08 11:00 Сейчас в теме
Добавлено:

Код
//МЕНЮ:
  
   ПоказатьМеню();
   СкрытьМеню();

//АКТИВАЦИЯ ОКНА:

   АктивироватьОкно(ЗаголовокОкна);
   АктивироватьОкноПоPID(PID);
Показать полностью
31. HotShot Nemesis (HotShot) 2 15.12.08 11:05 Сейчас в теме
Спасибо... Буду пробовать.
32. Андрей (Solemn) 15.12.08 11:15 Сейчас в теме
33. HotShot Nemesis (HotShot) 2 16.12.08 11:10 Сейчас в теме
Добрый день.
Дополнительные методы сильно упростили задачу разработки.
Однако, встала проблема программного закрытия приложения... Возможно ли интегрировать метод закрытия захваченного приложения по PID?
34. Василий Демидов (Душелов) 3801 16.12.08 11:16 Сейчас в теме
Спасибо в стакан не нальешь ;)

(33) Сейчас напишу метод закрытия окна с восстановлением или без.
35. Василий Демидов (Душелов) 3801 16.12.08 11:48 Сейчас в теме
Написать-то написал... Вот только обновить разработку не могу... :(
36. Василий Демидов (Душелов) 3801 16.12.08 11:59 Сейчас в теме
Добавлено:

Код
//ЗАКРЫТЬ ОКНО:

   ЗакрытьОкно(ЗаголовокОкна);
   ЗакрытьОкноПоPID(PID);

//ВОССТАНОВИТЬ ОКНО:

   ВосстановитьОкно(ЗаголовокОкна);
   ВосстановитьОкноПоPID(PID);
Показать полностью


Скачать пока тут: http://dushelov.ru/1c/WinHost.zip
37. Dmitry (trdm) 23.01.09 17:46 Сейчас в теме
А можно на каком-нить менее ресурсоемком фраймверке сделать?
А то не очень хочется на серваке фраймверки городить?
Или хоть подсказку какую для имплементации?
38. Василий Демидов (Душелов) 3801 26.01.09 12:06 Сейчас в теме
(37) > можно на каком-нить менее ресурсоемком фраймверке сделать?
На каком?
39. Dmitry (trdm) 26.01.09 14:04 Сейчас в теме
(37)>> можно на каком-нить менее ресурсоемком фраймверке сделать?
(38)>На каком?
WTL/ATL например?
40. Dmitry (trdm) 26.01.09 14:04 Сейчас в теме
Хоть они и не фраймверки :)
41. Василий Демидов (Душелов) 3801 13.02.09 19:34 Сейчас в теме
Для получения демо-версии или покупки обращайтесь по контактам, указанным в профиле.
42. dushelov (Душелов) 18.06.09 17:53 Сейчас в теме
Снова в бесплатном доступе :)
43. Andrey (liooo) 04.08.09 01:34 Сейчас в теме
Как определить программно что приложение захвачено компонентой???
44. Аркадий Кучер (Abadonna) 3681 04.08.09 03:15 Сейчас в теме
(0)"Хотите играть в пасьянс в 1С, смотреть кино или просматривать секретные документы ;)"
Вась, а что, пасьянс внутри 1С пасьянистее становится? ;))))
Как проггер понимаю, как юзер - на ... оно надо?
45. dushelov (Душелов) 04.08.09 11:03 Сейчас в теме
(43) Храните список захваченых приложений.

(44) :) иногда надо скрывать лишние окна ;)
46. Аркадий Кучер (Abadonna) 3681 04.08.09 11:53 Сейчас в теме
Стал быть примерно так?:
procedure TMiracleClass.CaptureAimp;
var wnd:hwnd;
begin
wnd:=FindWindow('TAIMP2Main',nil);
if isWindow(wnd) then begin
SetParent(wnd,h1C);
end;
end;
Могу приватно подарить коды WM_COMMAND для управления Aimp прям из 1С ;)
Для особых извращенцев :)))))))))
47. Andrey (liooo) 04.08.09 12:24 Сейчас в теме
Abadonna
Я такой извращенец, а точнее руководство!!! Необходимо запустить эту прогу http://www.thebrain.com/ на форме списка справочника и показать графические связи элементов, а потом изменить данные в 1С, если изменили связи в этой приблуде, так что коды WM_COMMAND для управления Aimp -- это для меня ;)
dushelov
У меня нет списка захваченных, я запускаю приложение и пытаюсь его захватить, но захват отрабатывает до открытия этой проги, поэтому надо организовать цикл проверки захвата, а ни один метод по захвату не возвращает никакого значения
48. dushelov (Душелов) 04.08.09 12:28 Сейчас в теме
А что он должен возвращать?
49. Andrey (liooo) 04.08.09 12:57 Сейчас в теме
решил все циклом с получением списка запущенных и нахождением в списке нужного, спасибо
50. Аркадий Кучер (Abadonna) 3681 04.08.09 14:20 Сейчас в теме
(48)>А что он должен возвращать?
По уму - хэндл ;)))))
51. dushelov (Душелов) 04.08.09 14:29 Сейчас в теме
(50) Скорее ПИД, хэндл для 1С-ы не нужен.
52. Аркадий Кучер (Abadonna) 3681 04.08.09 14:34 Сейчас в теме
(51) Зато его наличие гарантирует, что захват произошел.
А на хрена 1С-е PID? Мочить при выходе?
53. dushelov (Душелов) 04.08.09 14:35 Сейчас в теме
(52) У меня методы есть, которые по пиду работают ;)
54. Аркадий Кучер (Abadonna) 3681 04.08.09 14:36 Сейчас в теме
(53) Хэндл ВСЕГДА PID даст, а вот по PIDу хэндл - сложнее ;)))
55. Andrey (liooo) 06.08.09 01:54 Сейчас в теме
Abadonna
(46) подари коды WM_COMMAND для управления Aimp прям из 1С
56. Ийон Тихий (cool.vlad4) 41 10.02.11 14:08 Сейчас в теме
(0) Вопрос возник...как это все работает не разбирался...хочется сделать следующую штуку - надоело работать с консолью кода без подсказок. Возникла мысль сделать захват конфигуратора, затем перехват кода, текста и передача в консоль. Поможет ли мне эта ActiveX?
57. Михаил Гомбоев (yoyoman) 16.03.12 10:00 Сейчас в теме
У меня зависает при использовании нескольких вкладок. Если на второй вкладке добавить этот элемент управления, сделать захват. И переключиться на первую вкладку - все вылетает :(
58. Дмитрий Павлик (DimaP) 56 14.08.12 16:05 Сейчас в теме
А можно-ли этой компонентой ловить окна внутри самой 1С?
Например, стандартные формочки (список значений, ввод значения и т.д.)
59. Александр Алюев (alyuev) 199 17.12.12 20:03 Сейчас в теме
Вопрос. Как сделать открытие приложения внутри самой 1С? Запомнить ПИДы запущенных приложений до запуска нужного и после запуска найти новое открытое?
60. Александр Алюев (alyuev) 199 01.04.13 18:37 Сейчас в теме
Я воспользовался твоей компонентой захвата окон - захватываю по имени файла. Работает отлично. Но не могу найти свойство закрытия вкладки програмно. Буду очень признателен за помощь. Спасибо.
61. Олег Гинзбург (smaharbA) 01.04.13 19:08 Сейчас в теме
мальчоник если чо эта фигня реализовывается и без вк
62. Александр Алюев (alyuev) 199 01.04.13 23:21 Сейчас в теме
(61) Сотрясение воздуха не приветствуется, а конструктив - да.
63. Ризван Шихамматов (dagroma) 111 29.07.16 21:27 Сейчас в теме
А кто-нибудь может поделиться последней версией компоненты?
Оставьте свое сообщение