![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать HWND окна? [D6, WinXP]
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-окон
а зачем тебе это понадобилось ? поясни ...