Как активизировать приложение 1с? #405569


#0 by spenov
сделал иконку информационную в трее. хочется чтобы при DblClick в трее 1С становилось текущим активным окном системы. есть такой метод в 1с?
#1 by Ц_У
Как иконку в трей засунул? Метод не 1С SetActivWindow
#2 by spenov
сделал внешнюю компоненту. чтобы использовать виндовые процедуры надо хэндл как то получить
#3 by Ц_У
Хендл по заголовку окна или по процесу 1св8.ехе
#4 by spenov
а если процессов несколько? и заголовки могут быть одинаковыми. хочется надежности :)
#5 by Ц_У
тогда PID :)
#6 by H A D G E H O G s
Сам то понял, что сказал?
#7 by spenov
не понял наезда.
#8 by H A D G E H O G s
Уточнение, не наезд. Озвучь проблему, перед тобой стоящую.
#9 by vde69
если у тебя BK то ты ее можешь привязать к конкретному процессу, например по дискриптору окна, если у тебя вообще нет привязки - делай поп меню
#10 by H A D G E H O G s
Всё, мозг доехал до мыслей автора.
#11 by H A D G E H O G s
Юзай функцию GetAppMainFrame интерфейса IExtWndsSupport.
#12 by spenov
проблему я уже озвучил. необходимо активировать окно 1с. для этого можно использовать уже готовый метод 1с (если он есть - в этом и заключался вопрос). либо сделать метод в моей ВК. но при этом появляется проблема как узнать хэндл окна 1С. на сколько я помню, в винде нет возможности однозначно его определить. если использовать поиск окна по заголовку, то в общем виде это ненадежно.поскольку может быть открыто несколько экземпляров одной базы. в самой ВК нет возможности получить хэндл приложения, загрузившего библиотеку. по крайней мере мне не известено как его получить. можно конечно в заголовок 1с устанавливать однозначную строку, в ВК определять хэндл по этой строке, потом восстанавливать заголовок. но это как то не красиво
#13 by H A D G E H O G s
1. Приведи в порядок терминологию. Хэндл - такого нет. Есть дескриптор. 2. Подгрузил ВК в процесс 1С, методом получил дескриптор главного окна. Теперь ты можешь: а. Сделать его активным через SetForegroundWindow (хотя тут хитррости есть) б. Найти его PID через GetWindowThreadProcessId в. Получить дескриптор процесса по его PID через OpenProcess Дерзай.
#14 by spenov
всем спасибо! решил я эту проблему через IExtWndsSupport (не знал про эту штуку). процедура активации окна у меня была. выглядит они немного сложнее чем просто SetForegroundWindow. когда давно нашел в инете. кто автор уже не помню.выкладываю, может кому пригодится :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С