Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

Как узнать HWND окна?   Найти похожие ветки 

 
Shira333   (2004-09-27 13:19) [0]

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


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


> Как узнать HWND окна?


чьего окна ?


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

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


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


> Shira333   (27.09.04 13:41) [2]


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

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


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

Shira333   (27.09.04 13:41) [2]


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


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


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


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


он, видимо, хочет получив хэндл этого окна использовать этот хендл как таргет для 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]

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


 
Digitman ©   (2004-09-27 15:41) [10]


> Shira333   (27.09.04 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]


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


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


 
Shira333 ©   (2004-09-28 18:07) [15]

Какой???


 
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)"

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

Но:

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

С уважением



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.037 c
14-1097217907
Aldor
2004-10-08 10:45
2004.10.31
uses в секциях implementation и interface


1-1097747889
V l a d i m i r
2004-10-14 13:58
2004.10.31
TRadioGroup


14-1097760466
GavrilaMama
2004-10-14 17:27
2004.10.31
Тип жесткого диска - динамический... Как исправить?


14-1096998275
AndrewVolkov
2004-10-05 21:44
2004.10.31
Создание shareware


11-1075492218
Insurge
2004-01-30 22:50
2004.10.31
TreeView