任意のアプリケーションに貼り付け(ctrl + v)イベントをトリガーする方法はありますか?

StackOverflow https://stackoverflow.com/questions/1032287

  •  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の素晴らしい問題!

  1. 最初に受信側アプリケーションで、クリップボードに実際に何かがあることを確認します。手動で貼り付けてみてください。空の場合は、自動化/キーボードフックの問題ではありません。
  2. クリップボードのコンテンツが実際に利用可能な場合、受信アプリケーションと通信するためのさまざまな方法を試してみます:Windowsメッセージ(WM_PASTE、ただし、通過できるかどうかを確認できない場合はその他)を送信しますが、 DDEを実行できます。

他のヒント

たぶん、WM_PASTEメッセージをアプリケーションに送信できますか?

PostKeyEx32

を試すことができます。

ポルトガル語で記事を書きましたが、コードは読むことができます。簡単です。

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デスクトップの内部ショートカットから起動された場合とは異なるセッションを取得します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top