请高手指点,在后台监听服务里怎么将剪贴版的内容复制到其他程序的当前焦点所在的输入框里?

bugu66 2011-03-04 02:55:38
如题。
...全文
44 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
叫我三三 2011-03-11
  • 打赏
  • 举报
回复
/// <summary>
/// 调用这个方法
/// </summary>
/// <param name="winFormName">指定窗体的标题</param>
/// <param name="Sendstr">要传的条码</param>
/// <returns>1成功 0失败</returns>
public int SendMessageToWin(string winFormName,string Sendstr)
{
int WINDOW_HANDLER = FindWindow(null, @winFormName);
if (WINDOW_HANDLER != 0)
{
byte[] sarr = System.Text.Encoding.Default.GetBytes(@Sendstr);
int len = sarr.Length;
COPYDATASTRUCT cds;
cds.dwData = (IntPtr)13579;//13579 这个ID随便换 看接收方怎么设的
cds.lpData = this.textBox1.Text;
cds.cbData = len + 1;
return SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);
}
else
{
return 0;
}
}
叫我三三 2011-03-11
  • 打赏
  • 举报
回复

using System.Runtime.InteropServices;

const int WM_COPYDATA = 0x004A;
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(
int hWnd, // handle to destination window
int Msg, // message
int wParam, // first message parameter
ref COPYDATASTRUCT lParam // second message parameter
);

[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern int FindWindow(string lpClassName, string
lpWindowName);

public int SendMessageToWin(string winFormName,string Sendstr)
{
int WINDOW_HANDLER = FindWindow(null, @winFormName);
if (WINDOW_HANDLER != 0)
{
byte[] sarr = System.Text.Encoding.Default.GetBytes(@Sendstr);
int len = sarr.Length;
COPYDATASTRUCT cds;
cds.dwData = (IntPtr)13579;
cds.lpData = this.textBox1.Text;
cds.cbData = len + 1;
return SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);
}
else
{
return 0;
}
}
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
bugu66 2011-03-11
  • 打赏
  • 举报
回复
有人知道怎么做吗
bugu66 2011-03-04
  • 打赏
  • 举报
回复
真实的需求是这样的:
当扫描到一个条码的时候,
我想让后台服务获取条码,然后把条码复制到当前窗口的输入框内。
当前窗口可以是任务程序。只要是输入框,就复制过去
wuyq11 2011-03-04
  • 打赏
  • 举报
回复
SendTxtMessage(hwdText, WM_SETTEXT, 0, strText.ToCharArray());
findwindow查询句柄
clipboard
超银 2011-03-04
  • 打赏
  • 举报
回复
可以用windows消息把数据穿过去,然后把剪切板的数据赋给输入框,比如用SendMessage。前提是知道那个进程的标题。和接收消息的进程要重写windows消息接收方法。
方法应该很多,你Google下应该很多吧,以前做过,忘了。~~~

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