Dear All,
I found the C# that can activate Tabtip.exe anytime, even ::bGotFocus of GET, not only ACTIVATE clause.
Can we modify to xHarbour?
Thanks in advance,
I found the C# that can activate Tabtip.exe anytime, even ::bGotFocus of GET, not only ACTIVATE clause.
Can we modify to xHarbour?
Thanks in advance,
using System;
using System.Diagnostics;
using Microsoft.Win32;
namespace CSharpTesting
{
  class Program
  {
    /// <summary>
    /// The different layout types on the virtual keyboard.
    /// </summary>
    public enum KeyboardLayoutMode
    {
      Default,
      ThumbLayout,
      Handwriting
    }
    /// <summary>
    /// The registry key which holds the keyboard settings.
    /// </summary>
    private static readonly RegistryKey registryKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\TabletTip\\1.7");
    static void Main(string[] args)
    {
      SetKeyboardDockedMode(true);
      SetKeyboardLayoutMode(KeyboardLayoutMode.ThumbLayout);
      ShowKeyboard(true);
    }
    /// <summary>
    /// Shows the onscreen keyboard.
    /// </summary>
    /// <param name="killExistingProcess">If true, kill any existing TabTip.exe process.</param>
    public static void ShowKeyboard(bool killExistingProcess)
    {
      if (killExistingProcess)
      {
        // If the user presses the close button on the keyboard then TabTip.exe will still run in the background. If we have made registry
        // changes to the keyboard settings, they don't take effect until the process is started again so killing this ensures the keyboard
        // will open with our new settings.
        foreach (var process in Process.GetProcessesByName("TabTip"))
        {
          process.Kill();
        }
      }
      string onScreenKeyboardPath = @"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe";
      Process.Start(onScreenKeyboardPath);
    }
    /// <summary>
    /// Sets if the keyboard is in docked or floating mode.
    /// </summary>
    /// <param name="isDocked">If true set to docked, if false set to floating.</param>
    private static void SetKeyboardDockedMode(bool isDocked)
    {
      registryKey.SetValue("EdgeTargetDockedState", Convert.ToInt32(isDocked), RegistryValueKind.DWord);
    }
    /// <summary>
    /// Changes the layout mode of the keyboard.
    /// </summary>
    /// <param name="mode">The layout mode to use.</param>
    private static void SetKeyboardLayoutMode(KeyboardLayoutMode mode)
    {
      switch (mode)
      {
        case KeyboardLayoutMode.Handwriting:
          registryKey.SetValue("KeyboardLayoutPreference", 0, RegistryValueKind.DWord);
          registryKey.SetValue("LastUsedModalityWasHandwriting", 1, RegistryValueKind.DWord);
          break;
        case KeyboardLayoutMode.ThumbLayout:
          registryKey.SetValue("KeyboardLayoutPreference", 1, RegistryValueKind.DWord);
          registryKey.SetValue("LastUsedModalityWasHandwriting", 0, RegistryValueKind.DWord);
          // 0 = small, 1 = medium, 2 = large
          registryKey.SetValue("ThumbKeyboardSizePreference", 2, RegistryValueKind.DWord);
          break;
        default:
          registryKey.SetValue("KeyboardLayoutPreference", 0, RegistryValueKind.DWord);
          registryKey.SetValue("LastUsedModalityWasHandwriting", 0, RegistryValueKind.DWord);
          break;
      }
    }
  }
}Regards,
Dutch
FWH 2304 / xHarbour Simplex 1.2.3 / BCC73 / Pelles C / UEStudio
FWPPC 10.02 / Harbour for PPC (FTDN)
ADS V.9 / MySql / MariaDB
R&R 12 Infinity / Crystal Report XI R2
(Thailand)
Dutch
FWH 2304 / xHarbour Simplex 1.2.3 / BCC73 / Pelles C / UEStudio
FWPPC 10.02 / Harbour for PPC (FTDN)
ADS V.9 / MySql / MariaDB
R&R 12 Infinity / Crystal Report XI R2
(Thailand)