@ -21,7 +21,7 @@ namespace ClickableTransparentOverlay
/// </summary>
/// </summary>
public class HookController
public class HookController
{
{
private readonly Stack < HookControllerMessage > messages ;
private readonly Queue < HookControllerMessage > messages ;
private IKeyboardMouseEvents myHook ;
private IKeyboardMouseEvents myHook ;
private bool enable ;
private bool enable ;
private int windowX ;
private int windowX ;
@ -38,7 +38,7 @@ namespace ClickableTransparentOverlay
/// </param>
/// </param>
public HookController ( int x , int y )
public HookController ( int x , int y )
{
{
this . messages = new Stack < HookControllerMessage > ( ) ;
this . messages = new Queue < HookControllerMessage > ( ) ;
this . windowX = x ;
this . windowX = x ;
this . windowY = y ;
this . windowY = y ;
this . enable = true ;
this . enable = true ;
@ -127,32 +127,42 @@ namespace ClickableTransparentOverlay
public void PopMessages ( )
public void PopMessages ( )
{
{
int counter = 0 ;
int counter = 0 ;
int maxCounter = 1 0 ;
int maxCounter = 2 0 ;
while ( counter < maxCounter & & this . messages . Count > 0 )
while ( counter < maxCounter & & this . messages . Count > 0 )
{
{
var message = this . messages . Pop ( ) ;
var message = this . messages . Dequeue ( ) ;
switch ( message . Type )
try
{
{
case HookControllerMessageType . MouseUpDown :
switch ( message . Type )
this . ProcessMouseUpDown ( ( MouseEventExtArgs ) message . E , message . MiscArg , true ) ;
{
break ;
case HookControllerMessageType . MouseUpDown :
case HookControllerMessageType . MouseMove :
this . ProcessMouseUpDown ( ( MouseEventExtArgs ) message . E , message . MiscArg , true ) ;
this . ProcessMouseMove ( ( MouseEventArgs ) message . E , true ) ;
break ;
break ;
case HookControllerMessageType . MouseMove :
case HookControllerMessageType . MouseWheel :
this . ProcessMouseMove ( ( MouseEventArgs ) message . E , true ) ;
this . ProcessMouseWheel ( ( MouseEventExtArgs ) message . E , true ) ;
break ;
break ;
case HookControllerMessageType . MouseWheel :
case HookControllerMessageType . KeyUp :
this . ProcessMouseWheel ( ( MouseEventExtArgs ) message . E , true ) ;
this . ProcessKeyUp ( ( KeyEventArgs ) message . E , true ) ;
break ;
break ;
case HookControllerMessageType . KeyUp :
case HookControllerMessageType . KeyDown :
this . ProcessKeyUp ( ( KeyEventArgs ) message . E , true ) ;
this . ProcessKeyDown ( ( KeyEventArgs ) message . E , true ) ;
break ;
break ;
case HookControllerMessageType . KeyDown :
case HookControllerMessageType . KeyPress :
this . ProcessKeyDown ( ( KeyEventArgs ) message . E , true ) ;
this . ProcessKeyPress ( ( KeyPressEventArgs ) message . E , true ) ;
break ;
break ;
case HookControllerMessageType . KeyPress :
default :
this . ProcessKeyPress ( ( KeyPressEventArgs ) message . E , true ) ;
break ;
break ;
default :
break ;
}
}
catch ( Exception e )
{
Console . WriteLine ( "Warning: Caught an exception while handling keyboard/mouse inputs." +
"Report to the GitHub repository if this effects your work & it's reproduceable." ) ;
Console . WriteLine ( e . Message ) ;
Console . WriteLine ( e . StackTrace ) ;
}
}
counter + + ;
counter + + ;
@ -180,7 +190,7 @@ namespace ClickableTransparentOverlay
MiscArg = miscArg ,
MiscArg = miscArg ,
} ;
} ;
this . messages . Push ( message ) ;
this . messages . Enqueue ( message ) ;
}
}
private void ProcessMouseUpDown ( MouseEventExtArgs e , bool isDownEvent , bool shouldSendToImGui )
private void ProcessMouseUpDown ( MouseEventExtArgs e , bool isDownEvent , bool shouldSendToImGui )