设计初衷:
公司为了便于网络管理,使用了IEEE 802.1X的网络访问控制,这样每次开机需要输入两次登录密码,于是我就研究了一下用Cregion Dll Import
[DllImport(\”User32.dll\”,EntryPoint=\”FindWindow\”)]
private static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
[DllImport(\”user32.dll\”,EntryPoint=\”FindWindowEx\”)]
private static extern IntPtr FindWindowEx(IntPtr hwndParent,
IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport(\”User32.dll\”,EntryPoint=\”SendMessage\”)]
private static extern int SendMessage(IntPtr hWnd,
int Msg, IntPtr wParam, string lParam);
region SearchWindow
private int SearchWindow()
{
int retval = 0; //增加一个返回值用来判断操作是否成功
//下面的这些参数都可以用Spy++查到
string lpszParentClass = \”endregion
这里有一点需要说明的是,当一个窗体下面有几个类名相同的子窗体时,也就是说如果有三个输入框,这三个输入框的类名都是Edit,查找结果是依次从上往下的,最开始我不知道该怎么办才能分出具体的每个不同的输入框,后来只能这样一个一个来查找来试一下,没想到居然是对的 。(有别的办法么?)
上面的这段代码也只适用于中文版的操作系统,因为不同的操作系统下同一个窗体的名称都是不一样的,我这里也没有英文版的系统,所以也没办法进行测试 。
为了免去每次都让用户手动输入的烦恼,我需要把这些信息都保存到一个特定的文件里面去,当用户在第一次运行这个程序的时候,只需要输入一次,点下Save,先把这些信息保存到一个文件中,然后再把程序本身加载到系统启动项里去,这样下次开机的时候程序就可以自启动,然后从文件中读取信息完成以下的操作 。
选择存放文件的路径:
private string UserPro =
System.Environment.GetEnvironmentVariable(\”USERPROFILE\”);
private string PATH = System.Environment.GetEnvironmentVariable(\”USERPROFILE\”) + @\”/Local Settings/AutoLog.ini\”;
当用户点下Save按钮所触发的事件:
Button Submit Clickendregion
这样的话,程序就可以从文件中读取已经存放好的信息来进行验证了 。最后要做的就是,需要单独开一个进程来循环执行上面的SearchWindow这个方法,直到找到符合条件的窗口并成功验证为止,并且这个进程需要随程序的启动而启动 。
【C井调用Windows API实现自动登录】 我们可以在构造函数中添加一个名为LoadData的方法 , 然后在这个方法中进行具体的读文件信息和启动进程的操作 。
当然,先定义好这个进程:
private Thread thread;
然后是LoadData这个方法:
Loadendregion
以上就是朝夕生活(www.30zx.com)关于“C井调用Windows API实现自动登录”的详细内容,希望对大家有所帮助!
猜你喜欢
- “含京量”有点高!吴京刷屏,内地影史票房前10他主演了5部
- 《冒险岛手游》操作说明
- 电脑音箱有杂音怎么办?电脑耳机或音箱有杂音的原因及解决方法
- Excel内存溢出?看完这篇文章轻松解决
- 分享excel中不能调入控件、内存溢出等问题解决办法
- Visual Basic无法正常使用,提示“内存溢出”咋办?
- 内存溢出和内存泄漏的区别、产生原因以及解决方案
- 什么叫内存溢出?内存泄漏的定义又是什么?使用中如何避免?
- 红米Note9突然黑屏不开机的原因以及解决办法