这是完全未经测试的,我从来没有在 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
会得到另一个窗口的子控件(即实际的文本框)的句柄,而不是窗口本身的句柄。您可能必须通过光标位置找到孩子。不幸的是,我已经很久没有做过这样的事情了。
另外,如果您想通过获取窗口句柄来获得更高级的信息,请参阅以下问题:getting active window name based on mouse clicks in c#