Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите. Handle.

1.6K
29 мая 2003 года
Kadet
101 / / 26.03.2003
Приложением1 запускается приложение2.
Приложение2 - любое.
Как приложением1 определить открыто ли приложение2
(Handle - заранее неизвестен).
310
30 мая 2003 года
fellow
853 / / 17.03.2003
Воспользуйтесь функцией ShellExecute. Возвращаемое значение - instance handle запущенного приложения или код ошибки в случае неудачи. Подробности - в оперативной подсказке.
1.6K
30 мая 2003 года
Kadet
101 / / 26.03.2003
Цитата:
Originally posted by fellow
Воспользуйтесь функцией ShellExecute. Возвращаемое значение - instance handle запущенного приложения или код ошибки в случае неудачи. Подробности - в оперативной подсказке.


ShellExecute не подходит, потому что оно возвращает не настоящий Handle, а почти левое число.

310
30 мая 2003 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by Kadet

ShellExecute не подходит, потому что оно возвращает не настоящий Handle, а почти левое число.



Не такое уж и левое. Цитата из MSDN:

Цитата:
Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. The following table lists the error values. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Microsoft® Windows® applications. It is not a true HINSTANCE, however. The only thing that can be done with the returned HINSTANCE is to cast it to an integer and compare it with the value 32 or one of the error codes below.


Посему, для определения факта запуска приложения достаточно проверить возвращаемое значение на отсутствие ошибки.
Можно воспользоваться ShellExecuteEx, она возвращает BOOL.

1.6K
30 мая 2003 года
Kadet
101 / / 26.03.2003
Цитата:
Originally posted by fellow


Не такое уж и левое. Цитата из MSDN:

Посему, для определения факта запуска приложения достаточно проверить возвращаемое значение на отсутствие ошибки.
Можно воспользоваться ShellExecuteEx, она возвращает BOOL.



Задача - определить завершило ли работу приложение2.
Если подскажешь операторы (а лучше кусочек кода) буду очень благодарен.

463
03 июня 2003 года
waterman
178 / / 17.01.2003
Цитата:
Originally posted by Kadet


Задача - определить завершило ли работу приложение2.
Если подскажешь операторы (а лучше кусочек кода) буду очень благодарен.



Можно поюзать FindWindow(), параметры у нее - заголовк окна и имя его класса. Если такое окно есть, то возвращается хэндл окна, иначе - 0. Только надо знать соответствующие заголовок и имя класса искомого окна. Причем поиск ведется только по главным окнам приложений, дочерние - пропускаются.

1.6K
03 июня 2003 года
Kadet
101 / / 26.03.2003
Спасибо всем.

Нашол.

FindExecutable
(Модуль ShellAPI)

HINSTANCE FindExecutable(
LPCTSTR lpFile,//строка с именем файла документа
LPCTSTR lpDirectory,//строка каталога по умолчанию
LPTSTR lpResult//строка с именем выполняемого файла
)

При успешном завершении возвращает значение > 32. Если меньше, то свидетельствует об ошибке.

Пример
char APchar[254];
FindExecutable("Doc.doc",NULL,APchar);
Label1->Caption=APchar;
Приведёт к тому, что в метку Label1 будет занесено имя приложения, связанного с файлом типа .doc.
Например:
C:\MSOFFICE\WINWORD\WINWORD.EXE

HWND GetNextWindow(hWnd,unsigned int wCmd);
Функция определяет дискриптор следующего или предыдущего окна. Параметр hWnd - дискриптор окна, от которого начинается отсчёт.
Параметр wCmd - определяет направление поиска. Если wCmd = GW_HWNDNEXT, то ищется следующее окно, находящееся ниже. Если wCmd = GW_HWNDPREV,
то ищется предыдущее окно, находящееся выше. Если результат выполнения функции = NULL, то в данном направлении больше окон нет.

Как мы узнаём, что процесс наш - по дискриптору (дискриптор процесса (кстати запустил через CreatProcess) и дискрипторы запущенных приложений.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог