問題タブ [keypress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1656 参照

javascript - キー押下コンテキストのJavaScript検出(フォーム履歴の選択とフォームの送信)

作業中のプロジェクトの開発をスピードアップするために、jQueryを使用してセミジェネリックフォームプラグインを作成しています。

計画では、jTemplatesテンプレートにフィールドが含まれ、プラグインはテンプレートを調べて必要な多言語リソースを見つけ、サーバーからそれらを要求し、すべてをJavaScriptオブジェクトにパッケージ化して、上のカスタム関数に渡します。 "参加する"。

フォームを偽造するときに実行する必要のある標準の「Enterキーを押したら、フォームを送信する」コードを除いて、すべてがうまく機能しています。

問題は、Firefoxでは(少なくとも、他のブラウザはまだチェックしていません)、以前に同じ名前のテキストボックスに情報を入力したことがある場合は、フォームの履歴が表示されることです。次に、Enterキーを押してこれらの推奨値のいずれかを選択すると、フォームが送信されます。ページの最初の入力をしている場合は、あまり良くありません。実際、かなり面倒です。

明らかな解決策は、フィールドの周りにフォーム要素を挿入し、jQueryを介したこのダミーフォームの送信を停止することです。幸い、ASP.NET MVCを使用しているので、これを実行する余裕がありますが、そうでない場合はどうなりますか?プラグインがすでにフォーム内にあるかどうかを知らなかったため、プラグイン自体を保持する必要があった場合はどうなりますか?標準のWebFormsASP.NETを使用していて、各入力のリターンキーを正しい送信ボタンに手動で「ターゲティング」する必要がある場合はどうなりますか?

おそらくイベントオブジェクト自体を介して、キー押下のコンテキストを検出し、フォーム履歴アイテムの選択を除外できるようにする方法はありますか?

0 投票する
5 に答える
22451 参照

c# - ユーザーのキープレスでデータグリッドビューを検索

ユーザーが押したのと同じキー文字でセル値が始まる最初の行を選択しようとしています。それが私を悩ませている部分です。

これが私がイベントを処理する方法です(作業ソリューションで更新されました):

私が見落としているのは単純なことだと確信していますが、私の人生では、それが何であるかを理解することはできません.

編集

ソリューションを適用してコードを更新しました

0 投票する
4 に答える
2916 参照

c# - アクティブでないアプリケーションでマウスの移動/クリック/キープレスをシミュレートする

マウスとキーボードのイベントをシミュレートする方法は知っていますが、それらはユーザーが行ったかのように動作するため、アクティブなウィンドウに影響します。私が必要としているのは、これらの入力の 1 つをシミュレートすることですが、アクティブではないウィンドウ内にあります。

最小化されていると言っているわけではありません。たとえば、msPaint とメモ帳があるとします。メモ帳はペイントの前にあります。また、ペイント ウィンドウの特定の座標でマウス クリックをシミュレートしたいが、アクティブに設定せずに、ユーザーがペイントの前にあるメモ帳を使い続けることができるようにします。

これはまったく可能ですか?ありがとう!

私はこれを試しました:

しかし、それは機能しません=(何もしません:(

0 投票する
5 に答える
43465 参照

c# - SendMessage または PostMessage 呼び出しの使用方法がわかりません

サードパーティのアプリケーションでキープレスをシミュレートする必要があります。電卓アプリケーションに "8" を送信する必要がある C# アプリケーションがあるとします。.Net の SendKeys または win32 api の keybd_event を使用することはできません。どちらもウィンドウを一番上にアクティブにする必要があるためです。これは私の状況では当てはまりません。

そのため、sendMessage と postMessage の呼び出しが残ります。過去 3 時間、何らかの結果を得ようと努力してきましたが、今は完全に絶望的です。

私は次のものを持っています:

ご覧のとおり、電卓との通信を 4 回試行します。sendMessage と PostMessage の両方を使用してウィンドウを閉じ、キーを送信する 7. 何も機能しません。FindWindow メソッドが機能するため、アプリのハンドラーを取得できます (プロセスを自分で起動して、process.MainWindowHandler でアクセスしようとしましたが、うまくいきませんでした)。エラーや例外はありませんが、電卓では何もしません。

メモ帳でもまったく同じことを試しましたが、何も変わりませんでした。

0 投票する
1 に答える
180 参照

windows - キー押下を報告するWindowsプログラム

問題:仮想マシンのゲストオペレーティングシステムとしてWindowsを使用しており、ファンキーなキーボード設定を行っています。キーボードのホットキーの組み合わせが正しく機能していない場合のトラブルシューティングを行う方法が必要です。

質問:インストールされているキーボードのキーまたはキーの組み合わせを押すたびに、キーを押すとウィンドウがどのように表示されるかを画面にすばやく簡単に表示するプログラムを知っている人はいますか?

0 投票する
2 に答える
1174 参照

windows - アプリケーションのアクティブな ChildWindow を取得するには?

この問題があります。特定のアプリケーションの mainWindow へのハンドラーがあり、そのアプリケーションでキープレスをシミュレートしたい...

これを行うために sendMessage/postMessage API 呼び出しを使用しています。.Net SendKeys 関数または win32 API の keybd_event を使用しない理由は、それらがグローバル レベルでキープレスをシミュレートするためです。私の場合、アプリケーションを最小化しても、キープレスをシミュレートしたい場合があります。

sendMessage と postMessage の問題は、キーを押したい正確な子ウィンドウのハンドラーを渡す必要があることです。たとえば、メモ帳では、キーを mainWindow に送信しても何も起こらず、基本的に書き込み可能な白いキャンバスで構成される子ウィンドウにキーを送信する必要があります。

たとえば、msPaint では、ユーザーが新しいドキュメントを作成し、その図面でテキスト ボックスを開き、そこでキー押下をシミュレートしたい場合、メインウィンドウの子ウィンドウの子ウィンドウを取得して動作させる必要があります。

そこで、あらゆる状況でうまくいくと思われる方法を見つけました。基本的には、パラメータ GW_CHILD を指定して getWindow を使用し、Z 値が最も高い子ウィンドウを取得しました。次に、子ウィンドウに対してもう一度実行し、特定の childWindow に childWindows がなくなるまで実行を続けます。

そしてそれはうまくいったようで、私はとても幸せでした!

しかし...これが機能しないケースを見つけました。Firefox はその 1 つです。Firefox には mainWindow があり、次に mainWindow とほぼ同じ childWindow があり、さらに別の childWindow があります。これはウェブサイト領域、つまりアドレスバーとメニューの下の領域です。たとえば、私が www.google.com にいて、フォーカスされた検索ボックスでキープレスをシミュレートしたい場合、それは機能します。子ウィンドウの子ウィンドウを取得すると、正しい childWindow が得られます。ただし、たとえばユーザーがアドレス バーをクリックしても、getWindow の動作は何も変わりません。アドレスバーのキープレスをシミュレートする代わりに、アドレスバーの下にある子ウィンドウを最終的に取得し、何もしません。

問題は、特定のアプリケーションのアクティブな子ウィンドウを取得する方法が見つからないことです。GetWindow メソッドを使用して特定のウィンドウの子ウィンドウを取得し、子ウィンドウのない子ウィンドウが見つかるまでそれを実行することしかできません。ただし、Firefox のケースで見たように、アクティブなウィンドウは実際には、最終的に得られる子ウィンドウの親です。

getTopWindow などの他の API 呼び出しを試しましたが、うまくいきませんでした..

誰でもこの問題に光を当てることができますか? ありがとう!