У меня есть этот кусок кода, который работает на Winform
:
public class GlobalHotkey
{
private int modifier;
private int key;
private IntPtr hWnd;
private int id;
public GlobalHotkey(int modifier, Keys key, Form form)
{
this.modifier = modifier;
this.key = (int)key;
this.hWnd = form.Handle;
id = this.GetHashCode();
}
public bool Register()
{
return RegisterHotKey(hWnd, id, modifier, key);
}
public bool Unregiser()
{
return UnregisterHotKey(hWnd, id);
}
public override int GetHashCode()
{
return modifier ^ key ^ hWnd.ToInt32();
}
[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
[DllImport("user32.dll")]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
}
И после InitializeComponent
я просто инициирую его следующим образом:
ghk = new GlobalHotkey(Constants.CTRL + Constants.SHIFT, Keys.A, this);
У меня есть WPFProject и я хочу использовать один и тот же класс, поэтому я пытаюсь изменить конструктор следующим образом:
public GlobalHotkey(int modifier, Keys key, System.Windows.Window form)
{
this.modifier = modifier;
this.key = (int)key;
this.hWnd = form.Handle;
id = this.GetHashCode();
}
Но у меня есть ошибка во время компиляции в этой строке:
this.hWnd = form.Handle;
Код серьезности Описание Ошибка состояния подавления строки файла проекта CS1061 «Окно» не содержит определения для «Обработчик», и нет доступного метода расширения «Обработчик», принимающего первый аргумент типа «Окно» (вы пропускаетеиспользуя директиву или ссылку на сборку?)