@@ -16,22 +16,25 @@ namespace Rubberduck.Common
16
16
{
17
17
public class RubberduckHooks : IRubberduckHooks
18
18
{
19
- private readonly VBE _vbe ;
20
19
private readonly IntPtr _mainWindowHandle ;
20
+ private readonly IntPtr _oldWndPointer ;
21
21
private readonly User32 . WndProc _oldWndProc ;
22
+ private User32 . WndProc _newWndProc ;
22
23
private RawInput _rawinput ;
24
+ private IRawDevice _kb ;
25
+ private IRawDevice _mouse ;
23
26
private readonly IGeneralConfigService _config ;
24
27
private readonly IEnumerable < CommandBase > _commands ;
25
28
private readonly IList < IAttachable > _hooks = new List < IAttachable > ( ) ;
26
29
private static readonly Logger Logger = LogManager . GetCurrentClassLogger ( ) ;
27
30
28
31
public RubberduckHooks ( VBE vbe , IGeneralConfigService config , IEnumerable < CommandBase > commands )
29
32
{
30
- _vbe = vbe ;
31
33
_mainWindowHandle = ( IntPtr ) vbe . MainWindow . HWnd ;
32
34
_oldWndProc = WindowProc ;
33
- var oldWndPointer = User32 . SetWindowLong ( _mainWindowHandle , ( int ) WindowLongFlags . GWL_WNDPROC , WindowProc ) ;
34
- _oldWndProc = ( User32 . WndProc ) Marshal . GetDelegateForFunctionPointer ( oldWndPointer , typeof ( User32 . WndProc ) ) ;
35
+ _newWndProc = WindowProc ;
36
+ _oldWndPointer = User32 . SetWindowLong ( _mainWindowHandle , ( int ) WindowLongFlags . GWL_WNDPROC , _newWndProc ) ;
37
+ _oldWndProc = ( User32 . WndProc ) Marshal . GetDelegateForFunctionPointer ( _oldWndPointer , typeof ( User32 . WndProc ) ) ;
35
38
36
39
_commands = commands ;
37
40
_config = config ;
@@ -55,10 +58,12 @@ public void HookHotkeys()
55
58
var kb = ( RawKeyboard ) _rawinput . CreateKeyboard ( ) ;
56
59
_rawinput . AddDevice ( kb ) ;
57
60
kb . RawKeyInputReceived += Keyboard_RawKeyboardInputReceived ;
61
+ _kb = kb ;
58
62
59
63
var mouse = ( RawMouse ) _rawinput . CreateMouse ( ) ;
60
64
_rawinput . AddDevice ( mouse ) ;
61
65
mouse . RawMouseInputReceived += Mouse_RawMouseInputReceived ;
66
+ _mouse = mouse ;
62
67
63
68
foreach ( var hotkey in settings . Settings . Where ( hotkey => hotkey . IsEnabled ) )
64
69
{
0 commit comments