首页 新闻 会员 周边

WINFORM API获取另一窗体的控件实现自动登陆

0
悬赏园豆:20 [已解决问题] 解决于 2012-11-15 16:02

各位大神们:

现在我想在一个程序里面通过API获取另一程序的句柄,假如是登录界面,输入用户名和密码后实现登陆。

我该怎么做呢?

在线等,有经验的大神们不要藏了,直接告诉我、推荐网站或文章都行的。

失落の熊熊的主页 失落の熊熊 | 初学一级 | 园豆:79
提问于:2012-11-02 16:17
< >
分享
最佳答案
0

可以查一下Windows API相关资料,你可能需要用到FindWindowEx、PostMessage这些API。

FindWindowEx可以查找到目标窗体,并按级查找到目标控件,再调用PostMessage给目标控件发消息就可以了。

收获园豆:20
I,Robot | 大侠五级 |园豆:9783 | 2012-11-03 00:43

我查了一些资料的,貌似有2中方法,一种是用SPY++一个类名一个类名的找,一种是遍历窗体上的控件的方式;但是资料上面都不是写的很全面。

你能给我推荐一些文章或者有相关信息的网站么。

失落の熊熊 | 园豆:79 (初学一级) | 2012-11-05 10:31

@失落の熊熊: 用SPY++找到窗体的类名和目标控件的类名,你可以用FindWindowEx一级级的往下找。

写个简单的示例给你吧

IntPtr hWnd = IntPtr.Zero;
string[] classlist = { "ClassA","ClassB","ClassC","ClassD"};
foreach (string s in classlist) {
    hWnd = WindowsAPI.FindWindowEx(hWnd, IntPtr.Zero, s, null);
}

classlist中保存的是目标控件所在的层级。

 

I,Robot | 园豆:9783 (大侠五级) | 2012-11-06 08:53
其他回答(2)
0

winform里的窗体里的控件都是私有的  如果要访问另一个窗体的控件不能直接打点调用,可以使用属性,先把控件的值赋到属性上 然后new一个窗体对象 对象打点就可以调用这个属性了 间接获取和设置了控件的值,楼主是这个意思么?

属性是一种 还有一种就是设置要访问控件的modifiers属性为pubic 貌似也可以 楼主多试试

跨窗体调控件有很多方法 楼主可以百度下

oppoic | 园豆:770 (小虾三级) | 2012-11-02 16:37
0

我感觉你的意思 是不是2个程序都是相互独立的,然后想通过一个程序获得另一个程序的登陆信息,如果是这样的话,你应该用反射技术,并且,想要获得登陆信息的程序有公开的属性和方法供你使用,希望可以帮到你!

刘颖 | 园豆:6 (初学一级) | 2012-11-02 18:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册