А>Каким образом можно передать хэндл из одного процесса в другой?
А>Просто средствами IPC передать числовое значение — это нормально?
Есть
DuplicateHandle.
BOOL WINAPI DuplicateHandle(
__in HANDLE hSourceProcessHandle,
__in HANDLE hSourceHandle,
__in HANDLE hTargetProcessHandle,
__out LPHANDLE lpTargetHandle,
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwOptions
);
Параметрами hSourceProcessHandle/hTargetProcessHandle можно заказать и искомое.
Но хендл должен быть не любой, а из списка: access token, change notification, communications device, console input, console screen buffer, desktop, event, file, file mapping, job, mailslot, mutex, pipe, process, registry key, semaphore, thread, timer, transaction, window station. А если хендл от окна (HWND), то его и так можно передавать (в пределах одной window station, если мой склероз меня не обманывает).
И да, если процессы на разных машинах, то не получится.
Здравствуйте, McQwerty, Вы писали:
>А если хендл от окна (HWND), то его и так можно передавать (в пределах одной window station, если мой склероз меня не обманывает).
Не обманывает. Как он может обманывать, если есть FindWindow и EnumWindows
Здравствуйте, Pavel Dvorkin, Вы писали:
>>А если хендл от окна (HWND), то его и так можно передавать (в пределах одной window station, если мой склероз меня не обманывает).
PD>Не обманывает. Как он может обманывать, если есть FindWindow и EnumWindows
"Не обманывает" — это к "в пределах одной window station" было.
Здравствуйте, McQwerty, Вы писали:
MQ>Здравствуйте, Pavel Dvorkin, Вы писали:
>>>А если хендл от окна (HWND), то его и так можно передавать (в пределах одной window station, если мой склероз меня не обманывает).
PD>>Не обманывает. Как он может обманывать, если есть FindWindow и EnumWindows
MQ>"Не обманывает" — это к "в пределах одной window station" было.
Я так полагаю, что и в разных станциях хендлами обмениваться можно. Другое дело, что для того, чтобы к ним добраться, придется открывать эту станцию и ее десктопы, а потом EnumDesktopWindows. Но в любом случае хендлы окон одни для системы.