扩展:利用现用工具来完成自己的功能

需求:本人有一个针对某软件的注册机工具,每次使用时都需要打开这个程序,输入相应的用户码点击生成才能获得激活码,现在我希望能批量根据用户码生成激活码,本文主要介绍在此背景下如何完成自己的扩展工具。

代码说话:

void MySetWindowText(HWND hwnd,char* Data)
{
      int len=StrLen(Data);
      for(int i=0;i<len;i++)
      {
          USHORT wParam = *(USHORT *)(Data+i);
          SendMessage(hwnd,WM_CHAR,wParam,1);
      }
}

void GetCode(HWND handle)
{
  PROCESS_INFORMATION pinfo={0};
  STARTUPINFO sinfo={0};
  sinfo.cb=sizeof sinfo;
  //
  String strFileName=ExtractFileDir(Application->ExeName)+"\\key.exe";
  if(CreateProcessA(strFileName.c_str(),NULL,NULL,NULL,FALSE,0,NULL,NULL,&sinfo,&pinfo))
  {
    WaitForSingleObject(pinfo.hProcess,1000);
  }
  SetForegroundWindow(handle);
  //
  HWND hwnd=FindWindowA(NULL,"key tool");
  if(hwnd==NULL)
  {
    ShowMessage("程序未启动");
    return;
  }
  //设置选中某产品类型
  HWND combobox=FindWindowEx(hwnd,NULL,"ComboBox",NULL);
  if(combobox!=NULL)
  {
    SendMessage(combobox, CB_SETCURSEL, 3, 0);
  }
  HWND child=FindWindowEx(hwnd,NULL,"Edit",NULL);
  if(child!=NULL)
  {
    char Data[50]="123456";
    MySetWindowText(child,Data);
    HWND child2=FindWindowExA(hwnd,child,"Edit",NULL);
    if(child2!=NULL)
    {
      MySetWindowText(child2,"654321");

      HWND generate=FindWindowExA(hwnd,NULL,"Button","&Generate");
      if(generate!=NULL)
      {
        int ctrlid=GetDlgCtrlID(generate);
        SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(ctrlid, BN_CLICKED),NULL);
      }

      HWND regcode1=FindWindowExA(hwnd,child2,"Edit",NULL);
      if(regcode1!=NULL)
      {
          char szTemp[MAX_PATH]="";
          SendMessageA(regcode1,WM_GETTEXT,MAX_PATH,(LPARAM)(void*)szTemp);
          ShowMessage(szTemp);
          HWND regcode2=FindWindowExA(hwnd,regcode1,"Edit",NULL);
          if(regcode2!=NULL)
          {
              memset(szTemp,0,MAX_PATH);
              SendMessageA(regcode2,WM_GETTEXT,MAX_PATH,(LPARAM)(void*)szTemp);
              ShowMessage(szTemp);
          }
      }

      HWND exit=FindWindowExA(hwnd,NULL,"Button","&Exit");
      if(exit!=NULL)
      {
        int ctrlid=GetDlgCtrlID(exit);
        SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(ctrlid, BN_CLICKED),NULL);
      }
    }
  }
}

流程:

1、启动目标程序;

2、等待目标程序窗口创建完成

3、根据窗口类名查找窗口句柄,根据父窗口句柄查找目标子窗口句柄,设置选择索引或设置文本或发送点击消息或获取文本。

时间: 2024-10-22 13:28:16

扩展:利用现用工具来完成自己的功能的相关文章

如何防止数据恢复及内存硬盘空间信息的利用造成损失(工具链:secure-delete)

