Как узнать handle программы

В программе используется несколько справок .chm
Я хочу узнать Handle окна справки, открываемой пользователем из моего приложения для того чтобы при повторном запросе пользователя, не открывать ещё одно окно, а показать уже открытое (естественно в том случае, если оно уже было открыто и не было после этого закрыто).

Как я понял, надо:
1. С помощью ShellExecuteEx узнать дескриптор запущенного процесса.
2. Затем, при повторном запуске проверять, имеется ли процесс с запущенным ранее дескриптором.

Может есть у кого-нибудь опыт решения подобной задачи?

17.06.2010, 09:28
Регистрация: 15.06.2010
Адрес: дома
Сообщения: 34
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10

procedure TForm1.Button1Click(Sender: TObject); var RunFileName: PChar; i: word; H: hWnd; begin H:= FindWindow(ИМЯ ГЛАВНОЙ ФОРМЫ ПРИЛОЖЕНИЯ , = CAPTION ГЛАВНОЙ ФОРМЫ ПРИЛОЖЕНИЯ); if H=0 then begin RunFileName:=PChar(ПОЛНЫЙ ПУТЬ К ФАЙЛУ, МОЖНО ЧЕРЕЗ OpenDialog); i:=WinExec(RunFileName,SW_RESTORE); Case i of 0: ShowMessage(‘Не хватает памяти или ресурсов’); ERROR_BAD_FORMAT: ShowMessage(‘Файл приложения не совместим с данной версией ОС либо поврежден’); ERROR_FILE_NOT_FOUND, ERROR_PATH_NOT_FOUND: ShowMessage(‘Файл приложения не найден’); end; // case Application.Minimize;// Свернёмся, если запустили удачно end else ShowMessage(‘Приложение уже запущено!’); end;
в итоге в H мы имеем хандл, а в i — результат запуска

Источник: delphisources.ru

Wargaming Game Center ► Решение Ошибок Часть 2

Дескриптор версии 5.0

Загрузка

обработчика загрузки(729 КБ)

Введение

Вы когда-нибудь задавались вопросом, в какой программе открыт конкретный файл или каталог? Теперь вы можете узнать об этом. Handle — это служебная программа, которая отображает сведения об открытых дескрипторах для любого процесса в системе. Его можно использовать для просмотра программ, в которых открыт файл, или для просмотра типов объектов и имен всех дескрипторов программы.

Читайте также:
Запуск программы невозможен так как отсутствует skidrow dll

Вы также можете получить версию этой программы на основе графического интерфейса , Process Explorer, здесь, в Sysinternals.

Установка

Запустите Handle , введя «handle». Для запуска Handle необходимо иметь права администратора.

Использование

Дескриптор предназначен для поиска открытых ссылок на файлы, поэтому, если не указать параметры командной строки, будут перечислены значения всех дескрипторов в системе, ссылающихся на открытые файлы, и имена файлов. Он также принимает несколько параметров, которые изменяют это поведение.

Использования: handle [[-a [-l]] [-v|-vt] [-u] | [-c [-y]] | [-s]] [-p |] [name]

Параметр Описание
-a Дамп сведений обо всех типах дескрипторов, а не только о тех, которые ссылаются на файлы. К другим типам относятся порты, разделы реестра, примитивы синхронизации, потоки и процессы.
-l Просто показывать дескрипторы разделов с поддержкой файла подкачки.
-c Закрывает указанный дескриптор (интерпретируется как шестнадцатеричное число). Процесс необходимо указать по его PID.
ПРЕДУПРЕЖДЕНИЕ: Закрытие дескрипторов может привести к нестабильной работе приложения или системы.
-g Доступ на печать предоставлен.
-Y Не запрашивайте подтверждение закрытия дескриптора.
-s Число распечаток каждого типа открытых дескрипторов.
-u Отображение имени пользователя-хладатора при поиске дескрипторов.
-v Выходные данные CSV с разделителями-запятыми.
-Vt Выходные данные CSV с разделителем табуляции.
-p Вместо проверки всех дескрипторов в системе этот параметр сужает сканирование Handle до тех процессов, которые начинаются с процесса имени. Таким образом:
handle -p exp
создает дамп открытых файлов для всех процессов, которые начинаются с «exp», в том числе проводника.
name Этот параметр присутствует, чтобы вы могли направить Handle на поиск ссылок на объект с определенным именем.
Например, если вы хотите узнать, какой процесс (при наличии) открыт «c:windowssystem32», можно ввести:
дескриптор windowssystem
Имя не учитывает регистр, а указанный фрагмент может находиться в любом месте в интересующих вас путях.
Читайте также:
Как пользоваться программой delphi

