0

たとえば、C# Windows フォーム アプリケーションのテキスト ボックスまたはリッチ テキスト ボックスからフォームの外側にテキストを貼り付けたいとします。

//on a button click event
textbox1.text=Clipboard.SetText();  // this will set text to clipboard 

FirefoxまたはGoogle chromeのアドレスバーをクリックすると、Windowsフォームアプリケーションに入力したのと同じテキストが表示されるようになりました.CTRL + Vで実行できますが、C#プログラムでそれを実行して取得しますアドレスバーをクリックしたり、フォルダーの名前を変更したりするたびに、クリップボードからのテキスト。

4

2 に答える 2

0

これは完全にテストされておらず、C# でこれらの DLL 呼び出しを使用したことはありませんが、うまくいけばうまくいくか、少なくとも近づくでしょう...

public class Win32
{
   public const uint WM_SETTEXT = 0x000c;

   [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
   public static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, string lParam);

   [DllImport("user32.dll")]
   static extern IntPtr WindowFromPoint(int xPoint, int yPoint);
}

コードの他の場所...

IntPtr theHandle = WindowFromPoint(Cursor.Position.X, Cursor.Position.Y);

if (theHandle != null)
{
   long res = Win32.SendMessage(theHandle, WM_SETTEXT, IntPtr.Zero, Clipboard.GetText());
}

注:WindowFromPiontウィンドウ自体のハンドルではなく、別のウィンドウの子コントロール(つまり、実際のテキストボックス)のハンドルを取得するかどうかは完全にはわかりません。カーソル位置で子を見つける必要がある場合があります。残念ながら、私がこのようなことをしたのは久しぶりです。

また、ウィンドウ ハンドルの取得についてより詳しく知りたい場合は、次の質問を参照してください: c# でマウス クリックに基づいてアクティブなウィンドウ名を取得する

于 2013-07-03T11:04:39.700 に答える