选中任意应用的文本框,用程序往文本框里面注入中文,C#实现

问题描述

现在我点击一个文本框,这个文本框已经获得焦点,怎么向这个文本框里输入内容?不是我写的程序,是windows里的任意应用,使获得焦点的文本框里注入中文

解决方案

解决方案二:
这个功能看起来简单,实现起来有难度,这个代码是delphi的,主要是用了一些api,楼主参考吧://获取系统屏幕上活动窗口中具有输入焦点的控件句柄functionTTntForm2.GetActiveEdit:HWND;varh:HWND;FormThreadID,CWndThreadID:DWORD;beginresult:=0;//得到当前活动窗口h:=GetForegroundWindow;//取得本程序的线程IDFormThreadID:=GetCurrentThreadId;//取得活动窗口的线程IDCWndThreadID:=GetWindowThreadProcessId(h,nil);//将本程序线程附加入活动窗口线程AttachThreadInput(CWndThreadID,FormThreadID,true);//得到当前键盘光标所在的窗口result:=GetFocus();//取消附加的输入线程AttachThreadInput(CWndThreadID,FormThreadID,false);end;procedureTTntForm2.inputtext(sn:WideString);varh:HWND;i,asc:Integer;begin//返回具有输入焦点的窗口控件句柄h:=GetActiveEdit;//通过消息WM_IME_CHAR发送序列号fori:=1tolength(sn)dobeginasc:=ord(sn[i]);//发送文本到活动控件,用文本内码SendMessageW(h,WM_IME_CHAR,asc,0);end;end;

解决方案三:
引用1楼tcmakebest的回复:

这个功能看起来简单,实现起来有难度,这个代码是delphi的,主要是用了一些api,楼主参考吧://获取系统屏幕上活动窗口中具有输入焦点的控件句柄functionTTntForm2.GetActiveEdit:HWND;varh:HWND;FormThreadID,CWndThreadID:DWORD;beginresult:=0;//得到当前活动窗口h:=GetForegroundWindow;//取得本程序的线程IDFormThreadID:=GetCurrentThreadId;//取得活动窗口的线程IDCWndThreadID:=GetWindowThreadProcessId(h,nil);//将本程序线程附加入活动窗口线程AttachThreadInput(CWndThreadID,FormThreadID,true);//得到当前键盘光标所在的窗口result:=GetFocus();//取消附加的输入线程AttachThreadInput(CWndThreadID,FormThreadID,false);end;procedureTTntForm2.inputtext(sn:WideString);varh:HWND;i,asc:Integer;begin//返回具有输入焦点的窗口控件句柄h:=GetActiveEdit;//通过消息WM_IME_CHAR发送序列号fori:=1tolength(sn)dobeginasc:=ord(sn[i]);//发送文本到活动控件,用文本内码SendMessageW(h,WM_IME_CHAR,asc,0);end;end;

这个我试过了,关键是中文怎么发呀。SendMessage(formHandle,WM_CHAR,key,0);只能模拟键盘,关键是当切换到中文输入法的时候用这个模拟键盘输入不触发输入法。伤脑筋了

时间: 2024-12-21 23:55:54

选中任意应用的文本框,用程序往文本框里面注入中文,C#实现的相关文章

c语言程序读txt文本,有程序没有文本,如何根据程序写文本?谢谢

