タイトルが悪いのかもしれませんが、他にどのように表現すればよいかわかりません。だからここに私が持っているものがあります。
キーボードフックとして機能するプログラムが 1 つあります。F13-F24 をトラップして、ユーザーがこれらのキーを割り当てていくつかの異なるタスクを実行できるようにします。
それを開くことができるプログラムの 1 つは、オンスクリーン キーボードの私たち自身の醸造です。
どちらのプログラムもソース コードを持っていますが、どちらも作成したのではなく、他の人から継承したものです。いくつかのバグを修正するためにコードを見直していたときに、最初のプログラムが 2 番目のプログラムを奇妙な方法で呼び出していることに気付きました。私が好きではない方法。
IntPtr hWnd = new IntPtr();
currentoggle = true;
currentmultiple = false;
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("CustomOsk");
if (p.Length > 0)
{
Globals.trace.TraceInformation("OSK loaded");
string window = "";
switch (currentparms.ToLower()[0])
{
case 's':
window = "Custom OSK AN";
break;
case 'e':
window = "Custom OSK EK";
break;
case 'n':
window = "Custom OSK NP";
break;
default:
window = "";
break;
}
if (!string.IsNullOrEmpty(window))
{
hWnd = User32.FindWindow(null, window);
if (hWnd != IntPtr.Zero)
{
User32.PostMessage(hWnd, WM_TOGGLEONOFF, IntPtr.Zero, IntPtr.Zero);
Globals.trace.TraceInformation("ProcessKeyboard()-");
return true;
}
}
}
Globals.trace.TraceInformation("OSK Start");
System.Diagnostics.Process.Start(System.Windows.Forms.Application.StartupPath + "\\CustomOsk.exe", currentparms);
Globals.trace.TraceInformation("ProcessKeyboard()-");
ソースコードを入手したときにカスタム OSK がオンになっているかどうかを確認するために、すべてのプロセスを調べる必要はないと思います。なんらかの形で直接電話できるようになればいいなと思います。そこで、 Mutex ステートメントを利用できれば、そのMutexポインターを見つけて、そのポインターにメッセージを送信してカスタム OSK の状態を変更できるのではないかと考えました。将来、どちらかのプログラムをより複雑にしたい場合、うまく機能しません。
この時点で、周りに尋ねて、これに対する良い解決策は何かを尋ねるのは良い考えだと思いました。
私が持っていたもう1つの考えは、OSKをライブラリにするのはばかげているのではないかということです。その後、キーボードフックプログラムでそのライブラリを参照するだけです。オン スクリーン プログラムを別のプログラムとして開くことができるように、このライブラリを再度呼び出す別の非常に単純なプログラムを作成することができます。私にはそれが最善のように思えますが、私が既に行っていることに対して別の解決策があるかどうかを知りたいです. あなたの考え
問題を明確にするために編集