![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Управление процессами с определенным PID [D7, Win2k, WinXP]
Morgan128 © (2009-10-23 10:13:00)Добрый день.
Есть несколько одинаковых процессов (например mstsc.exe) различных только по PID. Можно ли переключаться между этими процессами по нажатию горячих клавиш (например ctrl+1 - на первый процесс, ctrl+2 - на второй и т.д.) так, чтобы доступ к другим блокировался? То есть пока первый процесс активен другие находятся в свернутом виде и их можно вызвать только по горячей клавише.
Юрий Зотов (2009-10-26 03:56:00) [1]> Morgan128 (23.10.09 13:25) [18]
Создание процесса: CreateProcess из отдельного потока. Запоминаем полученные хэндлы нового процесса и его главного потока в массивах, затем вызываем WaitForSingleObject. По окончании ожидания закрываем оба хэндла и удаляем их из массивов.
Горячие клавиши - RegisterHotKey.
Получение списка окон потока: EnumThreadWindows. Управление их состоянием - ShowWindow.
Деактивация потока: SuspendThread. Активация - ResumeThread.
Leonid Troyanovsky (2009-10-23 14:25:00) [2]
> Morgan128 (23.10.09 13:25) [18]
> > на первый процесс, ctrl+2 -
WM_SETHOTKEY
--
Regards, LVT.
Сергей М. (2009-10-23 13:44:00) [3]Регистрация горяцей клавиши - RegisterHotKey()
Управление визуальным состоянием и активностью окна - ShowWindow()
clickmaker (2009-10-23 13:38:00) [4]> [18] Morgan128 (23.10.09 13:25)
процесс запускается - ищем окна с таким же классом, сворачиваем.
при попыике разворота окна, проверяем, нет ли активного (GetForegroundWindow) окна с таким же классом. Если есть, не даем развернуть.
> по нажатию горячих клавиш
RegisterHotKey()
Morgan128 (2009-10-23 13:25:00) [5]Если вы все равно поняли, что я имею в виду, зачем задавать вопросы?
1. Управлять:
> Есть несколько одинаковых процессов (например mstsc.exe)
> различных только по PID. Можно ли переключаться между этими
> процессами по нажатию горячих клавиш (например ctrl+1 -
> на первый процесс, ctrl+2 - на второй и т.д.) так, чтобы
> доступ к другим блокировался? То есть пока первый процесс
> активен другие находятся в свернутом виде и их можно вызвать
> только по горячей клавише.
> Сергей М. © (23.10.09 10:32) [3]
>
> Тогда можно.
2.
> Процесс не может быть "активен" или "свернут".
> Активным и.или свернутым может быть окно, порожденное потоком
> процесса.
Ну оговорился, ну окно. Все равно ведь понятно.
Сергей М. (2009-10-23 13:20:00) [6]
> как этим всем управлять
Что значит "управлять" ?
> пока первый процесс активен другие находятся в свернутом
> виде
Процесс не может быть "активен" или "свернут".
Активным и.или свернутым может быть окно, порожденное потоком процесса.
Morgan128 (2009-10-23 12:27:00) [7]Блин, умники. Нормально ответить нельзя? Что, стандартных функций нет?
brother (2009-10-23 11:08:00) [8]> как этим всем управлять
нууу, это программу надо писАть...
Morgan128 (2009-10-23 11:07:00) [9]Понятно. Тогда остался только первый вопрос: как этим всем управлять :)
brother (2009-10-23 11:05:00) [10]> Среди выполняемых процессов можно отфильтровать определенные
> процессы по названию
получаешь список всех процессов
вызываешь GetProcessID только для нужных
Morgan128 (2009-10-23 11:03:00) [11]to brother
А что? Сомневаетесь, что я на это способен? :)
Я просто никогда не работал с WinAPI. А ща потребовалось.
Morgan128 (2009-10-23 11:01:00) [12]function GetProcessID(Exename: string): DWORD;
brother (2009-10-23 10:49:00) [13]ты хоть один pid процесса получил в своей программе?
Morgan128 (2009-10-23 10:47:00) [14]Еще вопрос: Среди выполняемых процессов можно отфильтровать определенные процессы по названию для получения их PID? Дабы не считывать все процессы подряд.
Morgan128 (2009-10-23 10:42:00) [15]Ок, тогда с управлением подскажите. Как получить PID процесса я нашел.
brother (2009-10-23 10:38:00) [16]> назначив ему свой PID
низя.
Morgan128 (2009-10-23 10:37:00) [17]to Сергей М.
Как это сделать, хотя бы какими командами - подскажите, что бы знать что искать.
Morgan128 (2009-10-23 10:36:00) [18]Ага, а заодно можно ли запустить приложение назначив ему свой PID и как это сделать?
brother (2009-10-23 10:33:00) [19]а теперь будет логичный вопрос: как или дайте код)
Сергей М. (2009-10-23 10:32:00) [20]Тогда можно.