Страница 1 из 1

Переключение между процессами

Добавлено: 26 Январь 2006, 14:13
Andrew™
Родился интересный продуктик для своих нужд - универсальный пускач, он много чего делает, синхронизирует и т д
и далее запускает по RUN(starter.exe) который в свою очередь уже строрит Frame и т д приложения, так вот пускачь отработался и фокус не переходит во Frame загруженного приложения, а переходит в процесс от куда запускали пускач, приходится мышой кликать во frame.
От суда вопрос, может кто знает как программно переключиться в нужный мне процесс по имени?.

пускачь примерно такой:
PROGRAM
MAP.
CODE
RUN('unistarter.exe')

в unistarter.exe можно просто открыть оконную процедуру, НО фокус оно не получит. ;(

Добавлено: 26 Январь 2006, 14:41
Игорь Столяров
Как мимнимум - можно попробовать

1. Оставить пускач в памяти, тогда фокус останется на запущенном приложении: т.е. RUN('unistarter.exe',1)

2. Запустить 'unistarter.exe' через ShellExecute - у меня работает именно так и фокус остается на запущенном приложении ...

Добавлено: 26 Январь 2006, 14:49
Andrew™
Игорь Столяров писал(а):Как мимнимум - можно попробовать
1. Оставить пускач в памяти, тогда фокус останется на запущенном приложении: т.е. RUN('unistarter.exe',1)
пробовал, не помогает
Игорь Столяров писал(а): 2. Запустить 'unistarter.exe' через ShellExecute - у меня работает именно так и фокус остается на запущенном приложении ...
а какие параметры для запуска 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)
тоже не помогает

Добавлено: 26 Январь 2006, 15:14
Игорь Столяров
Не уверен, что мой вариант лучше, но он проще и работает ...
Попробуй !

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)

! --- Все ---

Добавлено: 26 Январь 2006, 17:41
Andrew™
Игорь Столяров писал(а):Не уверен, что мой вариант лучше, но он проще и работает ...
Попробуй !
твой вариант аналогичен моему и никуда не проще, у тебя окошко у меня его нет ;)

но тоже не прокатил, всё таки сама задача более сложная у меня, но выкрутился и нашёл решение