我使用this project中使用的接口开发了Internet Explorer扩展。除了在扩展期间进行退格捕获外,所有事情都能完美地完成。我尝试过更改IInputObject接口方法,但没有运气。任何解决此问题的建议。
我使用的IInputObject方法如下所示。说实话,我不太了解这是如何工作的,如果有人能够解释这个过程,那将是一个很大的帮助。
public void UIActivateIO(int fActivate, ref NativeMethods.MSG msg)
{
if (fActivate != 0)
{
Control nextControl = base.GetNextControl(this, true);
if (Control.ModifierKeys == Keys.Back)
{
nextControl = base.GetNextControl(nextControl, false);
}
if (nextControl != null)
{
nextControl.Select();
}
base.Focus();
}
}
public int HasFocusIO()
{
if (!base.ContainsFocus)
{
return 1;
}
return 0;
}
public int TranslateAcceleratorIO(ref NativeMethods.MSG msg)
{
if ((msg.message == 256) && ((msg.wParam == 9) || (msg.wParam == 117)))
if (base.SelectNextControl(
base.ActiveControl,
Control.ModifierKeys != Keys.Back,
true,
true,
false))
{
return 0;
}
return 1;
}
Backspace正在使用shift键,但我想让它在没有修饰符的情况下工作。我在this project中看到他们使用TranslateMessage (ref msg);DispatchMessage (ref msg);
来实现这一点。我也试过但没有运气。任何帮助解决这个问题都会很棒。 (我对IInputObject方法所做的大部分更改似乎都没有影响,例如:修改键的更改不受影响。这是我面临的另一个问题。)