Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > VB .NET > Узнать хендл активного окна |
Автор: Doff 15.11.2007, 17:03 |
Здравствуйте, уважаемые коллеги! Я начинающий программист, студент. В процессе работы над своим проектом у меня возник следующий вопрос: Как на VB.NET узнать хэндл текущего окна? GetActiveWindow, как я понимаю, позволяет узнать только хэндл окна самой программы. Надо же узнать хэндл активного окна, а по нему узнать: заголовок окна, .exe программы, размеры окна и его положение на экране. Важно то, что хэндл необходимо узнать у окна в фокусе, а не под курсором. Нашел много исходников, но они узнают хэндл под курсором. Почитав MSDN, узнал, что есть функция GetGUIThreadInfo, но как ей воспользоваться, я не знаю. У кого-нибудь есть идеи? |
Автор: Baa 16.11.2007, 17:04 |
GetForegroundWindow 4 life ;-) |
Автор: Doff 16.11.2007, 19:22 |
Спасибо! Заработало кое-как. Но вопрос до конца не решен: как теперь узнать .exe процесса? Какой API-функцией можно это сделать? И вопрос на засыпку - где можно достать самый полный список описаний API-функций? Я пользуюсь программой "WinAPI Справочник" с сайта kas-cor.narod.ru, но там не все функции описаны. |
Автор: Baa 17.11.2007, 00:54 |
GetWindowModuleFileName ;-) msdn.microsoft.com |
Автор: Doff 17.11.2007, 16:55 |
В 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 17.11.2007, 23:10 |
Тогда можно отыскать по процессу. Получим ид процесса по окошку, дальше не сложно ![]() GetWindowThreadProcessId |
Автор: Walker 19.11.2007, 10:59 | ||
Самая полная информация о Win Platform API в http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A&displaylang=en, если Вы решили серьёзно копаться в этом направлении. Для большинства задач обычно вполне хватает ресурса http://pinvoke.net/. Там представлено подробное описание с заточкой под .NET. Удачи! |
Автор: Baa 19.11.2007, 12:46 | ||
Вообще, ничего сложного...
|
Автор: Doff 19.11.2007, 16:10 |
Вы меня прямо завалили советами ![]() |
Автор: Doff 20.11.2007, 20:28 | ||
Вопрос решен, спасибо всем, кто помог и особенно товарищу Baa за его бескорыстную помощь. Привожу его пример на VB.NET (может, кому пригодится):
|
Автор: Firster 28.11.2007, 02:40 |
А как быть в такой ситуации, когда, например, известно хендл какого-нить компонента формы и НУЖНО узнать хендл самой формы, чтобы ее спрятать (SW_HIDE). SetForegroundWindow не предлагать. Может какие стандартные функции..... |
Автор: bom 27.12.2007, 02:39 |
GetParent |
Автор: Firster 27.12.2007, 03:04 |
http://forum.vingrad.ru/forum/topic-184386/anchor-entry1332636/0.html |