Открыть окно командой из внешнего приложения
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Открыть окно командой из внешнего приложения
Есть некая тулза для работы с АТС. В ней можно настроить поиск контакта в базе по номеру телефона и открытие карточки.
Если с первым все понятно (т.к. обычный MS SQL у нас) то как организовать второе? Т.е. есть настройка на запуск какого-то файла, а нам надо переключиться в активное приложение, передать туда параметр (лучше не один) и открыть в нем нужную форму. Как это реализовать со стороны приложения, в котором надо открыть форму? Как запустить новую копию приложения, понятно, но это не решение (долго очень)
Если с первым все понятно (т.к. обычный MS SQL у нас) то как организовать второе? Т.е. есть настройка на запуск какого-то файла, а нам надо переключиться в активное приложение, передать туда параметр (лучше не один) и открыть в нем нужную форму. Как это реализовать со стороны приложения, в котором надо открыть форму? Как запустить новую копию приложения, понятно, но это не решение (долго очень)
RaFaeL
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Открыть окно командой из внешнего приложения
Мутно написал конечно. Если прилада твоя то что мешает запускать одну копию через мутексы например. Если запускаешь другую копию с параметром, находишь Handle уже запущеной и туда шлешь message, ловишь его в программе и открываешь окно.
Если чужая программа, тоже самое по сути можно сделать. Слать месаги для управления.
Еще посмотреть в сторону AutoHotkey.
Если я все правильно понял
Если чужая программа, тоже самое по сути можно сделать. Слать месаги для управления.
Еще посмотреть в сторону AutoHotkey.
Если я все правильно понял
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Открыть окно командой из внешнего приложения
То что на картинке - чужое. Открывать надо в моей, кларионовской

Наверное ничего, а как это и что это?Если прилада твоя то что мешает запускать одну копию через мутексы например

Примерчики есть где посмотреть?Если запускаешь другую копию с параметром, находишь Handle уже запущеной и туда шлешь message, ловишь его в программе и открываешь окно.
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8073
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Открыть окно командой из внешнего приложения
Ну по моему все сводится к тому же самому:
http://forum.clarionlife.net/phpbb/view ... %8B#p13757
После события OpenWindow или GainFocus посылаем Accept на открытие нужной формы ...
Make Clarion Great Again ! 
Игорь Столяров
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Открыть окно командой из внешнего приложения
Не хватает примера, как передать в уже открытое приложение параметр и как там его принять...
RaFaeL
- Дед Пахом
- Старичок
- Сообщения: 3300
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
Что-то я не пойму, если приложение чужое, то с какой радости оно будет реагировать на твои сообщения?
С уважением, ДП
Дед Пахом
- Игорь Столяров
- Ветеран движения
- Сообщения: 8073
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Открыть окно командой из внешнего приложения
Тупо записать в INI файл и потом считать ?

Make Clarion Great Again ! 
Игорь Столяров
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Открыть окно командой из внешнего приложения
В чужом я жму на кнопку, которая выполняет команду (или урл, но урл не подходит), в моем по этой кнопке-команде должно что-то произойти, что именно произойдет - это я уже допишу, главное этот самый вызов осуществить
Последний раз редактировалось RaFaeL 10 Ноябрь 2015, 17:47, всего редактировалось 1 раз.
RaFaeL
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8073
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Игорь Столяров
- Дед Пахом
- Старичок
- Сообщения: 3300
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Открыть окно командой из внешнего приложения
А реестр проверять каждую секунду?
Мы для таких случаев пользуемся штукой под названием mailslot (есть в vuFileTools) -- создаём приёмник сообщений в одной программе, посылаем на этот "ящик" из другой. В C10 есть новый пример на ту же тему, вот только-только на конференции показывали.
С уважением, ДП
Дед Пахом
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Открыть окно командой из внешнего приложения
В данном случае хотелось бы сделать по уму
вот как-то так, но я ничего не понял без примеранаходишь Handle уже запущеной и туда шлешь message, ловишь его в программе
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8073
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Открыть окно командой из внешнего приложения
Зачем ?
- Программа 1 записывает в реестр ПАРАМЕТР и переключает фокус на Программу 2
- Программа 2 получив фокус, проверяет наличие ПАРАМЕТРА в реестре, обрабатывает его (открывает форму и т.д.) и удаляет.
- Если в реестре нет ПАРАМЕТРА Программа 2 никаких действий не делает (просто запуск)
- Все ...
Make Clarion Great Again ! 
Игорь Столяров
-
- Полимат
- Сообщения: 1817
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 27 раз
- Поблагодарили: 10 раз
Открыть окно командой из внешнего приложения
когда то был поиск по чужой эл. карте, давно было
Код: Выделить всё
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 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
-
- Полимат
- Сообщения: 1817
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 27 раз
- Поблагодарили: 10 раз
Открыть окно командой из внешнего приложения
Это типа имитация нажатий из Вашей программы в ...
Код: Выделить всё
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 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)