任意のアプリケーションに貼り付け(ctrl + v)イベントをトリガーする方法はありますか?
-
06-07-2019 - |
質問
ctrl + v(以下を参照)を送信することにより、サードパーティアプリケーションへのPASTINGをトリガーするコードがありますが、これはCITRIXでは機能しないようです。 keybシミュレーション以外にctrl + vをトリガーする方法はありますか?
keybd_event(VK_CONTROL, Lo(MapVirtualKey(VK_CONTROL,0)), 0,0);
keybd_event(86, Lo(MapVirtualKey(86,0)), 0,0);
keybd_event(86, Lo(MapVirtualKey(86,0)), KEYEVENTF_KEYUP,0);
解決
ああ、Citrixの素晴らしい問題!
- 最初に受信側アプリケーションで、クリップボードに実際に何かがあることを確認します。手動で貼り付けてみてください。空の場合は、自動化/キーボードフックの問題ではありません。
- クリップボードのコンテンツが実際に利用可能な場合、受信アプリケーションと通信するためのさまざまな方法を試してみます:Windowsメッセージ(WM_PASTE、ただし、通過できるかどうかを確認できない場合はその他)を送信しますが、 DDEを実行できます。
他のヒント
たぶん、WM_PASTEメッセージをアプリケーションに送信できますか?
を試すことができます。
ポルトガル語で記事を書きましたが、コードは読むことができます。簡単です。
http://www.cesarromero.com.br/simulando- keypress-com-postkeyex32 /
CTRL + Vmは次のように送信できます:
PostKeyEx32(Ord('V'), [ssCtrl], False);
ここでの重要な声明は、CITRIXによるものだと思います。
citrixアプリケーションとの相互通信に関する私の経験では、通常のデスクトップで正常に動作する多くのものが、citrix環境で実行すると失敗します。 Gamecatが示唆したように、最初にWM_PASTEメッセージを送信しようとします。それが失敗した場合、デスクトップのショートカットから直接アプリケーションを実行するのではなく、クライアントがcitrixデスクトップを介してアプリケーションを実行していることを確認することができます。 citrixアプリケーションが外部ショートカットから起動された場合、citrixデスクトップの内部ショートカットから起動された場合とは異なるセッションを取得します。
所属していません StackOverflow