Родился интересный продуктик для своих нужд - универсальный пускач, он много чего делает, синхронизирует и т д
и далее запускает по RUN(starter.exe) который в свою очередь уже строрит Frame и т д приложения, так вот пускачь отработался и фокус не переходит во Frame загруженного приложения, а переходит в процесс от куда запускали пускач, приходится мышой кликать во frame.
От суда вопрос, может кто знает как программно переключиться в нужный мне процесс по имени?.
пускачь примерно такой:
PROGRAM
MAP.
CODE
RUN('unistarter.exe')
в unistarter.exe можно просто открыть оконную процедуру, НО фокус оно не получит. ;(
Переключение между процессами
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7388
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
пробовал, не помогаетИгорь Столяров писал(а):Как мимнимум - можно попробовать
1. Оставить пускач в памяти, тогда фокус останется на запущенном приложении: т.е. RUN('unistarter.exe',1)
а какие параметры для запуска shellExecute, я попробовал следующее:Игорь Столяров писал(а): 2. Запустить 'unistarter.exe' через ShellExecute - у меня работает именно так и фокус остается на запущенном приложении ...
Код: Выделить всё
RunFile PROCEDURE(STRING Name,STRING param)
loc_W &WINDOW
loc_lpOperation CSTRING('open')
loc_lpFileName CSTRING(256)
loc_lpParameters CSTRING(100)
loc_lpDirectory CSTRING(2)
I LONG
len LONG
CODE
len = LEN(CLIP(Name))
loc_lpParameters = CLIP(param)
loc_W &= SYSTEM{PROP:Target}
loc_lpFileName = CLIP(Name)
ShellExecute(loc_W{PROP:Handle},loc_lpOperation, loc_lpFileName,|
loc_lpParameters, loc_lpDirectory, 1)
- Игорь Столяров
- Ветеран движения
- Сообщения: 7388
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
Не уверен, что мой вариант лучше, но он проще и работает ...
Попробуй !
RunTask Procedure()
Loc:Handle USHORT
Loc:RetHandle USHORT
Loc:Op CSTRING(20)
Loc:File CSTRING(256)
Loc:Path CSTRING(256)
Loc:Param CSTRING(256)
window WINDOW,AT(,,0,0),CENTER,GRAY,DOUBLE
END
Code
Open(Window)
Loc:Handle = Window{PROP:Handle}
Loc:Op = 'open'
Loc:File = 'MyProgarm.exe'
Loc:Path = LongPath()
Loc:Param = ''
Loc:RetHandle = ShellExecute(Loc:Handle,Loc:Op,Loc:File,Loc:Param,Loc:Path,1)
Close(Window)
! --- Все ---
Попробуй !
RunTask Procedure()
Loc:Handle USHORT
Loc:RetHandle USHORT
Loc:Op CSTRING(20)
Loc:File CSTRING(256)
Loc:Path CSTRING(256)
Loc:Param CSTRING(256)
window WINDOW,AT(,,0,0),CENTER,GRAY,DOUBLE
END
Code
Open(Window)
Loc:Handle = Window{PROP:Handle}
Loc:Op = 'open'
Loc:File = 'MyProgarm.exe'
Loc:Path = LongPath()
Loc:Param = ''
Loc:RetHandle = ShellExecute(Loc:Handle,Loc:Op,Loc:File,Loc:Param,Loc:Path,1)
Close(Window)
! --- Все ---
За теми кто отстал - не возвращаться. (С) Кодекс