i'm found interesting code for C#.how adapt it for basic?
B4X:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Globalization;
using System.Windows.Forms;
namespace HotKey
{
public static class CurrentCultureInfo
{
#region Fields & Properties
private static int lpdwProcessId;
private static InputLanguageCollection installedInputLanguages = InputLanguage.InstalledInputLanguages;
private static CultureInfo currentInputLanguage;
public static string InputLangTwoLetterISOLanguageName
{
get { return CurrentCultureInfo.currentInputLanguage.TwoLetterISOLanguageName; }
}
public static string InputLangThreeLetterWindowsLanguageName
{
get { return CurrentCultureInfo.currentInputLanguage.ThreeLetterWindowsLanguageName; }
}
public static string InputLangThreeLetterISOLanguageName
{
get { return CurrentCultureInfo.currentInputLanguage.ThreeLetterISOLanguageName; }
}
public static string InputLangNativeName
{
get { return CurrentCultureInfo.currentInputLanguage.NativeName; }
}
public static string InputLangName
{
get { return CurrentCultureInfo.currentInputLanguage.Name; }
}
public static int InputLangLCID
{
get { return CurrentCultureInfo.currentInputLanguage.LCID; }
}
public static int InputLangKeyboardLayoutId
{
get { return CurrentCultureInfo.currentInputLanguage.KeyboardLayoutId; }
}
public static string InputLangEnglishName
{
get { return CurrentCultureInfo.currentInputLanguage.EnglishName; }
}
public static string InputLangDisplayName
{
get { return CurrentCultureInfo.currentInputLanguage.DisplayName; }
}
#endregion
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern int GetWindowThreadProcessId(IntPtr handleWindow, out int lpdwProcessID);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetKeyboardLayout(int WindowsThreadProcessID);
public static int GetKeyboardLayoutIdAtTime()
{
IntPtr hWnd = GetForegroundWindow();
int WinThreadProcId = GetWindowThreadProcessId(hWnd, out lpdwProcessId);
IntPtr KeybLayout = GetKeyboardLayout(WinThreadProcId);
for (int i = 0; i < installedInputLanguages.Count; i++)
{
if (KeybLayout == installedInputLanguages[i].Handle) currentInputLanguage = installedInputLanguages[i].Culture;
}
return currentInputLanguage.KeyboardLayoutId;
}
}
}