powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реакция на горячие клавиши главного окна неуправляемого приложения
3 сообщений из 3, страница 1 из 1
Реакция на горячие клавиши главного окна неуправляемого приложения
    #38152430
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

Windows 7; C# 3.5 SP1; MS Visual Studio 2012;

Пишу управляемый плагин для некоторого неуправляемого приложения, написанного на C++. Главное окно этого приложения представлено для неуправляемого кода такой обёрткой:
Код: c#
1.
public class Window : DisposableWrapper, IWin32Window;


Требуется в моём плагине отлавливать нажатия различных горячих клавиш, нажатых в главном окне. Как это сделать? Первым делом, поскольку WinForms - это всего лишь управляемая обёртка над частью WinAPI, отвечающей за графику, я попытался получить главное окно по его хэндлу так:
Код: c#
1.
Control _control = Form.FromHandle(mainWin.Handle);


Однако _control в качестве значения получает null.

Как правильно решать поставленную задачу?

Спасибо
...
Рейтинг: 0 / 0
Реакция на горячие клавиши главного окна неуправляемого приложения
    #38152447
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По теме нашёл это . Насколько я понял, решить поставленную задачу простым способом не получится - нужно прибегать к помощи некоторых сторонних библиотек, судя по ответу, указанному в ссылке.
...
Рейтинг: 0 / 0
Реакция на горячие клавиши главного окна неуправляемого приложения
    #38152714
Grigory_R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum,
попробуйте зацепить оконную ф-цию (обязательно нужен FParentHWND)

var SaveProc:Pointer;

SaveProc:=Pointer(SetWindowLong(FParentHWND,GWL_WNDPROC,cardinal(@WinProc))); //при инициализации dll запоминаем

function WinProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
if Msg=WM_SIZE or Msg=WM_Key then
begin
// наша обработка
end;
WinProc:=CallWindowProc(SaveProc,hwnd,msg,wparam,lparam);//возвращаем управление
end;

// код на Delphi
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реакция на горячие клавиши главного окна неуправляемого приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]