Узнать hwnd своего окна

Узнать HWND главного окна.

По нажатию кнопки найти HWND окна
Добрый день, прошу сапогами не пинать. У меня стоит следующая задача: Нужно по нажатию.

Узнать HWND главного окна процесса имея его имя?
Запускаем калькулятор Windows. Имя этого процесса (полученное с использованием PROCESSENTRY.

Как узнать margin-left любого элемента от главного окна окна браузера?
причем не важно какую вложенность имеет элемент сам элемент, т.е. в скольких контейнерах он бы не.

Как узнать hwnd окна по заданным координатам
Есть команда win32gui.GetWindowRect(hwnd2) она возвращает координаты местоположения окна по.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно «А». Это окно создаёт новое недочернее окно «Б». Необходимо.

Как узнать HWND созданного только что SendMessage окна? и желательно без FindWindow
заранее спасибо если чо, то FindWindow почему то не работает. Добавлено через 54 минуты Я.

Как мне сослаться на вторичные окна (формы) из главного окна
Мне скинули код. я пытаюсь коды этих отдельных форм просмотреть в конструкторе. то есть.

При перерисовке главного окна мигают дочерние окна
При перерисовке главного окна мигают дочерние окна. Для отрисовки главного окна используется.

Источник

Узнать hwnd своего окна

Как узнать HWND окна? Если у меня приложение консольное, Applications добавить не могу, т.к. Windows.pas отключен. Какжется можно как-то по Api узнать, не подскажете.


Digitman © ( 2004-09-27 13:24 ) [1]


Shira333 ( 2004-09-27 13:41 ) [2]

Моего, т.е. моего окна консольного приложения.


Digitman © ( 2004-09-27 14:02 ) [3]

это окно не относится к «когорте» GUI-окон

а зачем тебе это понадобилось ? поясни .


Игорь Шевченко © ( 2004-09-27 14:08 ) [4]

Shira333 (27.09.04 13:41) [2]


> Моего, т.е. моего окна консольного приложения.

Это не твое окно. У консольных приложений нету окон. Узнать можно, перебрав окна и сравнивая имя оконного класса с ConsoleWindowClass и GetWindowThreadProcessId с ID своего процесса.

он, видимо, хочет получив хэндл этого окна использовать этот хендл как таргет для Post/SendMessage

Читайте также:  Как своими руками сделать москитную сетку для мансардного окна


Shira333 ( 2004-09-27 15:24 ) [6]

Короче, одним словом, я хочу послать окну команду SW_HIDE, или по другому говоря, сделать его невидимым!


Игорь Шевченко © ( 2004-09-27 15:30 ) [7]

Shira333 (27.09.04 15:24) [6]


> я хочу послать окну команду SW_HIDE, или по другому говоря,
> сделать его невидимым!

Вопрос только в том, захочет ли этого окно. Впрочем, как искать, я написал, дальше пробуй.


Shira333 ( 2004-09-27 15:32 ) [8]

Дело в том, что GetForegroundWindow показывает хэндл, если прогу сам запускал. А когда прога грузится при запуске винды из реестра, то не помогает. Я думаю, что есть какая то функция(вроде GetForegroundWindow


Shira333 ( 2004-09-27 15:37 ) [9]

Как узнать АйДи своего процесса?

Get — получить
Current — текущий
ProcessId — идент-р процесса

все вместе = получить идент-р текущего процесса = GetCurrentProcesId

поискать по станд.справке — не судьба . не говоря уже о том чтобы догадаться


KSergey © ( 2004-09-28 08:16 ) [11]

> [6] Shira333 (27.09.04 15:24)
> Короче, одним словом, я хочу послать окну команду SW_HIDE,
> или по другому говоря, сделать его невидимым!

Дык может тогда консольное приложние вовсе и не нужно? Оно по определению открывает окно (система для него). А ты сделай не консольное — и ничего прятать не придется, пока сам явно не покажешь.


MetalFan © ( 2004-09-28 10:36 ) [12]


> сделай не консольное — и ничего прятать не придется

оченб верное замечание? смысл консольного приложение, если окно консоли прятать?


Shira333 ( 2004-09-28 17:21 ) [13]

Спасибу, уже сделал то, что хотел.
А консольное сделал, чтоб минимум весило.


Digitman © ( 2004-09-28 17:32 ) [14]


> консольное сделал, чтоб минимум весило


Lin7 ( 2004-09-28 18:13 ) [16]


Shira333 © ( 2004-09-28 18:21 ) [17]

Может объясните, чтобы в будущем не ошибался, если ошибся.


Lin7 ( 2004-09-28 18:24 ) [18]

Если хочешь сделать очччень маленькую программу — сделай процесс БЕЗ окон, а не консоль. И лучше на WinAPI. И лучше найди (это даже проще и быстрее чем писать самому) примеры в инете.


Shira333 © ( 2004-09-28 18:26 ) [19]

Как процесс создавать. Вроде посмотрел, но не увидел.


Lin7 ( 2004-09-28 18:51 ) [20]

Читайте также:  Как посчитать остекление окон

А как же сервисы?
О сервисах смотри на www.rsdn.ru в статьях.


Lin7 ( 2004-09-28 19:02 ) [21]

Или ещё вариант: создаёшь проект Application, открываешь View Source проекта (в меню Project) и чистишь всё, кроме

program Project1;
begin
// твой код
end.

и удаляешь из проекта единственный юнит-форму. Всё!
Скомпилишь — получишь exe-шник

8k размером и без окна.
Заметь, пустая консолька весит столько же.
Напишешь на WinAPI — должно быть меньше ИМХО.


y-soft © ( 2004-09-29 08:21 ) [22]

>Игорь Шевченко © (27.09.04 14:08) [4]

Это не твое окно. У консольных приложений нету окон. Узнать можно, перебрав окна и сравнивая имя оконного класса с ConsoleWindowClass и GetWindowThreadProcessId с ID своего процесса.

Обратимся к первоисточнику:

Microsoft Knowledge Base Article — 124103
«How To Obtain a Console Window Handle (HWND)»

. The resulting HWND is not guaranteed to be suitable for all window handle operations.

Источник

Узнать HWND главного окна процесса имея его имя?

Узнать имя процесса имея HWND
Возник такой вопрос: как можно узнать имя процесса, имея его HWND? Добавлено через 18 минут.

Нужно узнать имя и путь исполняемого файла, имея handle его окна
Нужно узнать имя и путь исполняемого файла, имея handle его окна. Когда используешь handle.

Как узнать имя окна (обьекта), зная его хэндл?
Допустим, хэндл окна я узнаю так: HANDLE h=WindowFromPoint(Mouse->CursorPos); Класс так.

Как узнать HWND созданного только что SendMessage окна? и желательно без FindWindow
заранее спасибо если чо, то FindWindow почему то не работает. Добавлено через 54 минуты Я.

Решение

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Узнать HWND главного окна.
Здравствуйте! Как мне узнать HWND окна моего приложения, которое я создаю в Visual C++ Express.

Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно «А». Это окно создаёт новое недочернее окно «Б». Необходимо.

Определить заголовок(имя) окна, зная PID его процесса
Сабж! Уже 2ой день не могу найти — как? У меня известе PID и hwnd процесса, как узнать имя окна(то.

Как узнать Handle или PID процесса, зная его имя и класс?
Как узнать Handle или PID процесса, зная его имя и класс?

Читайте также:  Как утеплить наружные откосы пластиковых окон

Источник

Как узнать hWnd процесса?

12 ответов

Сначала надо определиться с понятиями.

обычно под hWnd понимают — дескриптор окна.
У процеса есть pID — идентификатор процесса и
pHandle — дескриптор процесса

Соответственно каждое окно имеет 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

exitCode =0
‘ запустили свой дочерний процесс — программу иначе говоря
pID = Shell(«c:\windows\notepad.exe», vbNormalFocus)
‘ зная pID процесса находим pHandle процесса
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pID)
TerminateProcess(myProcess, exitCode)
‘ освобождаем дескриптор
CloseHandle(pHandle)

Только как я недавно узнал, такой принудительный способ (а этим способом можно принудительно закрыть почти любую программу, естественно с потерей всех ее данных, потому как принудитено) оказывается не освобождает память из под используемых этой программой Dll и COM объектов, что не очень хорошо. хотя все пользуются, наверное надеются на win’ский диспетчер памяти, наверное он в состоянии разобраться с таким барахлом, по крайне мере в Xp. но все уже мои догадки

Более умные функции закрытия программы, обычно сначала работают через окно (hWnd), посылая ему команду о закрытии, тогда окно может закончить все свои дела и закрыться, а вот если оно например через 15 сек еще назакрылось (зависло там или очень сильно задумалось), то тогда уже принудительно через Terminate.

Код посылки сообщения окну программы о закрытии могу написать. а тебя есть окно у программы-то?

Источник

Поделиться с друзьями