苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4232|回复: 1

[其他] 关于C#控制窗体和句柄的操作

[复制链接]
发表于 2013-6-21 17:28:00 | 显示全部楼层 |阅读模式
前些天看到论坛有个朋友一直在探讨如何通过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
软件的代码我也发上来,测试用的登陆窗口,很简单。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. namespace WindowsFormsApplication2
  10. {
  11.     public partial class Form1 : Form
  12.     {
  13.         public Form1()
  14.         {
  15.             InitializeComponent();
  16.         }

  17.         private void button1_Click(object sender, EventArgs e)
  18.         {
  19.             if (textBox1.Text == "admin")
  20.             {
  21.                 if (textBox2.Text == "123")
  22.                 {
  23.                     MessageBox.Show("OK");
  24.                 }
  25.                 else
  26.                 { MessageBox.Show("密码错误"); }
  27.             }
  28.             else
  29.             {
  30.                 MessageBox.Show("用户名错误");
  31.             }
  32.         }
  33.     }
  34. }
复制代码
顺便问下苏老大
用这个登陆的时候,因为我系统默认的输入法是搜狗
所以登陆有个小bug
就是要先把输入法设置为英文,不然输入文本框的admin然后1就变成了输入法文字的选择键,而不是第二个文本框的123开头的1


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-6-21 17:54:49 | 显示全部楼层
设置下文本框主输入法状态就行了吧 看看 ImeMode 属性的使用方法
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-26 15:16

© 2014-2021

快速回复 返回顶部 返回列表