問題タブ [sendinput]
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.
.net - SendInput と 64 ビット
以下は、SendInput API を介してキーの押下をシミュレートするために使用している一部のコードの抜粋です。アプリケーションを x86 CPU 用にコンパイルするように設定した場合、これは正しく機能しますが、x64 CPU コンパイルでは機能しません。
x64がダブルサイズのポインターを使用しているという事実と関係があると思いますが、これ[FieldOffset(4)]
をこれに変更しようとしまし[FieldOffset(8)]
たが、うまくいきませんでした。
user32.dll の 32 ビット バージョンをインポートしているという事実と何か関係があるのでしょうか?
macos - アクティブなアプリケーションにUnicode文字を送信するにはどうすればよいですか?
WindowsAPIのSendInputのようなものが必要です。
私はこの方法を見ましたが、Unicode文字を仮想キーコードに変換する方法があるかどうかはわかりません。
c# - フォーカスを設定せずにキー「MediaPlayPause」をアプリケーションに送信する
メディア キー入力 ( 、 など) をアプリケーションに送信するプログラムを作成してMediaPlayPause
いMediaNextTrack
ますIntPtr
。仮想リモコンのようなもの。
そのため、調査した結果、これを見つけました。これは、問題を解決する方法をほぼ正確に示しています。
ただし、リンクに記載されているアプローチには 3 つの問題があります。
- アプリケーションをフォーカスする必要があるため、アプリケーションをフォアグラウンド ウィンドウとして設定できません。
- 彼らは、ターゲット ウィンドウをフォーカスする必要があるSendKeys関数を使用しており、問題 1 に反しています。
- 私の知る限り、SendKeysはキーボードの再生/一時停止ボタンなどのキーボード ボタンを送信できません。
最後に、何を使用する必要があるかについてかなり混乱しています(SendInput
?、SendMessage
?)。
どんな助けでも大歓迎です。
編集
受け取った回答を使用して、以下のサンプル コードをハッキングしました。
理論的には、メモ帳を見つけて「L」の文字を挿入することになっています。
ただし、メモ帳には何も表示されず、アプリケーションがクラッシュすることもありません。私が見逃している明らかなエラーはありますか?
c# - 私のアプリは、SendKeysまたはSendInputから送信されたキーストロークを認識しませんが、キーボードからは認識します
たくさんのホットキーが定義された自家製のアプリ(マスター)があります。別の外部アプリ(コントロール)でアプリを自動化する必要があります。マスターアプリを再構築できません。実行され、既にインストールされており、混乱することはありません。
キーボードを使用する場合、マスターでホットキーを使用することは魅力のように機能します。
したがって、SendKeys.SendWaitまたはSendKeys.Sendを使用してコマンドを送信すると思います。私のコードは他のアプリ(メモ帳など)では正常に機能しますが、カスタムアプリのマスターでは機能しません。これにはいくつかの理由が考えられます-マスターは古く、.NET、C++が混在しています...いくつかの低レベルのビデオコントロール...誰が隠れているのかを知っています。
もっと高いレベルを取得する必要があります。キーストロークをキーボード自体からのものであるかのように送信できる必要があります。コンピューターが、キーを送信する物理キーボードとキーを送信するアプリを区別できるようにしたくありません。
何を使用できますか?また、どのように異なりますか?
delphi - SendInput(Edit1.Text) を使用してロシア語 (キリル文字または Unicode) 記号をコピーできない
どうすればユニコードを追加できますか? を使用してロシア語 (キリル) 記号をコピーする方法についての提案SendInput(Edit1.Text);
c++ - C++ 関数の各行が何をしているのか説明できますか? キーストロークを送信しますが、どのように混乱していますか
キーストロークを別のウィンドウに送信するプログラムを作成していて、すべて機能するようになりましたが、オンラインでキーストローク部分自体を実行する関数を見つける必要がありました。動作しますが、実際に何をしているのかわかりません。誰かがこの関数の各行にコメントして、それが何をしているのかを説明できますか?
これを呼び出す例を次に示します。
これにより、キーストローク 'c' が送信されます。
この関数は大文字でのみ機能し、特定の 16 進コードでのみ機能するようです。たとえば、キャリッジ リターン (Enter キー) を送信するには、次のように呼び出します。
ただし、これらの呼び出しのいずれかで疑問符 (hex 0x3F) を送信しようとしても、何も起こりません。
なぜそれらが機能しないのか、誰にもわかりますか?
また、誰かが 2 番目の引数 BOOL bExtended の目的を説明できますか? TRUE と FALSE の間で変更しても、送信されるキーストロークに違いはないようです。
c# - Windows デスクトップがロックされているとキー ストロークのシミュレーションが失敗する
Windows Input Simulatorを使用するアプリケーションがあります。これを使用して、親アプリケーションへの Ctrl-S キーストロークをシミュレートします。Windows デスクトップがロックされている場合、例外が発生します
例外: CONTROL のキー ダウン シミュレーションが成功しませんでした。WindowsInput.InputSimulator.SimulateKeyDown (VirtualKeyCode keyCode) で WindowsInput.InputSimulator.SimulateModifiedKeyStroke (VirtualKeyCode modifierKeyCode、VirtualKeyCode keyCode) で
これが私のコードです:
何か案は?
winapi - Windows APIが特定のアプリケーション(Mozilla Firefoxなど)の「入力メッセージ」/イベントの作成に失敗する
特にMozillaFirefoxで、Windows7環境でユーザーのクリックとマウスの移動をエミュレートしようとしています。さまざまなチュートリアル、フォーラムの投稿、MSDNドキュメントからまとめたソリューションは、そこにあるWindowsアプリケーションの99%で機能しますが、Firefox8.0では機能しません。
私の予備調査によると、Windowsでキーボードとマウスの入力をエミュレートする最も正確な(低レベルの)方法は、User32.dllWindowsライブラリのSendInput関数を使用することです。これをテストするために、マウスカーソルが画面上のどこにあるかに関係なく、ループスルーしてSendInputを呼び出し、5秒ごとにプログラムによるマウスクリックを作成する短いC#プログラムを作成しました。
実行すると、プログラムは、フォーカスを切り替えるほぼすべてのアプリケーションウィンドウ(Windowsインターフェイス自体(スタートボタン、タスクバー、Windowsエクスプローラーなど)を含む)のマウスクリックを完全にエミュレートしますが、カーソルを移動してもプログラムによるマウスクリックは発生しません。 MozillaFirefoxウィンドウに。
内部で何が起こっているかをより適切に処理するために、Microsoft Spy ++を起動し、Firefoxウィンドウのメッセージキューに実際に渡されているメッセージを調べ始めました。案の定、Firefoxウィンドウは、フォーカスがかかっている間、カーソルがその真上に置かれていても、メッセージを受信しませんでした。マウスを手動でクリックすると、Firefox Spy ++リスナーが混乱し、エミュレーションプログラムに対する他のアプリケーションの正しい応答を観察したときに表示された完全な「nHittest:HTCLIENTwMouseMsg:WM_LBUTTONDOWN」が表示されます。
誰かがMozillaFirefoxがSendInput関数からメッセージをまったく受信しない唯一のアプリケーションの1つである理由と、おそらくこれを克服する方法についての提案を提供できますか?
ソースコード (わかりやすくするためにインポート/外部参照は削除されています):
c# - Microsoft Word を含む他のアプリケーションに文字列を送信する方法
これを達成しようとしましたが、良い結果が得られませんでした。GetForegroundWindow()、AttachThreadInput(uint,uint,bool)、および GetFocus() 関数を使用して、文字列を別のウィンドウに送信しました。メモ帳、ワードパッド、その他のアプリケーションでは機能しますが、Microsoft Word では機能しません。
これは私が持っているコードですが、Word では機能しません。Word がカスタム コントロールを使用していることは知っていますが、これを処理する別の方法が必要だと思います。
例: Windows 音声認識は、Word であっても、フォーカスのあるすべてのアプリケーションにテキストを送信します。彼らが手動で入力したとは思わない。
SendInputs 関数を使おうと思ったのですが、作り方がわかりません。
c++ - Qt - C++ シミュレート キープレス
私は Qt で単純なボットを作成しようとしています。そのため、Qt アプリケーション自体の外側でキーボードの押下をシミュレートする方法が必要です。
「古い」keybd_eventを使用してこれを可能にしました
そしてそれはうまくいきます。しかし、一度に 2 つのボタンを押す必要がある「すべて選択」コマンドを実行しようとすると、それができません。
Google で問題を調査したところ、「この関数 (keybd_event) は置き換えられました。代わりに SendInput を使用してください。
現在の問題は、Windows API、特に「Qt」のコンテキストについてほとんど知識がなく、開始方法についてのガイダンスが必要なことです。