-
Добрый день.
Есть несколько одинаковых процессов (например mstsc.exe) различных только по PID. Можно ли переключаться между этими процессами по нажатию горячих клавиш (например ctrl+1 - на первый процесс, ctrl+2 - на второй и т.д.) так, чтобы доступ к другим блокировался? То есть пока первый процесс активен другие находятся в свернутом виде и их можно вызвать только по горячей клавише.
-
Твои процессы-то ? Или чужие ?
-
мои, на локальном компе.
-
Тогда можно.
-
а теперь будет логичный вопрос: как или дайте код)
-
Ага, а заодно можно ли запустить приложение назначив ему свой PID и как это сделать?
-
to Сергей М.
Как это сделать, хотя бы какими командами - подскажите, что бы знать что искать.
-
> назначив ему свой PID
низя.
-
Ок, тогда с управлением подскажите. Как получить PID процесса я нашел.
-
Еще вопрос: Среди выполняемых процессов можно отфильтровать определенные процессы по названию для получения их PID? Дабы не считывать все процессы подряд.
-
ты хоть один pid процесса получил в своей программе?
-
function GetProcessID(Exename: string): DWORD;
-
to brother
А что? Сомневаетесь, что я на это способен? :)
Я просто никогда не работал с WinAPI. А ща потребовалось.
-
> Среди выполняемых процессов можно отфильтровать определенные
> процессы по названию
получаешь список всех процессов
вызываешь GetProcessID только для нужных
-
Понятно. Тогда остался только первый вопрос: как этим всем управлять :)
-
> как этим всем управлять
нууу, это программу надо писАть...
-
Блин, умники. Нормально ответить нельзя? Что, стандартных функций нет?
-
> как этим всем управлять
Что значит "управлять" ?
> пока первый процесс активен другие находятся в свернутом
> виде
Процесс не может быть "активен" или "свернут".
Активным и.или свернутым может быть окно, порожденное потоком процесса.
-
Если вы все равно поняли, что я имею в виду, зачем задавать вопросы?
1. Управлять:
> Есть несколько одинаковых процессов (например mstsc.exe)
> различных только по PID. Можно ли переключаться между этими
> процессами по нажатию горячих клавиш (например ctrl+1 -
> на первый процесс, ctrl+2 - на второй и т.д.) так, чтобы
> доступ к другим блокировался? То есть пока первый процесс
> активен другие находятся в свернутом виде и их можно вызвать
> только по горячей клавише.
> Сергей М. © (23.10.09 10:32) [3]
>
> Тогда можно.
2.
> Процесс не может быть "активен" или "свернут".
> Активным и.или свернутым может быть окно, порожденное потоком
> процесса.
Ну оговорился, ну окно. Все равно ведь понятно.
-
> [18] Morgan128 (23.10.09 13:25)
процесс запускается - ищем окна с таким же классом, сворачиваем.
при попыике разворота окна, проверяем, нет ли активного (GetForegroundWindow) окна с таким же классом. Если есть, не даем развернуть.
> по нажатию горячих клавиш
RegisterHotKey()
-
Регистрация горяцей клавиши - RegisterHotKey()
Управление визуальным состоянием и активностью окна - ShowWindow()
-
> Morgan128 (23.10.09 13:25) [18]
> > на первый процесс, ctrl+2 -
WM_SETHOTKEY
--
Regards, LVT.
-
> Morgan128 (23.10.09 13:25) [18]
Создание процесса: CreateProcess из отдельного потока. Запоминаем полученные хэндлы нового процесса и его главного потока в массивах, затем вызываем WaitForSingleObject. По окончании ожидания закрываем оба хэндла и удаляем их из массивов.
Горячие клавиши - RegisterHotKey.
Получение списка окон потока: EnumThreadWindows. Управление их состоянием - ShowWindow.
Деактивация потока: SuspendThread. Активация - ResumeThread.