|
前些天看到论坛有个朋友一直在探讨如何通过C#操作91vpn
今天我在群里也问了类似关于操作句柄的问题
得到了大家的帮助
我测试了下,把可以实现的简单代码发上来,供需要的朋友参考
[code=csharp]// 调用API模拟键盘事件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Win32;
using System.Runtime.InteropServices;
using System.Threading;//这个必须要引用
namespace WinApi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("user32.dll")]
static extern IntPtr SetActiveWindow(IntPtr hWnd);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
Process proc = Process.Start(@"C:\Users\Maple\Desktop\login.exe");
SetActiveWindow(proc.MainWindowHandle);
SetForegroundWindow(proc.MainWindowHandle);
Thread.Sleep(2000);
SendKeys.SendWait("admin");
SendKeys.Send("{TAB}");
Thread.Sleep(100);
SendKeys.SendWait("123");
Thread.Sleep(100);
SendKeys.Send("{TAB}");
SendKeys.Send("{Enter}");
}
}
}
[/code]
登陆的软件的用户名是admin密码是123
软件的代码我也发上来,测试用的登陆窗口,很简单。- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace WindowsFormsApplication2
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- if (textBox1.Text == "admin")
- {
- if (textBox2.Text == "123")
- {
- MessageBox.Show("OK");
- }
- else
- { MessageBox.Show("密码错误"); }
- }
- else
- {
- MessageBox.Show("用户名错误");
- }
- }
- }
- }
复制代码 顺便问下苏老大
用这个登陆的时候,因为我系统默认的输入法是搜狗
所以登陆有个小bug
就是要先把输入法设置为英文,不然输入文本框的admin然后1就变成了输入法文字的选择键,而不是第二个文本框的123开头的1
|
|