Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

HANDLE -> HWND

15 views
Skip to first unread message

Evgeniy Zhavoronkov

unread,
Aug 18, 2007, 9:23:06 AM8/18/07
to
Привет All!

Как сабж правильно делать?
И возможно ли делать преобразование HANDLE -> HMODULE ?

До свидания, Evgeniy.
np: Lamb Of God - The Faded Line
[Metal] [Death] [Doom] [Guitar] [Animate] [C++] [asm]

Boris Shklyaev

unread,
Aug 19, 2007, 3:22:32 AM8/19/07
to
_/Greetings, Evgeniy !!/_

EZ> Как сабж правильно делать?
EZ> И возможно ли делать преобразование HANDLE -> HMODULE ?

эм, кхе. HANDLE чево? процесса? дык у одного процесса может быть куча
окон. а HANDLE это и есть HMODULE.

_/Good Luck, Evgeniy./_
... [*ФИТ-151*]-[_Zenwalk Linux_]-[_винмоздай_]-[/дзен/]

Evgeniy Zhavoronkov

unread,
Aug 19, 2007, 9:23:34 AM8/19/07
to
Привет Boris!

19 авг 07 12:22, Boris Shklyaev -> Evgeniy Zhavoronkov:

EZ>> Как сабж правильно делать?
EZ>> И возможно ли делать преобразование HANDLE -> HMODULE ?

BS> эм, кхе. HANDLE чево? процесса? дык у одного процесса может быть куча
BS> окон. а HANDLE это и есть HMODULE.

Я про типы.
допустим...
HANDLE h;
HWND hw;
Hужно преобразовать h в hw
hw=h <---

До свидания, Evgeniy.
np: As I Lay Dying - The Pain Of Separation[paused]

Dmitry Grebeniuk

unread,
Aug 19, 2007, 9:53:04 AM8/19/07
to
hi, Evgeniy

EZ> Я про типы.
EZ> допустим...
EZ> HANDLE h;
EZ> HWND hw;
EZ> Hужно преобразовать h в hw
EZ> hw=h <---

Понимаете, HANDLE и HWND специально для того имеют разные типы, чтобы их не
использовали одно вместо другого, так как это указатели на разные сущности.
Попробуйте, например, нарисовать что-то в окне, полученном преобразованием типа
HANDLE->HWND из file handle, и подумайте, какой в этом смысл.
Вывод: уточните, из какого именно HANDLE (из указателя на что именно) Вы
хотите получить HWND.

bye

Evgeniy Zhavoronkov

unread,
Aug 19, 2007, 12:33:48 PM8/19/07
to
Привет Dmitry!

19 авг 07 18:53, Dmitry Grebeniuk -> Evgeniy Zhavoronkov:

EZ>> Я про типы.
EZ>> допустим...
EZ>> HANDLE h;
EZ>> HWND hw;
EZ>> Hужно преобразовать h в hw
EZ>> hw=h <---

DG> Понимаете, HANDLE и HWND специально для того имеют разные типы,
DG> чтобы их не использовали одно вместо другого, так как это указатели на
DG> разные сущности. Попробуйте, например, нарисовать что-то в окне,
DG> полученном преобразованием типа HANDLE->HWND из file handle, и
DG> подумайте, какой в этом смысл. Вывод: уточните, из какого именно
DG> HANDLE (из указателя на что именно) Вы хотите получить HWND.

Handle процесса. Хочу из него получить HWND чтобы достучатся до окна и
прочитать заголовок окна.

До свидания, Evgeniy.
np: As Blood Runs Black - In Dying Days

Alexander Andrusenko

unread,
Aug 19, 2007, 2:56:09 PM8/19/07
to
EZ> Handle процесса. Хочу из него получить HWND чтобы достучатся до окна и
EZ> прочитать заголовок окна.

У тебя не возникает даже мысли о том, что у каждого процесса может быть
любое число окон, в том числе и ноль?

1) Через GetProcessId получить из handle процесса id процесса.
2) Через EnumWindows перебрать все top-level окна
3) Внтури EnumWindowsProc для каждого HWND вызывать GetWindowThreadProcessId
и сравнивать id с полученным на первом шаге.


Alexander Grebenkov

unread,
Aug 20, 2007, 2:35:04 AM8/20/07
to
Ура.

DG>> на разные сущности. Попробуйте, например, нарисовать что-то в окне,


DG>> полученном преобразованием типа HANDLE->HWND из file handle, и
DG>> подумайте, какой в этом смысл. Вывод: уточните, из какого именно
DG>> HANDLE (из указателя на что именно) Вы хотите получить HWND.

EZ> Handle процесса. Хочу из него получить HWND чтобы достучатся до окна и
EZ> прочитать заголовок окна.

Обратная операция делается через

GetWindowThreadProcessId(hWnd, &processid);
HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE, processid);

Где-то в описании этих функций в MSDN может быть и прямая операция :)

С приветом, Шурик Гребеньков. e-mail: grebenkov [не собака] gmail dot com

0 new messages