/*********************************************************************  * Author  : Samson  * Date    : 05/21/2014  * Test platform:  *              Mint 15-3.8.13.13  *              GNU bash, version 4.2.45  * ***************************************

在Excel中,不利用任何第三方工具,生成二维码

有同事提需求,要批量生成二维码.谈了之后,我觉得可以做个excel文件,把要打印的内容放进去,然后给每行数据生成一个二维码.下一步就要在Excel里面生成二维码.问了一下度娘,貌似都得利用一些第三方工具,但是公司的政策比较严,任何软件都必须是正版(这种需求,短时间内估计不会批准预算买软件).因此想不靠第三方的东西,就用纯粹的vba,去生成二维码.这个时候就要感谢一下谷歌,很快在StackOverflow上找到了我想要的源码. 这是StackOverflow的原帖 原帖的最受欢迎答案是由Jonas

java利用zxing开源工具生成二维码QRCode

原文:java利用zxing开源工具生成二维码QRCode 源代码下载地址:http://www.zuidaima.com/share/1550463727340544.htm

利用Powershell SSH-Session 工具管理 linux或网络设备

首先我们需要下载这个工具 下载地址 http://www.powershelladmin.com/wiki/SSH_from_PowerShell_using_the_SSH.NET_library#Downloads 1 下载的文件内容,请注意针对你使用的powershell 版本下载相应的的版本,有支持powershell2.0以及支持powershell3.0和4.0. 2检测一下你的系统 powershell模块放置的目录 3 所以将下载的压缩文件解压到这两个目录随意一个都可以: C:\

15-iOS开发工具系列(按功能分)

iOS开发工具系列(按功能分) 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode插件,iOS开发者有价值的工具集,iOS/OS X开发:各种工具快到碗里来!,App原型设计工具使用心得(上)& App原型设计工具使用心得(下),你用哪种工具进行iOS app自动化功能测试?,iOS 开发者必知的 75 个工具 有没有这篇文章总结的更全面的? 以下是今天的iOS开发工具系列 通用工具 HomeBrew:OS X上非常出色的包管理工具. 源码控制 Git:分布式版本

讲诉从酒店服务业到IT行业的心酸取经路,另附拙作 ASP.net(C#)利用SQL Server实现注册和登陆功能

楼主本人姓周,名XX,老家是曾国藩故居的,说起来和古人也算是邻里邻居. 92年出生,去年大专毕业,到现在毕业快要一年了,大学里学的专业是酒店管理,我们对外宣称为"第三产业"呵呵.到这里你们可能会心生疑问,咦,大学里怎么会有"酒店专业",你怎么会选它?说到这,楼主不得不提起一个人,那就是我的堂姐,楼主填志愿那年,人小不懂事,根本不知道如何去选择自己的专业,家里人就更不懂了,所以填志愿的事都在我这个堂姐手里做的主,填的那个学校是湖南长沙的,三年大专制,因为我这个表姐本人

利用SharedPreferences完成记住账号密码的功能

利用SharedPreferences完成记住账号密码的功能 效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 SharedPreferences会记录CheckBox的状态,如果CheckBox被选,则将配置文件中记录的账号密码信息回馈给账号密码控件,否则清空. SharedPreferences使用方法: 1.创建名为config的配置文件,并且私有 private SharedPreferences con

【Jsp】利用Application对象实现访问人数统计功能

利用Application对象实现访问人数的统计很常见,但是一些书籍讲解这一技术的时候,往往没有做完整.一旦服务器重启,由于Application会被销毁,重新建立,人数统计则会再一次从零开始.解决方法,个人认为,应该同时利用到数据库,这样无论服务器要重启或者遭遇到停机什么,被统计的人数还是会一直累计上去,不会丢失.下面就介绍一个例子,解决利用Application对象实现访问人数统计功能由于服务器重启或者停机而导致从零开始的问题,同时介绍如果利用Application对象把保存到web.xml

(经典map)A - Hardwood Species(7.1.1)(利用STL中自带的排序功能编程的实验范例)(转)

Description Hardwoods are the botanical group of trees that have broad leaves, produce a fruit or nut, and generally go dormant in the winter. America's temperate climates produce forests with hundreds of hardwood species -- trees that share certain