Открыть окно командой из внешнего приложения
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
Есть некая тулза для работы с АТС. В ней можно настроить поиск контакта в базе по номеру телефона и открытие карточки.
Если с первым все понятно (т.к. обычный MS SQL у нас) то как организовать второе? Т.е. есть настройка на запуск какого-то файла, а нам надо переключиться в активное приложение, передать туда параметр (лучше не один) и открыть в нем нужную форму. Как это реализовать со стороны приложения, в котором надо открыть форму? Как запустить новую копию приложения, понятно, но это не решение (долго очень)
Если с первым все понятно (т.к. обычный MS SQL у нас) то как организовать второе? Т.е. есть настройка на запуск какого-то файла, а нам надо переключиться в активное приложение, передать туда параметр (лучше не один) и открыть в нем нужную форму. Как это реализовать со стороны приложения, в котором надо открыть форму? Как запустить новую копию приложения, понятно, но это не решение (долго очень)
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Открыть окно командой из внешнего приложения
Мутно написал конечно. Если прилада твоя то что мешает запускать одну копию через мутексы например. Если запускаешь другую копию с параметром, находишь Handle уже запущеной и туда шлешь message, ловишь его в программе и открываешь окно.
Если чужая программа, тоже самое по сути можно сделать. Слать месаги для управления.
Еще посмотреть в сторону AutoHotkey.
Если я все правильно понял
Если чужая программа, тоже самое по сути можно сделать. Слать месаги для управления.
Еще посмотреть в сторону AutoHotkey.
Если я все правильно понял
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
То что на картинке - чужое. Открывать надо в моей, кларионовской
Наверное ничего, а как это и что это?Если прилада твоя то что мешает запускать одну копию через мутексы например
Примерчики есть где посмотреть?Если запускаешь другую копию с параметром, находишь Handle уже запущеной и туда шлешь message, ловишь его в программе и открываешь окно.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Открыть окно командой из внешнего приложения
Ну по моему все сводится к тому же самому:
http://forum.clarionlife.net/phpbb/view ... %8B#p13757
После события OpenWindow или GainFocus посылаем Accept на открытие нужной формы ...
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
Не хватает примера, как передать в уже открытое приложение параметр и как там его принять...
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
Что-то я не пойму, если приложение чужое, то с какой радости оно будет реагировать на твои сообщения?
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Открыть окно командой из внешнего приложения
Тупо записать в INI файл и потом считать ?
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
В чужом я жму на кнопку, которая выполняет команду (или урл, но урл не подходит), в моем по этой кнопке-команде должно что-то произойти, что именно произойдет - это я уже допишу, главное этот самый вызов осуществить
Последний раз редактировалось RaFaeL 10 Ноябрь 2015, 17:47, всего редактировалось 1 раз.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
А реестр проверять каждую секунду?
Мы для таких случаев пользуемся штукой под названием mailslot (есть в vuFileTools) -- создаём приёмник сообщений в одной программе, посылаем на этот "ящик" из другой. В C10 есть новый пример на ту же тему, вот только-только на конференции показывали.
С уважением, ДП
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
В данном случае хотелось бы сделать по уму
вот как-то так, но я ничего не понял без примеранаходишь Handle уже запущеной и туда шлешь message, ловишь его в программе
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Открыть окно командой из внешнего приложения
Зачем ?
- Программа 1 записывает в реестр ПАРАМЕТР и переключает фокус на Программу 2
- Программа 2 получив фокус, проверяет наличие ПАРАМЕТРА в реестре, обрабатывает его (открывает форму и т.д.) и удаляет.
- Если в реестре нет ПАРАМЕТРА Программа 2 никаких действий не делает (просто запуск)
- Все ...
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Открыть окно командой из внешнего приложения
когда то был поиск по чужой эл. карте, давно было
Код: Выделить всё
cWindowText = 'Электронная бизнес-карта.'
cClassName = 'TMainForm'
hwndMain = FindWindow(cClassName,cWindowText) ! Находим окно
IF hwndMain > 0 ! если окно есть
hwnd = GetWindow(hwndMain,GW_CHILD) ! влазим глубже на на нужное окно
hwnd = GetWindow(hwnd,GW_HWNDNEXT) ! и так далее по списку пока не станем на нужное окно :)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_CHILD)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_CHILD)
hwnd = GetWindow(hwnd,GW_CHILD)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_CHILD)
hwnd = GetWindow(hwnd,GW_CHILD)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_HWNDNEXT)
hwnd = GetWindow(hwnd,GW_CHILD)
SendMessage(hwnd,WM_LBUTTONDOWN,MK_LBUTTON,50 + BSHIFT(50, 16)) ! -------------
sleep(100) ! Фокусировка
SendMessage(hwnd,WM_LBUTTONUP,0,0) ! На списке
ELSE
MESSAGE('Окно ненайдено Запустите программу!')
END
Последний раз редактировалось gopstop2007 10 Ноябрь 2015, 18:27, всего редактировалось 1 раз.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Открыть окно командой из внешнего приложения
Это типа имитация нажатий из Вашей программы в ...
Код: Выделить всё
IF Loc::PressAltKey = 0
SendMessage(hwnd,WM_IME_KEYDOWN,Loc::ScanCode,0) ! послать по одной букве
ELSE
keybd_event(VK_LSHIFT,42,KEYEVENTF_EXTENDEDKEY,0) ! нажать SHIFT
SendMessage(hwnd,WM_IME_KEYDOWN,Loc::ScanCode,0) ! нажать букву
sleep(100)
keybd_event(VK_LSHIFT,42,KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP,0) ! отпустить SHIFT
!Message(1Dh)
END
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп