Здравствуйте GarryFV, Вы писали:
GFV>Никак не могу свести в кучу сии объекты . GFV>В общем хочу "пообщаться" сообщениями с чужой программой, зная только название exe модуля.
GFV>При этом могу получить ModuleHandle=GetModuleHandle(<ExeName>), GFV>но не знаю как получить Handle главного окна или потока .
GetModuleHandle не будет работать с "чужой" программой, а только с модулями, загруженными в то же адр. пр-во.
GFV>Или могу взять список всех окон в системе(EnumWindows), но не могу узнать какому модулю принадлежит данное окно. GFV>Полностью лопатить Win32 reference желания нет. GFV>Может подскажет кто какие-нибудь функции?
Самым простым способом будет использовать FindWindow по заголовку или классу чужого окна
S>GetModuleHandle не будет работать с "чужой" программой, а только с модулями, загруженными в то же адр. пр-во.
GFV>>Или могу взять список всех окон в системе(EnumWindows), но не могу узнать какому модулю принадлежит данное окно.
S>Самым простым способом будет использовать FindWindow по заголовку или классу чужого окна
Не было бы проблем , но я не знаю ни имени окна ни имени класса (посмотреть с помощью SPy++ не предлагать, т.к. прогу пишу не для себя). Я знаю только имя exe-шника.
Вот, например, как через имя "winamp.exe" — найти его главное окно и закрыть его.
Или как вообще закрыть его не находя главного окна.
Здравствуйте GarryFV, Вы писали:
GFV>Вот, например, как через имя "winamp.exe" — найти его главное окно и закрыть его. GFV>Или как вообще закрыть его не находя главного окна.
nadeyus ty uzhe nashel kak poluchit' spisok processov ? Esli net, to poischi v MSDN "Taking a Snapshot and Viewing Processes". a esli da, do zakryt' winamp moznno TerminateProcess'om, predvaritelno otkryv ego OpenProcess'om
Здравствуйте Kubyshev Andrey, Вы писали:
KA>Здравствуйте GarryFV, Вы писали:
GFV>>Вот, например, как через имя "winamp.exe" — найти его главное окно и закрыть его. GFV>>Или как вообще закрыть его не находя главного окна.
KA>nadeyus ty uzhe nashel kak poluchit' spisok processov ? Esli net, to poischi v MSDN "Taking a Snapshot and Viewing Processes". a esli da, do zakryt' winamp moznno TerminateProcess'om, predvaritelno otkryv ego OpenProcess'om
Я так понял, что должен получить SnapShot, пройтись по списку процессов,а там в параметрах есть handle модуля процесса — получить ModuleFileName, сравнить с winamp.exe, и когда найду — сделать OpenProcess и TerminateProcess.
Интересно только все эти handle-ы чужих процессов будут правильными в моем адресном пространстве? Впрочем попробую...
Немного путаюсь в вещах типа Process Handle и ProcessID — редко приходится заниматься таким программингом (это я извиняюсь за ламерские вопросы
Спасибо большое за советы.
P.S. А все-таки нет другого способа имея HWND напрямую узнать какому exe это окно принадлежит?