问题描述 c语言程序读txt文本,有程序没有文本,如何根据程序写文本?谢谢 struct jd { int num,s; double p,q,S,e,f,U,zkj,dp,dq,du,de,df; } jd[M]; struct zhl { int numb; int p1,p2; double r,x; } zhl[M]; FILE *fp1,*fp2; /* 读取数据 / void data() { int h,number; fp1=fopen("input.txt",&quo

select()方法选择文本框中的所有文本

文章简介:select()方法选择文本. <input>和<textarea>两种文本框都支持select()方法,这个方法用于选择文本框中的所有文本.在调用select()方法时,大多数浏览器都会将焦点设置到文本框.这个方法不接受参数,可以在任何时候调用.下面来看一个例子: var textbox = document.forms[0].elements["textbox1"]; textbox.select(); 在文本框获得焦点时选择其所有文本,这是一种非

XP系统弹出Ravmond.exe应用程序错误提示框如何解决

XP系统弹出Ravmond.exe应用程序错误提示框如何解决   原因分析: 此电脑上安装了多套安全软件,Ravmond.exe为瑞星杀毒软件的监控程序,且瑞星工作不正常,最后将瑞星卸载掉后解决该问题. 解决方法: 安全软件建议只要安装一套即可,并不是越多越好,如果安装多套软件反而会出现错误冲突导致系统缓慢.关于应用程序错误,内存不能为read提示的问题,有些是在安装某些程序之后出现的,可以找到出现问题的程序软件,卸载即可解决,无需重装系统.

基于MFC的文档视图应用程序调用组合框设置默认值

问题描述 基于MFC的文档视图应用程序调用组合框设置默认值 基于MFC的文档视图应用程序调用组合框,如何设置默认值,m_szReportLH类型是控件类型,m_szReportLH.SetCurSel(0)这个函数用过了,不好使,在构造函数中试过,出现崩溃,后来我放到OnInitialUpdate()函数中,出不来结果,不知道咋办?求助 更多 0 解决方案 ((CComboBox*)GetDlgItem(控件id))->SetCurSel(n); 是这样写的么?此时组合框内已经有内容了么 贴出代

编程c语言-大家帮帮忙,这个这个程序出黑框了,但是运行结果不正确

问题描述 大家帮帮忙,这个这个程序出黑框了,但是运行结果不正确 大家帮帮忙,这个这个程序出黑框了,但是运行结果不正确,我的程序里男生女生分开了,但是它运行的结果男生女生并没有分开运算! 解决方案 if(a[i].xb=1) 改为:if(a[i].xb==1) if(a[i].xb=2) 改为:if(a[i].xb==2) 解决方案二: 判断用==一个是赋值,必须要十个字--

jsp-JSP包含一个下拉框和一个文本框,如何根据下拉框的值判断文本框是否必填?

问题描述 JSP包含一个下拉框和一个文本框,如何根据下拉框的值判断文本框是否必填? 如题,下拉框有1,2,3,4,5 五个选项,怎么判断下拉框的值,让选择1选项的时候必须填文本框的值,否则不必填.需要在JSP页面上实现. 解决方案 服务器端和客户端都要验证一遍.. <form method="post" onsubmit="return check(this)"> <select name="tp"><option

javascript-在js中 如何用Jquery 获取一个文本框中的值 文本框中ID=A

问题描述 在js中 如何用Jquery 获取一个文本框中的值 文本框中ID=A 在js中 如何用Jquery 获取一个文本框中的值 文本框的ID=a 解决方案 $("#a").val()就是获取ID=A 的input的value值 解决方案二: $("#A").val() 解决方案三: js与jQuery获取文本框的值js获取文本框值JS获取文本框的值----------------------

Yii把CGridView文本框换成下拉框的方法_php实例

本文实例讲述了Yii把CGridView文本框换成下拉框的方法.分享给大家供大家参考.具体实现方法如下: 使用yii的朋友都知道Yii中的CGridView默认显示提文本框了,那么我们要怎么把它转换成下拉框呢?本文就此分析一下解决方法. 默认情况下CGridView会生成一个文本框,但是这并不友好,用户往往希望知道有什么可选的,特别是数据库里存的是数字id的时候,我们希望将数字转换为可读的文本,这时候只需要修改一下表头的"filter"属性就行了,比如: 复制代码 代码如下: <

jQuery简单实现input文本框内灰色提示文本效果的方法_jquery

本文实例讲述了jQuery简单实现input文本框内灰色提示文本效果的方法.分享给大家供大家参考,具体如下: $(function(){ $(".grayTips").each(function(){ //遍历每个文本框 var objTextBox=$(this); var oldText=$.trim(objTextBox.val()); objTextBox.css("color","#888"); objTextBox.focus(fun