获取控件句柄后,如何把值传递给该控件!

问题描述

制作一个简单的程序,窗体上一个CLICK按钮!点击按就触发事件!首先判断是否存在特定程序(该特定程序有一个密码文本框,一个“确定”和一个“取消”按钮),给密码框填入密码(获取密码框句柄,把密码传递给密码框),模拟点击“确定”按钮,实现自动登陆!现在把代码发给大家,大家帮我看一下,我的值为什么无法传递给密码框。声明部分:[DllImport("user32.dll")]publicstaticexternIntPtrFindWindow(stringlpClassName,stringlpWindowName);[DllImport("user32.dll")]publicstaticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);[DllImport("user32.dll",CharSet=CharSet.Unicode)]publicstaticexternIntPtrPostMessage(IntPtrhwnd,intwMsg,IntPtrwParam,IntPtrlParam);[DllImport("User32.dll",CharSet=CharSet.Auto)]publicstaticexternboolSetWindowText(IntPtrhwnd,stringlpString);CLICK部分:privatevoidbutton1_Click(objectsender,EventArgse){IntPtrhwnd_win;IntPtrhwnd_button;IntPtrhwnd_password;hwnd_win=FindWindow(null,"输入口令");//窗口的名称,获取窗口句柄hwnd_button=FindWindowEx(hwnd_win,newIntPtr(0),null,"确定(&O)");//获取确定按钮的句柄hwnd_password=FindWindowEx(hwnd_win,newIntPtr(0),"IRIS.password",null);//获取密码框的句柄,通过SPY++获得"IRIS.password"类名SetWindowText(hwnd_password,"kjc0311");constintBM_CLICK=0x00F5;Messagemsg=Message.Create(hwnd_button,BM_CLICK,newIntPtr(0),newIntPtr(0));PostMessage(msg.HWnd,msg.Msg,msg.WParam,msg.LParam);}我知道应该出在SetWindowText(hwnd_password,"kjc0311");这句话上,请大家帮忙看看!

解决方案

解决方案二:
应该是安全问题。这样做对系统来说是不安全的,所以不会设置成功。但在同一个应用程序区域里是可以的。
解决方案三:
Tosetthetextofacontrolinanotherprocess,sendtheWM_SETTEXTmessagedirectlyinsteadofcallingSetWindowText.这是MSDN上的一句话,你可以试试,就是不用调用这个API,而是发一个WM_SETTEXT消息给指定的窗口。
解决方案四:
本人刚接触C#,请楼上详细说明一下可以吗?

时间: 2024-10-07 01:08:47

获取控件句柄后,如何把值传递给该控件!的相关文章

如何在触发DropDownList的SelectedIndexChanged的事件后不刷新页面就把该事件产生的值传到 TextBox控件中.

问题描述 如何在触发DropDownList的SelectedIndexChanged的事件后不刷新页面就把该事件产生的值传到TextBox控件中. 解决方案 解决方案二:ajax就可以.解决方案三:可用JAVASCRIPT或AJAX...實現ONCHANGE事件替代SELECTEDINDEXCHANGED解决方案四:在后台给DropDownList加个事件DropDownList1.Attributes["onChange"]="Show()";然后在JS里写个S

spy-C#菜鸟求助,SPY++上获取控件ID,怎么能获得控件句柄

问题描述 C#菜鸟求助,SPY++上获取控件ID,怎么能获得控件句柄 [DllImport("user32.dll ", EntryPoint = "GetDlgItem")] public static extern IntPtr GetDlgItem(IntPtr hParent, int nIDParentItem); IntPtr curr_hWnd; curr_hWnd = GetDlgItem(IntPtr.Zero, 0x00002EE5); curr

java windows api-通过Windows API获取不到java程序的子窗体和界面控件

问题描述 通过Windows API获取不到java程序的子窗体和界面控件 有一个java写的桌面应用程序,我想用C#自动控制这个程序. 我在C#中用Windows API的FindWindow可以找到它的主窗体句柄,但是用FindWindowEx和EnumChildWindows无法找到它的子窗体和控件. 解决方案 java写的程序就不要指望了,swing之类的库,界面都是画上去的,不是windows窗口. 解决方案二: 1.确定控件(子窗口)存在,如果是画上去的没有子窗口. 2.用spy++

spy-给窗口发送消息,不能获得控件句柄

问题描述 给窗口发送消息,不能获得控件句柄 很多软件使用spy进行识别时,只能显示为一个整体,如果我想给这类窗口进行发送消息,实现给文本框输入值等操作时该怎么办? 解决方案 如果你只能看到窗体的句柄,那么说明这种程序中的控件其实根本不存在,是画出来的.这种程序叫做directui程序. 你只能模仿鼠标键盘操作. 解决方案二: 不是说所有的窗口都支持SPY++来抓取窗口,它一般是windows标准窗口才能获取控件,以及发送消息等. 而还有很多其他界面库等,根本不会处理消息机制.所以你也不能直接发送

做一个监控程序,怎么获取现在鼠标点击了系统里的哪个控件?C#实现,高手请进

问题描述 现在我要做个监控程序,我起个线程监听用户操作,如果用户点击了文本框就通知我,请提供思路.怎么知道用户点击了哪个控件,不是我写个窗口,是任意应用里的控件. 解决方案 解决方案二:钩子注入,WindowFromPoint获得鼠标位置控件句柄,根据句柄用GetClassName取得类名,根据类名判断解决方案三:刚才看了下,找到相关代码IntPtrformHandle=WindowFromPoint(p);//得到窗口句柄StringBuildertitle=newStringBuilder(

解决支付宝安全控件安装后还提示安装办法

解决支付宝安全控件安装后还提示安装办法 法1.在安装使用支付宝的过程中,请留意浏览器页面区域上方有没出现一个黄色的确认提示条.IE7等高版本浏览器增加的安全特性,会在这个区域要求用户的确认,才能使支付宝网站正常运行. 法2.首先检查您的系统,安全控件需要Windows 2000及更高版本操作系统,IE 6.0及更高版本浏览器,IE8和Windows7用户在需要下载EXE安装包来支持.如果您是Firefox/Chrome/Opera用户,请升级浏览器至最新版本.MAC OS X操作系统仅支持Saf

图-asp.net使用chart控件发布后页面报错

问题描述 asp.net使用chart控件发布后页面报错 页面错误提示如下图所示 请问各位有没有什么解决方法

iOS 10 今日控件向后兼容的几个技巧

本文讲的是iOS 10 今日控件向后兼容的几个技巧, 回顾今日控件在过去几年中重要性如何得到提升是一件很有趣的事.今日控件首次在 iOS 8 出现,当时并没有受到高度欢迎,并且在通知中心与错过的通知结合在一起.然而,在 iOS 10,今日控件彻底的改变了,完全接管主屏幕的左滑项,这过去常常被用作「滑动解锁」.在外观方面,该控件也有相当大的转变,从一个深色主题转变为一个珍珠白主题. 不幸的是,对于开发者,如果你和我的团队一样还不能完全放弃对 iOS 10 以下的支持,那么你不得不解决完美支持两种外

asp-ASP.ascx 控件发布后,修改覆盖后 控件报错

问题描述 ASP.ascx 控件发布后,修改覆盖后 控件报错 ASP.net 的网站,我很多个页面引用了ascx格式的控件,并在后台 有与界面进行交互,发布完成,可以使用,但是根据需求更改了一个,有引用的界面发布之后,把界面覆盖了,并且把对应的DLL 也放到BIN里了 但是 报错找不到依赖,其他有引用的页面正常