Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Как узнать 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 2.567 c
4-1095974476
dms_main
2004-09-24 01:21
2004.10.31
Панель задач


1-1097870045
Мирон
2004-10-15 23:54
2004.10.31
TXPManifest уличен во вредительстве


8-1091613139
Borealis
2004-08-04 13:52
2004.10.31
Структура VOB файлов


1-1098182366
Dan
2004-10-19 14:39
2004.10.31
ComboBox


1-1097702237
Кто---то
2004-10-14 01:17
2004.10.31
Как скопировать текст из чужого ЛистБокса ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский