2016-05-20 4 views
0

たとえば、DateTimeを貼り付けるアプリケーションを、アクティブなウィンドウに1つのボタンを押してコード化したいとします。例えばプログラムによってアプリケーションが所有していないアクティブなウィンドウにテキストを挿入

:私のアプリケーションは

  • (たぶんsystemtray)backroundの中で実行されている

    • 私は「ニュース」と入力Google Chromeを使用して、世界中の
    • が起こっていただきました!知りたいのですF7(または他のプログラムされたキー)
    • 私のアプリケーションでは、が押されたことを検出しましたNow.ToShortDateStringをGoogle Chrome
    • のアクティブ Cursor Positionに貼り付けました

    これは可能ですか?私はすでにWindowsフォームAPIを使用して私のフォームbeeingを有効にしてKeyPressesをつかむ方法を見つけたuser32.dll

    私はまた、clipboardを避けたいと思います。

    • :私が技術を切り替えることを決めた私自身の各キーストロークをシミュレートする必要があるようですので

      : そうでなければ、例えば

      Dim clipb As String= My.Computer.Clipboard.GetText() 
      My.Computer.Clipboard.SetText(Now.ToShortDateString) 
      'simulate CTRL+V 
      My.Computer.Clipboard.SetText(clipb) 
      

      UPDATEを使用することができますクリップボードを保存する

    • クリップボードを上書きする
    • シミュレートCTRL + V
    • は、ユーザーがクリップボード

    を復元私はそのために、次のコードを記述するために管理:

     Dim UserClipboard As Object = My.Computer.Clipboard.GetDataObject() 
         My.Computer.Clipboard.SetText(Now.ToString) 
         System.Windows.Forms.SendKeys.Send("^(v)") 
         My.Computer.Clipboard.SetDataObject(UserClipboard) 
    

    それは、コピーしたファイルのために働いているようです。 代わりにMy.Computer.GetText()My.Computer.SetText(UserText)を使用した場合、Textではうまくいきます。どの機能を使うべきかをアプリケーションに伝える方法を理解できません。

    はまた、このいずれかのWinWord ソリューションでCTRL+V doesntの仕事をシミュレートすること、そうです:私はテキストに下線を引くためWINWORD自身によって使用されkeysendsをシミュレートするためのCTRL + SHIFT +のUを使用していました。

  • +1

    Win32 SendMessage関数を使用します。 – Dai

    答えて

    0

    可能です。たとえば、Windows APIを使用してすべてのウィンドウを列挙し、ターゲットウィンドウを見つけ、それに対するキーストロークをエミュレートすることができます。

    Visual Basicからその方法を教えることはできません。私は10年前と同じようにVisual C++からしかできませんでした。

    Keypassは、ユーザー名とパスワードをそのように挿入するオープンソースのパスワード保護ツールです。あなたはそのソースコードをどのように見ることができます。

    関連する問題