Передать хэндл в другой процесс
От: Аноним  
Дата: 17.02.11 07:25
Оценка:
Каким образом можно передать хэндл из одного процесса в другой?
Просто средствами IPC передать числовое значение — это нормально?
Re: Передать хэндл в другой процесс
От: McQwerty Россия  
Дата: 17.02.11 07:53
Оценка:
А>Каким образом можно передать хэндл из одного процесса в другой?
А>Просто средствами 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, если мой склероз меня не обманывает).

И да, если процессы на разных машинах, то не получится.
Re[2]: Передать хэндл в другой процесс
От: Pavel Dvorkin Россия  
Дата: 17.02.11 10:21
Оценка:
Здравствуйте, McQwerty, Вы писали:

>А если хендл от окна (HWND), то его и так можно передавать (в пределах одной window station, если мой склероз меня не обманывает).


Не обманывает. Как он может обманывать, если есть FindWindow и EnumWindows
With best regards
Pavel Dvorkin
Re[3]: Передать хэндл в другой процесс
От: McQwerty Россия  
Дата: 17.02.11 12:29
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

>>А если хендл от окна (HWND), то его и так можно передавать (в пределах одной window station, если мой склероз меня не обманывает).

PD>Не обманывает. Как он может обманывать, если есть FindWindow и EnumWindows
"Не обманывает" — это к "в пределах одной window station" было.
Re[4]: Передать хэндл в другой процесс
От: Pavel Dvorkin Россия  
Дата: 17.02.11 13:05
Оценка:
Здравствуйте, McQwerty, Вы писали:

MQ>Здравствуйте, Pavel Dvorkin, Вы писали:


>>>А если хендл от окна (HWND), то его и так можно передавать (в пределах одной window station, если мой склероз меня не обманывает).

PD>>Не обманывает. Как он может обманывать, если есть FindWindow и EnumWindows
MQ>"Не обманывает" — это к "в пределах одной window station" было.

Я так полагаю, что и в разных станциях хендлами обмениваться можно. Другое дело, что для того, чтобы к ним добраться, придется открывать эту станцию и ее десктопы, а потом EnumDesktopWindows. Но в любом случае хендлы окон одни для системы.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.