Влюбись, если сможешь: 1 выпуск

Обработка выходных данных

Если режим поиска не включен, указав фрагмент имени в качестве параметра, дескриптор делит выходные данные на разделы для каждого процесса, для которых печатается информация дескриптора. Пунктирные линии используются в качестве разделителя, сразу под которым вы увидите имя процесса и его идентификатор процесса (PID). Под именем процесса перечислены значения дескрипторов (в шестнадцатеричном формате), тип объекта, с которым связан дескриптор, и имя объекта, если он имеет его.

В режиме поиска Handle выводит имена процессов и идентификаторы в левой части, а имена объектов, для которых было совпадение, — справа.

Дополнительные сведения

Дополнительные сведения о диспетчере объектов можно найти во внутренних службах Windows, 4-м выпуске или в разделе Пространство имен диспетчера объектов с WinObj.

Загрузка

обработчика загрузки(729 КБ)

Источник: learn.microsoft.com

Как узнать дескриптор

Дескриптор окна, или Handle Window, — специфический идентификатор, который выдается операционной системой окну во время его создания. Если вы вам по каким-либо причинам нужно знать системный дескриптор какого-либо окна (например, при написании приложения), это можно сделать с помощью программы HWND.

Как узнать дескриптор

Статьи по теме:

  • Как узнать дескриптор
  • Как определить устройство по его коду
  • Как узнать npc id

Вам понадобится

  • — программа HWND.

Инструкция

Найдите данное приложение через поисковые системы в интернете и загрузите на компьютер. Данная программа является бесплатным приложением, разработкой программиста Лесникова Павла. Перед распаковкой архива с программой проверьте загруженные данные антивирусным программным обеспечением. Распакуйте архив с программой. Запустите утилиту, кликнув дважды по файлу WHD.exe.

Окно программы имеет простой интерфейс: элементы управления и поле для вывода дескрипторов. Если у вас нет архиватора, загрузите из интернета программу, которая называется Win Rar.

Читайте также:
Расширение gsfx какая программа открывает

Установите переключатель в позицию «Из окна под курсором» и нажмите CapsLock на клавиатуре. После этой операции в поле вывода дескрипторов будут автоматически появляться идентификаторы всех окон, над которыми проходит курсор мыши. Чтобы отключить данную процедуру, снова нажмите на CapsLock. Введите класс окна, чей дескриптор нужно узнать.

Нажмите на кнопку «ОК», и в поле внизу появится искомый идентификатор. Чтобы закрыть окно программы, нажмите на крестик в верхнем правом углу. Для связи с разработчиком программы зайдите на сайт http://vokinsel.dviger.com. Вы сможете там получить консультацию в режиме реального времени, а также узнать о наличии новых версий программного обеспечения.

Данная утилита не требует установки и очень проста в использовании. Полученные таким способом идентификаторы окон могут быть в дальнейшем использованы в других приложениях для обращения к окнам сервисных служб Windows и окнам запущенных программ. Если вы не знаете, как пользоваться подобными программами, читайте справку. Как правило, разработчики описывают основные принципы работы с программами.

Источник: www.kakprosto.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru