0

キーボード フック プロジェクトを引き継ぎ、少し手直ししました。以前は、これら 4 つのファイルにすべてのロジックと数学が含まれていた 4 つのフォームだけでした。そのため、何時間も後、すべてを切り離した後、プログラムを元に戻そうとしました最新のビットは、メイン ウィンドウで Model-View-Presenter デザイン コンセプトを使用することです。すべてのテストは自分のマシンで問題なく動作し、プログラムはターゲット コンピューターで正常に動作します。

ターゲット コンピューターは、2 GB の RAM を搭載した単純な x86 Intel Atom プロセッサです。それらには、キーボードの F13-F18 に対応するボタンがあります (ここで、私のキーボード フック プログラムが機能します)。私の開発用 PC は、8 GB の RAM を搭載したセミスタウトの 6 コア AMD x64 マシンです。私がやりたかったことの 1 つは、これらの機能ボタンを特定のタスクに設定する方法をテストすることでした。私の単体テストはすべて、この部分に合格します。新しいタスク タイプをクリックすると、希望どおりに機能します。

「かっこいい」「実際に見てみましょう」と言うので、Visual Studioで実行します。私のプログラムでは、F9-F12 がフックするキーです。メイン ウィンドウが開いているときに、フックされたキーの 1 つを押したときにのみ、割り当てウィンドウが開きます。そのメイン ウィンドウが開いていない場合は、タスクが実行されます。メイン ウィンドウを開いて F9 キーを押すと、割り当てウィンドウが表示されますが、約 4 秒間何もクリックできません。次に、「追いつき」、クリックしたことを実行します。おそらく私のデバッガーだと思ったので、binフォルダーに移動して、アプリケーションを直接実行しましたが、同じ取引でした。

パーミッションの問題かもしれないと思ったので、管理者として実行しても同じ問題が発生しました。対象のコンピューターにどれだけ悪影響を与えるのだろうと思いました。bin フォルダーをフラッシュ ドライブにコピーし、コンテンツを Program Files にコピーして実行しました。それはうまく機能しました(ある程度うまくいきました)しかし、問題は存在しませんでした. ダイアログが表示されたら、すぐに必要なタスクを選択できます。

奇妙なことの1つは、キーボードフックを11回再割り当てしようとした後、キーボードフックが機能しなくなることです...しかし、それは別の質問です。だから私は誰かがプロファイラーを使うと言ったのを覚えていると思いました。私のビジュアルスタジオには1つあったので、それをオンにしましたが、返されたデータの頭または尾を作成できません。コードを投稿したいのですが、何を投稿すればよいかわかりません。System.Console.Write("."); 問題だと思っていた周辺まで使ってみたけど問題なかった

protected override void theHook_RegisteredKeyPressed(System.Windows.Forms.Keys key)
{
    if (TakeOver)
    {
        if (!Busy)
        {
            busy = true;
            LibraryTrace.Start("NewKeyAssignment", key);
            using (var window = new AssignmentTypePanel())
            {
                presenter = new TaskPresenter(window, theList[key].Task);
                window.Presenter = presenter;
                //execution will not continue past here until window is closed
                window.ShowDialog();
            }
            theList[key] = new TaskKey(key, presenter.Task);
            LibraryTrace.End("NewKeyAssignment", theList[key].Task.ToString());
            busy = false;
        }
   }
   else
   {
       base.theHook_RegisteredKeyPressed(key);
   }
}

だから私は立ち往生しています。何を入力すればよいのか、何を尋ねればよいのかわかりません。この問題の根本を見つける方法に関するヒントはありますか?

4

1 に答える 1