как узнать hwnd окна
Как узнать hWnd процесса?
12 ответов
Сначала надо определиться с понятиями.
Соответственно каждое окно имеет hWnd и связано с процессом его запустившим, который характеризуется pID и pHandle
😀 Да, протупил, с этим я еще путаюсь.
Выходит таки Handle.
Вобщем мне нужно принудительно прекратить процесс.
. как это лучше сделать?
Private Declare Function CloseHandle Lib «kernel32» Alias «CloseHandle» (ByVal hObject As Long) As Long
Private Declare Function CloseServiceHandle Lib «advapi32.dll» Alias «CloseServiceHandle» (ByVal hSCObject As Long) As Long
что эти функции принимают и какая подходит к моему случаю?
CloseHandle помойму всего лишь освобождает дескриптор.
Вообще для закрытия программ используют обычно другие функции, например пишут так:
Private Declare Function CloseHandle Lib «kernel32» (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib «kernel32» (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib «kernel32» (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Const PROCESS_ALL_ACCESS = 0
Dim exitCode as Long
Только как я недавно узнал, такой принудительный способ (а этим способом можно принудительно закрыть почти любую программу, естественно с потерей всех ее данных, потому как принудитено) оказывается не освобождает память из под используемых этой программой Dll и COM объектов, что не очень хорошо. хотя все пользуются, наверное надеются на win’ский диспетчер памяти, наверное он в состоянии разобраться с таким барахлом, по крайне мере в Xp. но все уже мои догадки
Более умные функции закрытия программы, обычно сначала работают через окно (hWnd), посылая ему команду о закрытии, тогда окно может закончить все свои дела и закрыться, а вот если оно например через 15 сек еще назакрылось (зависло там или очень сильно задумалось), то тогда уже принудительно через Terminate.
Код посылки сообщения окну программы о закрытии могу написать. а тебя есть окно у программы-то?
Получить HWND окна
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно «А». Это окно создаёт новое недочернее окно «Б». Необходимо.
Получить hwnd окна
Допустим я нахожу hwnd главного окна по названию его класса HWND.
Получить hwnd окна в многопользовательской системе
В win 2003. Как получить Hwnd окна другого пользователя. Для своего рабочего стола понятно. А вот.
Получить HWND активного дочернего окна
Дайте минимальный проверочный код который даст HWND активного дочернего окна. Если кто-то скажет.
HWND hwnd = ::FindWindow(_T(«тут название твоего окна»));
Добавлено через 22 минуты
ааааа наврал!!
HWND hwnd = ::FindWindow(NULL, _T(«название окна»));
Решение
Вот тут не понял.
У DllMain есть ряд ограничений, которые нужно знать и строго соблюдать, иначе
начнут всплывать такие баги, о которых мозг среднестатистического программиста
даже в своих фантазиях не сможет придумать. Подробнее здесь:
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как получить HWND окна/процесса/консоли
Как получить HWND окна/процесса/консоли? мне надо для Shellexecute. Реализация в Dll #include.
Не могу получить HWND ресурсов диалогового окна
Помогите разобраться, создаю диалоговое окно после чего хочу получить хэндлы созданых ресурсов в.
Как получить HWND окна на панели задач по координатам мыши?
Как получить хэндл свернутого на панель задач окна, на которое наведена мышка?) Добавлено через.
Как получить HWND, созданного функцией CreateProcess, окна консоли
Есть обычное оконное прижоление на Win Api. В какой-то момент вызываю CreateProcessW и подсовываю.
Как найти HWND нужного окна?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно «А». Это окно создаёт новое недочернее окно «Б». Необходимо.
Как проверить состояние окна hwnd
Возможно ли узнать состояние окна hwnd, когда свёрнуто, когда открыто?
Как получить HWND окна/процесса/консоли
Как получить HWND окна/процесса/консоли? мне надо для Shellexecute. Реализация в Dll #include.
Добавлено через 30 минут
блин не находит нечего кроме блокнота (
ExpressS, может лутше не по заголовку искать, а по классу.
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
ExpressS, может лутше не по заголовку искать, а по классу.
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
не разбираюсь в этих классах я, могешь что то подсказать?
Добавлено через 58 минут
почитал о классах понял как узнать что за класс,я пишу воттак
все всем кто помогал огромное спс проблема решена
Добавлено через 13 часов 50 минут
Появилась новая проблема, если у меня запущены 2 приложения с одинаковыми заголовками как мне их различать, и зная хендел в виде 00010010 как мне его подставить в функцию? пробовал вот так
все всем кто помогал огромное спс проблема решена
Добавлено через 13 часов 50 минут
Появилась новая проблема, если у меня запущены 2 приложения с одинаковыми заголовками как мне их различать, и зная хендел в виде 00010010 как мне его подставить в функцию? пробовал вот так
все всем кто помогал огромное спс проблема решена
Добавлено через 13 часов 50 минут
Появилась новая проблема, если у меня запущены 2 приложения с одинаковыми заголовками как мне их различать, и зная хендел в виде 00010010 как мне его подставить в функцию? пробовал вот так
После приводишь int к hwnd (HWND)»твоя переменная инт которой ты присвоил хендл»
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как получить HWND, созданного функцией CreateProcess, окна консоли
Есть обычное оконное прижоление на Win Api. В какой-то момент вызываю CreateProcessW и подсовываю.
Как получить HWND окна на панели задач по координатам мыши?
Как получить хэндл свернутого на панель задач окна, на которое наведена мышка?) Добавлено через.
Как найти HWND окна по имени, открытое последним? windows.h
Когда я использую: #include FindWindowA(0, («Starbound»));мне выводит один и тот же.
По нажатию кнопки найти HWND окна
Добрый день, прошу сапогами не пинать. У меня стоит следующая задача: Нужно по нажатию.
Как узнать hwnd окна
Давайте пытаемся найти окно и сбить, т.е. я хотел сказать, произведем с ним какие-то действия. Для этого сделаем себе учебную цель. Создадим новый exe-проект, изменим свойство формы Form1.Caption=»F-16 Fighter» и откомпилируем (то бишь создадим исполняемый файл exe). Запустим наш проект и пусть полученное окно болтается на Десктопе до поры. Теперь создадим новый exe-проект. Для наших экспериментов нам потребуются четыре кнопки Command, один CheckBox, один таймер Timer1 и пять текстбоксов, причем для Text1 желательно включить свойства Multiline=True и ScrollBars=2 (Вертикаль). Option Explicit Примечание : При работе с API использование Option Explicit уже не просто рекомендовано, а крайне необходимо и сугубо обязательно! Во всех модулях и формах. Далее, в процедуре загрузки формы очистим текстбоксы, в для Text2 присвоим значение нашего учебного окна «F-16 Fighter». Кроме того установим интервал таймера и выключим его (он пока не нужен). Public Declare Function FindWindow Lib «user32» Alias «FindWindowA» (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Как мы видим, в этой функции есть два аргумента, по которым можно найти окно: по имени класса ( lpClassName ) и по имени заголовка ( lpWindowName ). Как правило окно ищется по одному какому-нибудь аргументу. Поскольку мы не знаем имя класса искомого окна (да и вообще не знаем, что это такое), а знаем заголовок, то его и надо подставить в функцию вместо. Но и второе значение ( lpClassName ) нельзя пускать на самотек. Ему надо передать ноль (в API всегда надо чего-то передавать). Но аргумент этот имеет строковый тип, поэтому нужно использовать константу vbNullString. Заголовок окна мы передадим в Text2, и использование функции будет выглядеть очень просто: HandleWin = FindWindow(vbNullString, Text2) В переменную HandleWin мы получим искомый хендл искомого окна. Напишем теперь процедуру: Private Sub Command1_Click() Public Declare Function DestroyWindow& Lib «user32» (ByVal hwnd As Long) Обрати внимание, что первая функия объявлена с применением значка типа & вместо As Long в конце. Такое объявление ничем не отличается по смыслу и работе от двух других. Теперь пропишем каждую в свои процедуры соответствующих кнопок Command2, Command3 и Command4. Кроме того, мы еще и проанализируем результат действия каждой функции по возвращаемому значению (если ноль, то действие не удалось) и выведем соответствующее сообщения в Text1: Private Sub Command2_Click() Private Sub Command3_Click() Private Su b Command4_Click() Private Sub Timer1_Timer() В модуле объявим функцию для определения координат мыши: Public Declare Function GetCursorPos Lib «user32» (lpPoint As POINTAPI) As Long Type POINTAPI и затем объявляем какую-нибудь переменную с типом POINTAPI, например MouseCoordinat: Public MouseCoordinat As POINTAPI Вот теперь, возвращаемся к нашей процедуре таймера в форме и получаем, наконец, координаты мыши: PosCur = GetCursorPos(MouseCoordinat) Теперь нам надо по этим координатам получить хендл окна. Объявим в модуле функцию: Public Declare Function WindowFromPoint Lib «user32» (ByVal xPoint As Long, ByVal yPoint As Long) As Long HandleWin = WindowFromPoint(MouseCoordinat.X, MouseCoordinat.Y) Теперь у нас в переменной HandleWin есть хендл и еще по нему мы можем узнать заголовок экрана с помощью функции GetWindowText. Объявим ее в модуле: DlinaTexta = GetWindowText(HandleWin, WindowCaption, 255) и теперь используем функцию по-правильному DlinaTexta = GetWindowText(HandleWin, WindowCaption, 255) Раз у нас есть длина заголовка (а это то, что возвратила функция), мы можем отсечь ненужные нам пробелы и вывести даныые в текстбокс Text2 = Left(WindowCaption, DlinaTexta) На этом пока все. В это параграфе мы разобрали технику использования API. Теперь ты можещь, двигая мышью узнавать хендл любых окон и их заголовки (если есть). Причем на собственной форме ты увидишь содержимое текстов, названия кнопок и т.п. Исходник примера можно скачать вверху страницы. Как узнать hwnd окнаAutoIt Window Info Следующая информация может быть получена: AutoIt является простым инструментом, который может имитировать нажатия клавиш, движения мыши и команды окна для того, чтобы автоматизировать любые окна на основе задачи. В AutoIt есть BASIC-подобный синтаксис который может быть использован в качестве общего назначения скриптового языка. Домашняя страница: http://www.autoitscript.com zero Dump v0.1 Набор функций доступных в zero Dump позволяют изменить заголовок, позицию табуляции, возможно включить и отключить различные свойств объекта, имеется несколько вкладок с стилями, различные параметры для включения и отключения элементов, таких как строки заголовка, системного меню или кнопок свернуть и развернуть окно. Во вкладке с расширенными стилями доступны гибкие настройки окна, где можно задать порядок чтения справа налево или определить выравнивание текста справа, установить прозрачность, встроить полосу прокрутки и многое другое. Приложение с открытым исходным кодом, это означает, что любой человек может взять код и изменить его для того, чтобы улучшить или расширить его функциональность. Домашняя страница: http://yodap.cjb.net Скачать: zeroDump v0.1 ShoWin v2.0 Домашняя страница: http://www.foundstone.com Скачать: ShoWin v2.0 Syn Spy v3.1 *Примечание: Сканер паролей не работает на Windows 2000 и более поздних версиях операционной системы!* Домашняя страница: http://synvb.com Скачать: Syn Spy v3.1 Spy & Capture v2.70 Также включены: Домашняя страница: http://come.to/kobik Window Hack v3.0 Домашняя страница: http://geocities.com/asmfreesoft InqSoft Window Scanner v1.7 Версия 1.7: Домашняя страница: http://kickme.to/inqsoft WinID v3.1 Домашняя страница: http://www.dennisbabkin.com/winid/ Скачать: WinID v3.1 / II / Portable (pass: Unpack) WinDowzer v1.2 Версия 1.2: Версия 1.3: Домашняя страница: http://www.manhunter.ru/releases/150_windowzer_1_1.html (v1.2) (v1.3) Скачать: WinDowzer v1.1-PCL / WinDowzer v1.2-PCL / WinDowzer v1.3-PCL / II WinCheat v1.7 (build 4680) Особенности программы: Примечание: для запуска WinCheat, может потребоваться загрузить и установить пакет: Visual C++ Redistributable for Visual Studio 2012. На странице загрузки выберите x86 версию распространяемого пакета (WinCheat является 32-bit приложением). Домашняя страница: http://www.alinconstantin.com/Download/WinCheat WinSpy++ v1.7 WinSpy ++ может получить следующие свойства окна: Новое в версии 1.7! Домашняя страница: http://www.catch22.net/software/winspy Скачать: WinSpy++ v1.6 / WinSpy++ v1.7 / WinSpy Src WinSpy v1.0.3 Программа собрана для x86 и x64, в комплекте имеются исходники (сценарий AHK). Версия 1.0.3: Версия 1.0.2: Домашняя страница: http://sourceforge.net/projects/winspyex/ Скачать: WinSpy v1.0.2 / WinSpy v1.0.3 Microsoft Spy++ v14 Домашняя страница: http://microsoft.com Скачать: Microsoft Spy++ v14 Control Viewer v1.1 Основные отличия Control Viewer от AutoIt Window Info: • Отображение полного списка всех существующих элементов GUI для интересующего окна (видимые, скрытые и удаленные элементы отображаются разными цветами, которые можно изменить на любые другие). Используемые горячие клавиши: Цветовая индикация состояния элементов: Последнее обновление 19.05.2012: — Добавлена 64-битная версия программы. Поддерживаются бинарные файлы x86 и x64 (Binary file support x86 and x64) Домашняя страница: http://autoit-script.ru/index.php?topic=4579.0 Скачать: ControlViewer v1.1 / Control Viewer / RU-EN / ATT / WinAPIEx (pass: Unpack) Property Edit v2.5.0.0 Домашняя страница: http://mh-nexus.de/en/programs.php Window Detective v3.5.1 Особенности программы: Домашняя страница: http://sourceforge.net/projects/windowdetective/ WinDowse v5.3 Основная информация окна: Широкий набор функций и полнота предоставляемой информации, позволяет вам быстро узнать все необходимые данные о нужной вам функции или элементе окна. Все параметры могут быть показаны в шестнадцатеричном, десятичном или бинарном формате. После запуска WinDowse, он ведет непрерывный отсчет, пока пользователь перемещает мышь по экрану. Непрерывная индикация может быть остановлена в любой момент по щелчку мышкой «Stop». WinDowse также позволяет копировать результаты в буфер обмена. Домашняя страница: http://www.greatis.com/delphicb/windowse/ Скачать: WinDowse v5.3 / II / III XWinspector v1.0 Домашняя страница: http://freesoft80.com/products/xwinspector-1-0.html WinInfo v1.0.3 Домашняя страница: http://www.pazera-software.com/products/wininfo/ Скачать: WinInfo v1.0.3 / WinInfo v1.0.3 fix Aezay Window Hacker 2 v16.06.28 (2016 Jun 28) — Программа является переписанной версией «Window Hacker», который ранее назывался «hWnd Monitor». Домашняя страница: http://www.aezay.dk/aezay/wndhack/ Ranorex Spy Pro v1.5 RanorexSpy показывает такие свойства элементов как: дескриптор, текст заголовка, имя класса, имя элемента управления, идентификатор элемента управления, стиль элемента и его координаты на экране. Кроме этого программа также отображает дополнительное поле свойств выбранного элемента, с такой информацией как: тип элемента, имя элемента, класс элемента, позиция элемента, значение элемента и состояние элемента. Утилита Ranorex Spy Pro поставляется в комплекте с программным обеспечением Ranorex, также с оф-сайта можно скачать обычную версию Ranorex Spy. Домашняя страница: http://www.ranorex.com/ Скачать: RanorexSpyPro v1.5 / Ranorex v1.5.0 / Ranorex v1.5.1 Spy++ Lite v2.4 Домашняя страница: http://www.asanscape.com Скачать: SpyLite v2.4 ViewWizard v3.5.2 (句柄查看精灵) Перетащите значок увеличительного стекла на окно целевой программа, когда объект окна подсветиться черным прямоугольником, в окне ViewWizard будет отображена вся информация об выбранном элементе. Можно воспользоваться методом непосредственного поиска по вводу дескриптора окна. Кроме сканера атрибутов оконных форм, программа позволяет делать снимки рабочего стола и определять цвет пикселей на экране в форматах RGB, HSL, HTML и HEX. Особенности: Домашняя страница: http://zzmzzff.blog.163.com Скачать: ViewFont v1.0 / ViewWizard v2.8 / ViewWizard v3.5.2 (pass: Unpack)
|