精华内容
下载资源
问答
  • C# API自动登录游戏

    千次阅读 2010-03-05 12:04:00
    设计初衷: 公司为了安全性考虑,不让密码被太多人知道,所以想实现一个自动登录的模块。设计思想: 主要是通过调用Windows API中的一些方法,找到目标窗口和进程之后把保存在数据库中的用户名密码自动填入输入框中...

    设计初衷:
      公司为了安全性考虑,不让密码被太多人知道,所以想实现一个自动登录的模块。

    设计思想:
      主要是通过调用Windows API中的一些方法,找到目标窗口和进程之后把保存在数据库中的用户名密码自动填入输入框中,并登录。

    设计步骤:
    一、调用Windows API。
     C#下调用Windows API方法如下:
     1、引入命名空间:using System.Runtime.InteropServices;
     2、引用需要使用的方法,格式:[DllImport("DLL文件")]方法的声明;
     [DllImport("user32.dll")]private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
     [DllImport("user32.dll")]private static extern bool SetForegroundWindow(IntPtr hWnd);
     [DllImport("user32.dll")]private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
     [DllImport("user32.dll")]private static extern int SendMessage(IntPtr hWnd,int Msg,int wParam,int lParam);
     [DllImport("user32.dll")]private static extern bool SetCursorPos(int X, int Y);
     [DllImport("user32.dll")]private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
     [DllImport("user32.dll")]private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
     [DllImport("user32.dll")]private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint Flags);
     //ShowWindow参数
     private const int SW_SHOWNORMAL = 1;
     private const int SW_RESTORE = 9;
     private const int SW_SHOWNOACTIVATE = 4;
     //SendMessage参数
     private const int WM_KEYDOWN = 0X100;
     private const int WM_KEYUP = 0X101;
     private const int WM_SYSCHAR = 0X106;
     private const int WM_SYSKEYUP = 0X105;
     private const int WM_SYSKEYDOWN = 0X104;
     private const int WM_CHAR = 0X102;

    二、找到目标窗口
    1)、根据窗口的标题得到句柄
     IntPtr myIntPtr = FindWindow(null,"窗口名"); //null为类名,可以用Spy++得到,也可以为空
     ShowWindow(myIntPtr, SW_RESTORE); //将窗口还原
     SetForegroundWindow(myIntPtr); //如果没有ShowWindow,此方法不能设置最小化的窗口
    2)、遍历所有窗口得到句柄
    1 定义委托方法CallBack,枚举窗口API(EnumWindows),得到窗口名API(GetWindowTextW)和得到窗口类名API(GetClassNameW)
     public delegate bool CallBack(int hwnd, int lParam);
     [DllImport("user32")]public static extern int EnumWindows(CallBack x, int y);
     [DllImport("user32.dll")]private static extern int GetWindowTextW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount);
     [DllImport("user32.dll")]private static extern int GetClassNameW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount);
    2 调用EnumWindows遍历窗口
     CallBack myCallBack = new CallBack(Recall);
     EnumWindows(myCallBack, 0);
    3 回调方法Recall
     public bool Recall(int hwnd, int lParam)
     {
      StringBuilder sb = new StringBuilder(256);
      IntPtr PW = new IntPtr(hwnd);

      GetWindowTextW(PW,sb,sb.Capacity); //得到窗口名并保存在strName中
      string strName = sb.ToString();

      GetClassNameW(PW,sb,sb.Capacity); //得到窗口类名并保存在strClass中
      string strClass = sb.ToString();

      if (strName.IndexOf("窗口名关键字") >= 0 && strClass.IndexOf("类名关键字") >= 0)
      {
       return false; //返回false中止EnumWindows遍历
      }
      else
      {
       return true; //返回true继续EnumWindows遍历
      }
     }
    3)、打开窗口得到句柄
    1 定义设置活动窗口API(SetActiveWindow),设置前台窗口API(SetForegroundWindow)
     [DllImport("user32.dll")]static extern IntPtr SetActiveWindow(IntPtr hWnd);
     [DllImport("user32.dll")][return: MarshalAs(UnmanagedType.Bool)]static extern bool SetForegroundWindow(IntPtr hWnd);
    2 打开窗口
     Process proc = Process.Start(@"目标程序路径");
     SetActiveWindow(proc.MainWindowHandle);
     SetForegroundWindow(proc.MainWindowHandle);

    三、向指定的窗口输入数据
    1 利用发送消息API(SendMessage)向窗口发送数据
     InputStr(myIntPtr, _GameID); //输入游戏ID
     SendMessage(myIntPtr, WM_SYSKEYDOWN, 0X09, 0); //输入TAB(0x09)
     SendMessage(myIntPtr, WM_SYSKEYUP, 0X09, 0);
     InputStr(myIntPtr, _GamePass); //输入游戏密码
     SendMessage(myIntPtr, WM_SYSKEYDOWN, 0X0D, 0); //输入ENTER(0x0d)
     SendMessage(myIntPtr, WM_SYSKEYUP, 0X0D, 0);

     /// <summary>
     /// 发送一个字符串
     /// </summary>
     /// <param name="myIntPtr">窗口句柄</param>
     /// <param name="Input">字符串</param>
     public void InputStr(IntPtr myIntPtr, string Input)
     {
      byte[] ch = (ASCIIEncoding.ASCII.GetBytes(Input));
      for (int i = 0; i < ch.Length; i++)
      {
       SendMessage(PW, WM_CHAR, ch, 0);
      }
     }
    2 利用鼠标和键盘模拟向窗口发送数据
     SetWindowPos(PW, (IntPtr)(-1), 0, 0, 0, 0, 0x0040 | 0x0001); //设置窗口位置
     SetCursorPos(476, 177); //设置鼠标位置
     mouse_event(0x0002, 0, 0, 0, 0); //模拟鼠标按下操作
     mouse_event(0x0004, 0, 0, 0, 0); //模拟鼠标放开操作
     SendKeys.Send(_GameID);   //模拟键盘输入游戏ID
     SendKeys.Send("{TAB}"); //模拟键盘输入TAB
     SendKeys.Send(_GamePass); //模拟键盘输入游戏密码
     SendKeys.Send("{ENTER}"); //模拟键盘输入ENTER

    另:上面还提到了keybd_event方法,用法和mouse_event方法类似,作用和SendKeys.Send一样。

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jinru2560/archive/2009/08/17/4455418.aspx

     

     

     

     

     

     

     

     

     

    展开全文
  • QQ游戏自动登录器V4.0

    千次阅读 2006-05-11 22:00:00
    开发环境:C#.Net 2003软件名称:QQ游戏自动登录器最新版本:V4.0 无错登陆版 修正BUG:无措登陆,100%成功历史版本: V3.0威力加强版 增加批量登陆帐号,通过导入TXT文本文件实现批量帐号登陆,支持QQ号----QQ...

    开发环境:C#.Net 2003

    软件名称:QQ游戏自动登录器

    最新版本:V4.0 无错登陆版

     

    修正BUG:无措登陆,100%成功

    历史版本:

           V3.0威力加强版  增加批量登陆帐号,通过导入TXT文本文件实现批量帐号登陆,支持QQ号----QQ密码格式通用格式

           V2.5 增加序列号 配合我的注册机,实现版权保护

           V2.0 加入自己的ID图标

           V1.5 成功实现屏幕捕捉

     

     

    展开全文
  • 有的游戏一个账号下允许建立三个角色,那么在这一环节,就必须根据账号来点选角色的位置是左、中、右还是这个账号下只有一个角色,所以我们建立一个子程序要传递一个角色位置的参数,同时要建立一个子程序来获得单选...

    当输入账号秘密成功后 很多游戏到了角色选择的界面,有的游戏一个账号下允许建立三个角色,那么在这一环节,就必须根据账号来点选角色的位置是左、中、右还是这个账号下只有一个角色,所以我们建立一个子程序要传递一个角色位置的参数,同时要建立一个子程序来获得单选框传递过来的位置变量,从而实现完美的一键登录。以下代码是程序源码。涉及子程序传递参数。

    511yj.com

    判断单选框

    .版本 2
     
    .子程序 判断单选框
     
    .判断开始 (单选框_左.选中 = 真)
        位置变量 = “左”
     
    .判断 (单选框_中.选中 = 真)
        位置变量 = “中”
     
    .判断 (单选框_右.选中 = 真)
        位置变量 = “右”
     
    .判断 (单选框_左2.选中 = 真)
        位置变量 = “左2”
     
    .判断 (单选框_单.选中 = 真)
        位置变量 = “单”
     
    .判断 (单选框_右2.选中 = 真)
        位置变量 = “右2”
    .默认
     
    .判断结束

    选择角色

    511yj.com

    .版本 2
    .支持库 spec
     
    .子程序 选择角色
    .参数 角色位置, 文本型
    .局部变量 i, 整数型
    .局部变量 word, 文本型
    .局部变量 w_array, 文本型, , "0"
     
    延迟 (time)
    i = 0
    .判断循环首 (i = 0)
        word = dm.FindStrFastE (352, 570, 459, 602, “此账号”, “ffffff-000000”, 1)
        w_array = 分割文本 (word, “|”, )
        .如果 (到整数 (w_array [1]) ≥ 0)
            i = 1
     
        .否则
     
        .如果结束
     
        处理事件 ()
     
    .判断循环尾 ()
     
    .如果真 (位置变量 = “左”)
        延迟 (time)
        dm.MoveTo (152, 306)
        延迟 (time)
        dm.LeftDoubleClick ()
        延迟 (time)
     
    .如果真结束
     
    .如果真 (位置变量 = “中”)
        延迟 (time)
        dm.MoveTo (404, 322)
        延迟 (time)
        dm.LeftDoubleClick ()
        延迟 (time)
    .如果真结束
     
    .如果真 (位置变量 = “右”)
        延迟 (time)
        dm.MoveTo (660, 337)
        延迟 (time)
        dm.LeftDoubleClick ()
        延迟 (time)
     
    .如果真结束
     
    .如果真 (位置变量 = “左2”)
        延迟 (time)
        dm.MoveTo (236, 306)
        延迟 (time)
        dm.LeftDoubleClick ()
        延迟 (time)
     
    .如果真结束
     
    .如果真 (位置变量 = “右2”)
        延迟 (time)
        dm.MoveTo (567, 306)
        延迟 (time)
        dm.LeftDoubleClick ()
        延迟 (time)
     
    .如果真结束
     
    .如果真 (位置变量 = “单”)
        延迟 (time)
        dm.KeyPress (13)
     
    .如果真结束

    参考:易语言大漠游戏外挂一键登录判断角色位置

    展开全文
  • 该段代码从setting.ini文件中读取QQ号和密码,然后自动进行登录和退出并进行记录,适用于QQ2009版本setting.ini文件格式如下: [lianzhong]lianzhong1No=lianzhong1Pwdlianzhong2No=lianzhong2Pwdlianzhong3No=...

    该段代码从setting.ini文件中读取QQ号和密码,然后自动进行登录和退出并进行记录,适用于QQ2009版本

    setting.ini文件格式如下:

     [lianzhong]
    lianzhong1No=lianzhong1Pwd
    lianzhong2No=lianzhong2Pwd
    lianzhong3No=lianzhong3Pwd

     

    AutoIt代码如下:

    展开全文
  • 介绍 最近学了一段时间的Android开发为了给Android Reverse做准备,这里就...开心连连看之----实现登陆界面 &amp;amp;lt;二&amp;amp;gt;开心连连看之----构思游戏逻辑 &amp;amp;lt;三&amp;amp;gt
  • 游戏路径如何写入配置项,目的就是我们再次启动时,能记忆游戏路径,从而完成自动读取路径配置,自动启动游戏自动游戏路径写入配置文件,然后隐藏通用对话框,以后再次启动游戏时直接读取配置项就可以了。 ...
  • 这个时候如果直接让玩家退出游戏,重新登录,无疑是非常影响用户体验的事情。所以根据这个需求,就有需要程序来实现断线后自动重连回去的技术,是用户能够再次快速开始游戏进行战斗。一、断线重连原理原来其实很简单...
  • 游戏自动化测试

    千次阅读 2019-07-29 21:21:16
    对于 flex + java架构的游戏自动化测试 主要的想法:写客户端支持游戏的业务逻辑.用测试代码对应游戏的业务逻辑. //发送消息 private function SendMessage(KEY:int):void{ switch(KEY){ case 1:...
  • 京东休闲游戏自动化签到助手是专门为京东而打造的一个自动签到软件,并是由吾爱网友自制分享的,不仅绿色小巧,安全无毒,还简单易用,只需要使用页面端登录或cookies登录账号后,接着选择功能即可开始自动帮助用户...
  • 知识点有一键启动游戏,格式化时间,监控反馈,把辅助运行情况及时的反馈到窗口的编辑框中。 格式化时间 .版本 2 .子程序 取格式化时间, 文本型 .参数 现行时间, 日期时间型 .局部变量 局_年, 文本型 .局部变量 ...
  • 采用了一键后台绑定游戏窗口,包含了游戏窗口句柄的获取,采用EnumWindowByProcess枚举窗口句柄,采用SetWindowState 激活窗口,绑定可以根据自己的游戏,这里采用BindWindow命令来绑定,同时我们对按键实现了一键的...
  • import urllib.request from selenium import webdriver from http.cookiejar import CookieJar, ...import time from selenium.webdriver.chrome.options import Options headers = { 'Cache-Control'...
  • 我自己写的辅助源码 易语言 魔域自动登陆源代码
  • 一个基于python的自动游戏辅助

    千次阅读 2020-06-21 13:50:26
    业余时间我会玩一玩游戏,然而并不是所有所有的游戏内容都会让我一直保持着兴趣。一段时间后,懒癌就犯了…… 心血来潮,调研了几种基于屏幕色块识别来进行点击的实现方案。 不言而喻,Python在当下的互联网环境中...
  • Game AI SDK是用于开发游戏自动化AI的开源框架。项目的特点是以游戏图像为输入,直接输出模拟触屏操作,不依赖游戏端提供任何API接口。适用场景主要适用于游戏场景的自动化测试,目前...
  • 网狐SQL脚本自动添加子游戏信息

    千次阅读 2017-04-13 10:26:23
    好久没写了,这次给大家说个用SQL脚本自动添加子游戏 每次新装好环境后,增加子游戏是个重复的劳动,很麻烦,怎么能让他自动生成呢。 下面我们就用SQL脚本来解决。 将下面代码写入记事本,保存成 “ 游戏ID.SQL...
  • 功能:只支持QQ2008 2009的QQ,支持批量登录,支持密码...支持QQ2008,QQ2009版本登陆,以及QQ游戏自动登陆。 支持带参数快捷启动。 支持已登陆账号列表彩色显示。 支持自定义各种颜色显示。 支持QQ临时会话消息。
  • 我刚学Python,用已掌握的知识已经用"autopy"的功能写了一个鼠标自动点击排队的脚本,但是我想让这个脚本不用在窗口最前端显示也能运行,就是最小化了也能继续在后台继续工作,可是不了解Python的强大功能,下面是...
  • 《王者荣耀》做为全民手...都是说自己适配的最好,性能表现最佳, 目前厂商一般都会开发自己的游戏性能是工具,评测结构和媒体没有能力开发的会用Gamebench,Gamebench是一套完整的性能评测和分析工具,但是不能定制...
  • 视学算法报道编辑:陈萍、魔王转载自公众号:机器之心SDK 还能自动游戏?这个 SDK 有点「酷」。近日,腾讯互娱(IEG)开源了一款名为 GAME AI SDK 的自动化测试平台,该平...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,085
精华内容 21,634
关键字:

如何自动登录游戏