![]() |
Модераторы: diadiavova, gambit |
![]() ![]() ![]() |
|
Doff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Здравствуйте, уважаемые коллеги!
Я начинающий программист, студент. В процессе работы над своим проектом у меня возник следующий вопрос: Как на VB.NET узнать хэндл текущего окна? GetActiveWindow, как я понимаю, позволяет узнать только хэндл окна самой программы. Надо же узнать хэндл активного окна, а по нему узнать: заголовок окна, .exe программы, размеры окна и его положение на экране. Важно то, что хэндл необходимо узнать у окна в фокусе, а не под курсором. Нашел много исходников, но они узнают хэндл под курсором. Почитав MSDN, узнал, что есть функция GetGUIThreadInfo, но как ей воспользоваться, я не знаю. У кого-нибудь есть идеи? |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
GetForegroundWindow 4 life ;-)
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Doff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Спасибо! Заработало кое-как.
Но вопрос до конца не решен: как теперь узнать .exe процесса? Какой API-функцией можно это сделать? И вопрос на засыпку - где можно достать самый полный список описаний API-функций? Я пользуюсь программой "WinAPI Справочник" с сайта kas-cor.narod.ru, но там не все функции описаны. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
GetWindowModuleFileName ;-)
msdn.microsoft.com -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Doff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
В MSDN я нашел инфу об этой функции:
"GetWindowModuleFileName & GetModuleFileName Work Only with the Calling Process It doesn't work for other processeses on Windows 2000, XP and Vista. See http://support.microsoft.com/?id=228469." Зато есть функция GetModuleFileNameEx, которая требует прямого указания файла (зачем?). Так вот, я никак не могу взять в толк, как заставить программу считывать .exe текущего окна. Неужели это такая трудноступная функция? Baa, за помощь спасибо, но все-таки тема до конца не раскрыта. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Тогда можно отыскать по процессу. Получим ид процесса по окошку, дальше не сложно
![]() GetWindowThreadProcessId -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Walker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: нет Всего: 16 |
Самая полная информация о Win Platform API в SDK, если Вы решили серьёзно копаться в этом направлении. Для большинства задач обычно вполне хватает ресурса http://pinvoke.net/. Там представлено подробное описание с заточкой под .NET. Удачи! -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Вообще, ничего сложного...
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Doff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Вы меня прямо завалили советами
![]() |
|||
|
||||
Doff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Вопрос решен, спасибо всем, кто помог и особенно товарищу Baa за его бескорыстную помощь. Привожу его пример на VB.NET (может, кому пригодится):
Это сообщение отредактировал(а) Doff - 20.11.2007, 20:34 |
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
А как быть в такой ситуации, когда, например, известно хендл какого-нить компонента формы и НУЖНО узнать хендл самой формы, чтобы ее спрятать (SW_HIDE). SetForegroundWindow не предлагать. Может какие стандартные функции.....
|
|||
|
||||
bom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: нет Всего: 6 |
GetParent
|
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума VB .NET | |
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |