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

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

Как узнать HWND окна? [D6, WinXP]


Страницы:   1 2

Shira333 ©   (2004-09-27 13:19:00) 

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


y-soft   (2004-09-29 08:21:00) [1]

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

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

???

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

Microsoft Knowledge Base Article - 124103
"How To Obtain a Console Window Handle (HWND)"

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q124/1/03.asp&NoWebContent=1

Но:

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

С уважением


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

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

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

и удаляешь из проекта единственный юнит-форму. Всё!
Скомпилишь - получишь exe-шник ~8k размером и без окна.
Заметь, пустая консолька весит столько же.
Напишешь на WinAPI - должно быть меньше ИМХО.

Удачи!


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

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


Shira333   (2004-09-28 18:26:00) [4]

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


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

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

Удачи.


Shira333   (2004-09-28 18:21:00) [6]

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


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

Ужастный!!!


Shira333   (2004-09-28 18:07:00) [8]

Какой???


Digitman   (2004-09-28 17:32:00) [9]


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


диагноз подтвердился


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

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


MetalFan   (2004-09-28 10:36:00) [11]


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

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


KSergey   (2004-09-28 08:16:00) [12]

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

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


Digitman   (2004-09-27 15:41:00) [13]


> Shira333   (27.09.04 15:37) [9]


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

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

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


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

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


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

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


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

Shira333   (27.09.04 15:24) [6]


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


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


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

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


Digitman   (2004-09-27 14:14:00) [18]


> Игорь Шевченко


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


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

Shira333   (27.09.04 13:41) [2]


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


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


Digitman   (2004-09-27 14:02:00) [20]


> Shira333   (27.09.04 13:41) [2]


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

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


Страницы:   1 2

Наверх

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