Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Управление процессами с определенным PID [D7, Win2k, WinXP]


Страницы:   1 2

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]

Тогда можно.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо