내 Visual Studio 유틸리티 추가 기능 SamTools의 일부로 Ctrl + MouseWheel을 캐치하고 활성 텍스트 창에 pageup/pagedown 명령을 보내는 마우스 입력 루틴이 있습니다. Visual Studio 2010에는 확대/축소 (바코드)를위한 제스처를 사용하는 새로운 "기능"이 추가되었습니다. 현재 내 추가 기능에서 스크롤 명령을 보내지 만 Visual Studio는 입력을 먹지 않기 때문에 글꼴 크기를 변경합니다.응용 프로그램의 기본 루프 전에 선택한 입력을 억제 할 수 있습니까?
SetWindowsHookEx
으로 전화하여 내 후크를 설정했습니다. 다음은 콜백 코드입니다. 내 질문 :은 Visual Studio에서 Ctrl + MouseWheel 입력을 확대/축소 명령으로 처리하지 못하도록하는 가장 좋은 방법입니다. 이 아닌CallNextHookEx
은 Ctrl 키를 사용하여 마우스 휠 이벤트를받을 때 호출합니까?
private IntPtr MouseCallback(int code, UIntPtr wParam, ref MOUSEHOOKSTRUCTEX lParam)
{
try
{
// the callback runs twice for each action - this is the latch
if (enterHook)
{
enterHook = false;
if (code >= 0)
{
int x = lParam.mstruct.pt.X;
int y = lParam.mstruct.pt.Y;
uint action = wParam.ToUInt32();
switch (action)
{
case WM_MOUSEWHEEL:
OnMouseWheel(new MouseEventArgs(MouseButtons.None, 0, x, y, ((short)HIWORD(lParam.mouseData))/(int)WHEEL_DELTA));
break;
default:
// don't do anything special
break;
}
}
}
else
{
enterHook = true;
}
}
catch
{
// can't let an exception get through or VS will crash
}
return CallNextHookEx(mouseHandle, code, wParam, ref lParam);
}
(. 명심하시기 바랍니다이 광산의 일부 이전 코드) 그리고 여기 MouseWheel
이벤트에 대한 응답으로 실행되는 코드입니다 :
void mouse_enhancer_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
try
{
if (Keyboard.GetKeyState(System.Windows.Forms.Keys.ControlKey).IsDown && Connect.ApplicationObject.ActiveWindow.Type == vsWindowType.vsWindowTypeDocument)
{
int clicks = e.Delta;
if (e.Delta < 0)
{
Connect.ApplicationObject.ExecuteCommand("Edit.ScrollPageDown", "");
}
else
{
Connect.ApplicationObject.ExecuteCommand("Edit.ScrollPageUp", "");
}
}
}
catch (System.Runtime.InteropServices.COMException)
{
// this occurs if ctrl+wheel is activated on a drop-down list. just ignore it.
}
}
PS : SamTools는 오픈 소스 (GPL)입니다. 링크에서 다운로드 할 수 있으며 소스는 설치 프로그램에 있습니다.
PSS : 확대/축소를 위해 Ctrl + [+] 및 Ctrl + [-]를 사용하는 것이 좋습니다. Ctrl + MouseWheel 스크롤 (대폭 사용되는 명령).
불행히도 마우스 명령은 사용자 지정 옵션에 표시되지 않습니다. –
OMG, 내 마우스 휠과 뒤로/앞으로 버튼을 가지고있는 것이 좋다 !!!! –
하하, 이것이 효과가 있음을 알게되어 기쁩니다! :-) –