C# Как отключить тачпад Synaptics?

Я установил драйвер Synaptics, поэтому я могу отключить / включить сенсорную панель вручную.

Вот способ, которым я использую, чтобы включить / отключить тачпад с помощью C#:

private void Switch_Mouse(int i = 0) // 1: Enable, 0: Disable
{
    Process.Start("control.exe", "main.cpl");
    Thread.Sleep(1000);
    int iHandle = FindWindow(null, "Mouse Properties");
    SetForegroundWindow(iHandle); // Line ABC
    SendKeys.Send("^+{TAB}");
    if (i == 1)
    {
        SendKeys.Send("%E");
    }
    else
    {
        SendKeys.Send("%D");
        SendKeys.Send("{Enter}");
    }
    SendKeys.Send("%A");
    SendKeys.Send("{Enter}");
}

Он отправляет нажатия клавиш в свойства мыши. Но после строки с надписью // ABC (выше), приложение Mouse Properties теряет фокус и не работает.

Есть ли другой способ включить / отключить трекпад с помощью C#?

(ОС: окно 32 бит).

1 ответ

Решение

На этом форуме есть тема, в которой, по-видимому, проблема была выяснена (это все VB, но, к счастью, перенос на C# довольно прост) -> Управление тачпадом Synaptics

Похоже, что вся обработка, связанная с тачпадом, начинается здесь:

SynAPICtrl1.Initialize
  SynAPICtrl1.Activate ' Activate to receive device notifications
  DeviceHandle = SynAPICtrl1.FindDevice(SE_ConnectionAny, SE_DevicecPad, -1)
  If DeviceHandle = -1 Then
    MsgBox "Unable to find a Synaptics cPad"
    End
  End If

  SynDeviceCtrl1.Select (DeviceHandle)
  SynDeviceCtrl1.Activate 'Activate to receive pointing packets

  ZTouchThreshold = SynDeviceCtrl1.GetLongProperty(SP_ZTouchThreshold)

Он взят из Synaptics SDK, который, как они заявляют, доступен здесь, в Synaptics SDK вместе с руководствами для разработчиков.

Другие вопросы по тегам