1

タッチスクリーンモニター用のwinformアプリに取り組んでいます。このアプリは、Web ブラウザーとオンスクリーン キーボードで構成されています。必要なものはほとんど揃っていますが、問題は英語と韓国語の 2 つの入力言語があることです。2 つの言語を使い慣れている人なら誰でも、正しいaltキーを使用して言語間を行き来できることを理解できます。このキーストロークをシミュレートする必要がありますが、何も見つかりません。

shift左/右キー、および左/右キーをシミュレートする方法を見つけましたctrl。しかし、左右のaltキーには何もありません。

代替手段はありますか?

4

4 に答える 4

2

入力言語を変更するためにAlt+Shiftキーストロークをシミュレートする必要はありません。名前空間InputLanguageでクラスを使用できます。System.Windows.Forms

        var currentLang = InputLanguage.CurrentInputLanguage;
        var installedLangs = InputLanguage.InstalledInputLanguages;
        if (installedLangs.Count > 1)
            InputLanguage.CurrentInputLanguage =
                installedLangs[1 - installedLangs.IndexOf(currentLang)];

正確に2つの入力言語がインストールされている場合、このコードフラグメントはそれら2つを切り替えます。あなたはその考えを理解します。右?

于 2012-02-17T15:16:43.230 に答える
2

keycodekeybd_eventで使用できます。キーコードの完全なリストはこちらRALTVK_RMENU

次のようにキーストロークをP/Invokeする必要があります。

[DllImport("user32.dll", SetLastError = true)] 
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);  

public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag 
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag 
public const int VK_RMENU = 0xA5;

keybd_event(VK_RMENU, 0, KEYEVENTF_EXTENDEDKEY, 0); 
keybd_event(VK_RMENU, 0, KEYEVENTF_KEYUP, 0); 
于 2012-02-17T15:10:43.730 に答える
1

Alt キーを送信する方法を見つける必要はありませんよね? 本当に欲しいのは、入力言語を変更できることです。その場合は、ソースに直接アクセスしてください。

Windows API には、現在アクティブなキーボード レイアウトを変更するメソッドがあります。これらは .NET Framework の一部ではありませんが、P/Invoke を使用して C# から呼び出すことができます。

ActivateKeyboardLayout の MSDN ドキュメントはこちらです。

また、P/Invoke シグネチャはここにあります。

于 2012-02-17T15:11:36.373 に答える
1

MSDNは、RMenuright-alt の列挙型エントリを提供します。

于 2012-02-17T15:11:45.850 に答える