C# API实现游戏自动登录

1。游戏自动登录,MousePosition.X获得系统鼠标位置的X坐标

     第一种方法:指定文本框的坐标,适用于窗口最大化按钮不能用的,如QQ游戏

      int x=500;

      int y=300;

      SendKeys.SendWait("274040246");   //输入游戏ID         
      SetCursorPos(x, y); //设置鼠标位置,x,y为账号框相对屏幕的位置                
      mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
      mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
      System.Threading.Thread.Sleep(500);//设置暂停时间,不然账号和密码会发在一个框中

      SendKeys.SendWait("{Tab}");//发送Tab
      SendKeys.SendWait("1111111111111"); //输入游戏密码
      SendKeys.SendWait("{ENTER}");//输入回车键

 

      第二种方法:

      IntPtr myIntPtr = FindWindow(null, "QQ游戏");
      IntPtr handle1 = FindWindowEx(myIntPtr, IntPtr.Zero, "ComboBox", null);//找账号输入框句柄
      IntPtr handle2 = FindWindowEx(myIntPtr, handle1, "Edit", null);//找密码输入框句柄
      if (handle1 != null && handle2 != null)
      {
              InputStr(handle1, "274040246"); //输入游戏ID
              InputStr(handle2, "1111111111111"); //输入游戏密码                    
              PostMessage(handle2, WM_KEYDOWN, 13, 0); //输入ENTER
              PostMessage(handle2, WM_KEYUP, 13, 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(myIntPtr, WM_CHAR, ch[i], 0);
            }
        }

 

       第三种:具有一定的通用性

       IntPtr myIntPtr = FindWindow(null, "QQ游戏");

       //获取当前活动窗口的线程句柄
       IntPtr threadId1 = GetCurrentThreadId();
       //获得指定句柄的线程句柄
       IntPtr threadId2 = GetWindowThreadProcessId(myIntPtr, IntPtr.Zero);

       //将两个线程的输入队列联系起来,只有这样,GetFocus函数才能获得其它线程中的焦点窗口   
       AttachThreadInput(threadId2, threadId1, 1);
        //得到当前的具有输入焦点的子窗口(控件)的句柄
        IntPtr getAccountTextBox = GetFocus();
        //将连到一起的两个线程的输入队列分离   
        AttachThreadInput(threadId2, threadId1, 0);

        if (getAccountTextBox != null)
        {
               Rectangle rc = new Rectangle();
               GetWindowRect(getAccountTextBox.ToInt32(), ref rc);
               InputStr(getAccountTextBox, "274040246"); //输入游戏ID
               SetCursorPos(rc.X + 3, rc.Y + 32); //设置鼠标位置             
               mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
               mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
               System.Threading.Thread.Sleep(200);//如果账号和密码出现在一个文本框中,则此时间需要设置长
               //再次查找拥有输入焦点的文本框句柄
               AttachThreadInput(threadId2, threadId1, 1);
               IntPtr getPwdTextBox = GetFocus();
               AttachThreadInput(threadId2, threadId1, 0);
               InputStr(getPwdTextBox, "1111111111111111"); //输入游戏密码
               PostMessage(getPwdTextBox, WM_KEYDOWN, 13, 0); //输入ENTER
               PostMessage(getPwdTextBox, WM_KEYUP, 13, 0);
         }       

 

2。魔兽自动登录一种实现,通过设置窗口大小及位置来做

       //查找窗口
        [DllImport("user32.dll")]
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        //可将最小化窗口还原
        [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 bool SetCursorPos(int X, int Y);
        //设置窗口位置和大小 
        [DllImport("user32.dll")]
        private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint Flags);
        //模拟鼠标
        [DllImport("user32.dll")]
        private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);

        private const int SW_RESTORE = 9; //将窗口还原的参数
        private const uint SWP_SHOWWINDOW = 0x0040; //设置窗口位置的参数

        private const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下 
        private const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起

 

        IntPtr findPtr = FindWindow(null, "World of Warcraft");//World of Warcraft为游戏在任务栏的名称
        ShowWindow(findPtr, SW_RESTORE); //将窗口还原
        SetForegroundWindow(findPtr);//将指定窗口激活
         if (findPtr.ToInt32() != 0)
         {
                 SymmetricMethod sm = new SymmetricMethod();
                 SetWindowPos(findPtr, (IntPtr)(-1), 0, 0, 700, 550, SWP_SHOWWINDOW);
                 System.Threading.Thread.Sleep(500);
                 SetCursorPos(300, 300); //设置鼠标位置
                  mouse_event(0x0002, 0, 0, 0, 0); //模拟鼠标按下操作
                  mouse_event(0x0004, 0, 0, 0, 0); //模拟鼠标放开操作
                  System.Threading.Thread.Sleep(500);
                  SendKeys.Send(lvInfo.SelectedItems[0].SubItems[1].Text);   //模拟键盘输入游戏ID
                  SendKeys.Send("{TAB}"); //模拟键盘输入TAB
                  SendKeys.Send(sm.Decrypto(lvInfo.SelectedItems[0].SubItems[2].Text)); //模拟键盘输入游戏密码                       
                   SendKeys.Send("{ENTER}"); //模拟键盘输入ENTER
           }
          else
           {
                    MessageBox.Show("魔兽世界还没有打开!");
            }

 

3。判断当前系统活动窗口是否是指定的窗口

     //找到系统当前活动的窗口的句柄
      [DllImport("user32.dll")]
      private static extern IntPtr GetForegroundWindow();

      //根据任务栏应用程序显示的名称找相应窗口的句柄
      [DllImport("User32.dll", EntryPoint = "FindWindow")]
      private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

      //获取指定句柄窗口的标题
      [DllImport("User32.dll")]
      static extern int GetWindowText(IntPtr handle, StringBuilder text, int MaxLen);

      IntPtr findPtr = FindWindow(null, "QQ游戏");//QQ游戏为在任务栏的名称
      StringBuilder text1 = new StringBuilder(50);//按要求找到的进程的标题
      StringBuilder text2 = new StringBuilder(50);//当前活动进程的标题
      GetWindowText(GetForegroundWindow(), text1, 50);
      GetWindowText(findPtr, text2, 50);

      if(text1.Equals(text2))

                  MessageBox.Show("当前活动窗口是指定窗口");

     else

             MessageBox.Show("当前活动窗口不是指定窗口");

 

4。设置指定窗口选中(激活)

      private const int SW_RESTORE = 9;

      [DllImport("user32.dll ")]
      private static extern bool SetForegroundWindow(IntPtr hWnd);

      [DllImport("user32.dll")]
      private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

      IntPtr findPtr = FindWindow(null, "AION Client");//AION Client为游戏在任务栏的名称

      if (findPtr.ToInt32() != 0)
      {
             ShowWindow(findPtr, SW_RESTORE); //将窗口还原,如果不用此方法,缩小的窗口不能激活
             SetForegroundWindow(findPtr);//将指定的窗口选中(激活)

      }

    

5。获取指定窗口句柄相对屏幕中的位置    

      [DllImport("User32.dll", EntryPoint = "FindWindow")]
      private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
      [DllImport("User32.dll")]
      private static extern bool ClientToScreen(IntPtr hwnd, ref Point lpPoint);       

      IntPtr findPtr = FindWindow(null, "QQ游戏");

      Point p = new Point (0);
      ClientToScreen(findPtr, ref p);
      MessageBox.Show(p.X+","+p.Y);

 

6。判断指定窗口是否是最大化

      [DllImport("User32.dll", EntryPoint = "FindWindow")]
      private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);  

      [DllImport("user32.dll")]
      private static extern bool IsZoomed(IntPtr hWnd);

      IntPtr findPtr = FindWindow(null, "QQ游戏");

      if (IsZoomed(findPtr))

          MessageBox.Show("最大化");

      else

          MessageBox.Show("最小化");

 

备注:程序中用到的

    //设置鼠标位置
        [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 IntPtr FindWindow(string lpClassName, string lpWindowName);
        /// <summary>
        /// 查找句柄
        /// </summary>  
        [DllImport("User32.DLL")]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

        [DllImport("user32.dll")]
        private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

        //发送按键消息必用PostMessage,SendMessage有时会不起作用
        [DllImport("user32.dll", EntryPoint = "PostMessage", SetLastError = true)]
        private extern static bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

        //获取指定句柄的相对屏幕的位置和矩形区域
        [DllImport("user32")]
        public static extern int GetWindowRect(int hwnd, ref Rectangle lpRect);

        [DllImport("kernel32")]
        public static extern IntPtr GetCurrentThreadId();

        [DllImport("user32.dll")]
        private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);

        [DllImport("user32.dll")]
        private static extern IntPtr AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, int fAttach);

        [DllImport("user32.dll")]
        private static extern IntPtr GetFocus();

        private const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下参数
        private const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起参数

        //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;

分类:  C#(winform)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 认识C#及开发环境 1.1 C#概述 2 1.1.1 C#发展历程 2 1.1.2 C#语言编程环境 2 1.2 .NET Framework 2.0简介 2 1.2.1 什么是.NET Framework 2.0 2 1.2.2 .NET Framework 2.0特性 3 1.3 安装集成开发环境Visual Studio 2005 4 1.3.1 安装Visual Studio 2005开发环境 4 1.3.2 安装MSDN帮助 7 1.3.3 如何使用MSDN帮助 9 1.3.4 利用MSDN帮助附带的示例学习编程 11 1.4 启动Visual Studio 2005开发环境 12 1.4.1 启动Visual Studio 2005 12 1.4.2 创建项目 12 1.5 熟悉Visual Studio 2005集成开发环境 13 1.5.1 新特性 14 1.5.2 主窗口 14 1.5.3 菜单栏 14 1.5.4 工具栏 18 1.5.5 文档窗口 18 1.5.6 工具箱窗口 19 1.5.7 解决方案资源管理器窗口 20 1.5.8 属性窗口 20 1.5.9 代码编辑器 21 1.5.10 “错误列表”面板 22 1.5.11 “输出”面板 22 1.6 程序调试 22 1.6.1 断点操作 22 1.6.2 使用开始、中断和停止执行功能调试程序 23 1.6.3 单步执行 25 1.6.4 运行到程序的指定位置 25 第2章 QQ企业通 2.1 设计思路 28 2.2 关键技术 28 2.2.1 INI文件的应用 28 2.2.2 线程的应用 30 2.2.3 在Socket中发送大容量的消息 30 2.2.4 将流序列化或反序列化为对象 31 2.2.5 用InnerList列表记录信息 31 2.3 设计过程 32 2.3.1 类库的设计 33 2.3.2 客户端注册模块设计 40 2.3.3 客户端登录模块设计 42 2.3.4 客户端QQ模块设计 43 2.3.5 客户端消息发送模块设计 48 2.3.6 服务器端控制台模块设计 52 第3章 SQL数据表提取器模块 3.1 概述 56 3.2 关键技术 56 3.2.1 如何备份数据库 56 3.2.2 如何还原数据库 57 3.2.3 如何附加数据库 58 3.2.4 如何分离数据库 59 3.2.5 设置数据库模式 59 3.3 设计过程 61 3.3.1 主窗体 61 3.3.2 获取服务器名称 62 3.3.3 获取所有数据库 63 3.3.4 获取所有数据表 64 3.3.5 备份数据库 66 3.3.6 还原数据库 67 3.3.7 附加数据库 68 3.3.8 分离数据库 70 3.3.9 导出表结构 71 3.3.10 导出数据 74 第4章 万能搜索模块 4.1 设计思路 80 4.2 关键技术 80 4.2.1 如何制作一个接口程序 80 4.2.2 实现接口程序的信息互传 80 4.2.3 如何将接口程序加载到其他程序中 82 4.2.4 怎样操作RichtextBox控件的选择文本 82 4.2.5 如何获取数据表中字段的描述信息 83 4.3 设计过程 83 4.3.1 获取数据表中字段的中文信息 84 4.3.2 添加数据表的查询条件 86 4.3.3 向SQL语句中添加括号 89 4.3.4 查询生成后的SQL语句 90 4.3.5 主程序获得接口信息 92 第5章 万能打印模块 5.1 设计思路 94 5.2 关键技术 94 5.2.1 打印设置(PrintDocument类) 94 5.2.2 打印预览对话框(PrintPreview Dialog) 95 5.2.3 打印对话框(PrintDialog) 96 5.2.4 获取指定颜色值和字体样式 97 5.2.5 DataGridView控件的相关应用 97 5.3 设计过程 98 5.3.1 打印信息的设置 98 5.3.2 表格样式的设置 100 5.3.3 打印类的设置 101 5.3.4 打印数据信息 108 第6章 决策分析模块 6.1 设计思路 112 6.2 关键技术 112 6.2.1 游标的基本操作 112 6.2.2 存储过程的基本操作 115 6.2.3 透视表的基本概念 117 6.2.4 统计表的基本操作 117 6.2.5 单击显示右键菜单 118 6.3 设计过程 118 6.3.1 主窗体的初始化 119 6.3.2 透视表的筛选 127 6.3.3 透视表的设计 130 6.3.4 统计表的设计 132 第7章 自定义图表控件 7.1 设计思路 136 7.2 关键技术 137 7.2.1 控件的生成 137 7.2.2 如何在项目中添加控件 137 7.2.3 在“属性”对话框中添加属性 137 7.2.4 用GDI+绘制图形 139 7.2.5 如何在控件上绘制图形 143 7.2.6 获取扇形外弧中心点的位置 143 7.3 设计过程 144 7.3.1 向自定义控件中添加属性 144 7.3.2 获取绘制图表的初始值数据 149 7.3.3 绘制标签框 153 7.3.4 绘制图表中的表格 157 7.3.5 绘制条形图 163 7.3.6 绘制面形图 170 7.3.7 绘制饼形图 174 第8章 电子邮件收发模块 8.1 概述 180 8.2 关键技术 180 8.2.1 Base64编码格式 180 8.2.2 SMTP服务 181 8.2.3 POP3协议 184 8.2.4 使用Jmail组件接收邮件 186 8.2.5 邮件发送类的使用 188 8.2.6 使用正则表达式验证邮件格式 190 8.3 设计过程 191 8.3.1 数据库设计 191 8.3.2 系统登录 191 8.3.3 邮件发送实现 192 8.3.4 为邮件上传多个附件 193 8.3.5 邮件接收实现 194 8.3.6 查看邮件详细信息 196 8.3.7 下载附件的实现 197 8.3.8 删除邮件实现 198 8.3.9 用户管理 198 第9章 短信群发模块 9.1 设计思路 202 9.2 关键技术 202 9.2.1 短信猫中API函数的使用 202 9.2.2 短信猫中的短信接收格式 205 9.2.3 窗体间的互操作 205 9.2.4 锁定模块主窗体 206 9.2.5 使用ADO.NET连接Access数据库 206 9.3 设计过程 207 9.3.1 数据库设计 207 9.3.2 群发短信实现 209 9.3.3 已发送短信管理 213 9.3.4 接收短信实现 215 9.3.5 常用联系人管理 219 9.3.6 常用短语管理 221 第10章 桌面精灵模块 10.1 概述 226 10.2 关键技术 226 10.2.1 阴阳历转换算法 226 10.2.2 调用系统API实现鼠标穿透效果 230 10.2.3 修改注册表控制程序开机自启动 231 10.2.4 通过控制窗体透明度实现日历透明显示效果 231 10.2.5 拖动无标题栏窗体 232 10.2.6 将窗体的关闭位置写入到注册表中 232 10.2.7 将程序图标写入到托盘 232 10.3 设计过程 233 10.3.1 桌面精灵模块公共类设计 233 10.3.2 当前日期的农历、天干地支年、节日及星座显示 235 10.3.3 定时提醒的实现 240 10.3.4 日历窗体效果控制 242 10.3.5 转到某天、某周、某月及某年的实现 243 10.3.6 节日管理 245 10.3.7 提醒管理 249 第11章 文件批量处理器 11.1 概述 256 11.2 关键技术 256 11.2.1 文件流技术 256 11.2.2 文件解压缩技术 258 11.2.3 获取系统文件及文件夹图标 262 11.2.4 获取指定目录下的所有文件及文件夹 265 11.2.5 Word操作技术 266 11.2.6 进度条的显示 266 11.2.7 对ListView控件中的项进行排序 267 11.3 设计过程 267 11.3.1 主窗体预览 267 11.3.2 批量复制、剪切文件 268 11.3.3 批量复制、剪切文件夹 270 11.3.4 批量重命名文件 271 11.3.5 批量删除文件及文件夹 275 11.3.6 搜索文件及文件夹 276 11.3.7 批量压缩、解压文件 278 11.3.8 分割、合并文件 280 第12章 图片管理工具模块 12.1 概述 286 12.2 关键技术 286 12.2.1 上下移动ListBox选中项 286 12.2.2 将文件复制到剪切板 287 12.2.3 格式转换 288 12.2.4 图片幻灯片 288 12.2.5 图片旋转 289 12.3 设计过程 290 12.3.1 主窗体 290 12.3.2 打开图片目录 291 12.3.3 图片格式转换 292 12.3.4 设为桌面背景 294 12.3.5 图片特效 296 12.3.6 图片调节 300 12.3.7 图片水印 304 12.3.8 幻灯片放映 306 12.3.9 图片打印 308 第13章 FTP文件管理模块 13.1 设计思路 312 13.2 关键技术 312 13.2.1 架设FTP服务器 312 13.2.2 登录FTP服务器 317 13.2.3 获取服务器上文件的大小 318 13.2.4 向FTP服务器发送命令 319 13.2.5 调用系统API 321 13.3 设计过程 322 13.3.1 主窗体设计 322 13.3.2 登录FTP服务器 323 13.3.3 获取本地磁盘 325 13.3.4 获取指定磁盘中的文件 326 13.3.5 获取本地磁盘中文件的图标 327 13.3.6 获取FTP服务器中的所有文件 329 13.3.7 批量上传文件 333 13.3.8 批量下载文件 337 13.3.9 删除FTP中的文件或文件夹 340 第14章 魔法兔子模块 14.1 概述 344 14.2 关键技术 344 14.2.1 获取进程信息 344 14.2.2 获取计算机信息 347 14.2.3 修改注册表 349 14.3 设计过程 349 14.3.1 主窗体 349 14.3.2 功能菜单设计 350 14.3.3 系统检测 353 14.3.4 系统优化 356 14.3.5 超级工具 360 14.3.6 实用工具 367 14.3.7 任务管理器 369 14.3.8 选项设置 371 第15章 学生考试模块 15.1 设计思路 376 15.2 关键技术 376 15.2.1 获取试题数目 376 15.2.2 验证用户名和密码 377 15.2.3 随机抽取试题 377 15.2.4 自动评分 377 15.3 设计过程 378 15.3.1 数据库设计 378 15.3.2 公共类设计 380 15.3.3 登录验证 381 15.3.4 主窗体实现 382 15.3.5 开始考试 384 15.3.6 修改密码 393 15.3.7 分数查询 394 15.3.8 管理员界面 394 15.3.9 用户管理 395 15.3.10 成绩查询 399 15.3.11 考试设置 401 15.3.12 添加试题 403 15.3.13 修改试题 406 第16章 网页浏览器模块 16.1 概述 410 16.2 关键技术 410 16.2.1 网页浏览器核心控件 410 16.2.2 网页多页面显示 415 16.2.3 获取网页源码 416 16.3 设计过程 417 16.3.1 主窗体 417 16.3.2 查看网页源码 427 16.3.3 添加到收藏夹 427 16.3.4 整理收藏夹 429 第17章 电话客服管理模块 17.1 设计思路 432 17.2 关键技术 432 17.2.1 语音卡中的API函数 432 17.2.2 硬件语音卡驱动分析 437 17.2.3 窗体间传值 438 17.2.4 导航菜单的制作 438 17.3 设 计 过 程 439 17.3.1 数据库设计 439 17.3.2 模块主窗体设计 441 17.3.3 自动语音处理 444 17.3.4 通话管理实现 450 17.3.5 员工管理实现 452 17.3.6 产品类别管理 455 第18章 多媒体播放器 18.1 设计思路 460 18.2 关键技术 460 18.2.1 窗体间的信息传递 460 18.2.2 AxWindowsMediaPlayer控件的相关应用 461 18.2.3 在列表框中动态移动选中的项 463 18.2.4 如何在文件夹中遍历文件 463 18.2.5 如何实现播放进度条 464 18.3 设计过程 465 18.3.1 磁性窗体的设置 465 18.3.2 播放窗体的设计 472 18.3.3 列表窗体的设计 482 18.3.4 歌词窗体的设计 485 第19章 屏幕录像模块 19.1 概述 488 19.2 关键技术 488 19.2.1 如何抓取屏幕 488 19.2.2 创建AVI文件 488 19.2.3 向AVI文件中添加视频 489 19.2.4 分解AVI文件 490 19.2.5 设置快捷键 491 19.3 设计过程 494 19.3.1 主窗体设计 494 19.3.2 抓图功能 494 19.3.3 选项设置 496 19.3.4 屏幕录像 497 19.3.5 视频分割 503 第20章 EXE文件加密器 20.1 设计思路 512 20.2 关键技术 512 20.2.1 FileStream对象 512 20.2.2 文件的读写操作 513 20.2.3 如何获取两个日期的月份差 515 20.2.4 获取两个日期的相差天数 516 20.2.5 载取字符串中的指定字符 516 20.3 设计过程 517 20.3.1 获取加密字符串的信息 517 20.3.2 对生成后的数据进行加密 520 20.3.3 对EXE文件进行加密 522 20.3.4 解密文件的设置 524 第21章 视频监控模块 21.1 设计思路 530 21.2 关键技术 530 21.2.1 认识视频监控卡 530 21.2.2 视频监控卡中API函数的使用 532 21.2.3 Pelco-D协议 536 21.2.4 串口通信技术 538 21.2.5 WMI类的使用 540 21.2.6 注册表技术 541 21.3 设计过程 543 21.3.1 视频监控实现 543 21.3.2 云台控制 546 21.3.3 色彩控制 548 21.3.4 图像抓拍及生成监控录像 549 21.3.5 定时录像设置 551 21.3.6 录像回放 552 21.3.7 注册程序 553 21.3.8 实时监控软件运行时间及磁盘空间 554 第22章 网络五子棋游戏 22.1 设计思路 558 22.2 关键技术 558 22.2.1 在下拉列表中绘制图片 558 22.2.2 UDP协议 560 22.2.3 用Socket实现信息传递的必备条件 560 22.2.4 自定义事件的设置 561 22.2.5 动态按钮的设置 562 22.3 设计过程 564 22.3.1 类库的设计 564 22.3.2 客户端注册模块设计 569 22.3.3 客户端登录模块设计 571 22.3.4 五子棋大厅的设计 573 22.3.5 对决窗体的设计 583 22.3.6 网络五子棋服务器窗体的设计 598 第23章 在线升级模块 23.1 设计思路 610 23.2 关键技术 610 23.2.1 FTP上传下载技术 610 23.2.2 XML文件操作 611 23.2.3 INI文件的读写 613 23.2.4 动态生成版本面板 614 23.2.5 使用Hashtable(哈希表)记录版本号及更新信息 614 23.3 类库设计过程 615 23.4 服务器端设计过程 621 23.4.1 服务器端主窗体预览 621 23.4.2 连接FTP服务器 622 23.4.3 向FTP服务器上传新版本 623 23.5 客户端设计过程 626 23.5.1 启动客户端时检测是否有新版本 626 23.5.2 从FTP服务器下载指定版本 628 23.5.3 定时升级设置 630 第24章 Windows应用程序打包与部署境 24.1 Windows Installer简介 634 24.2 Windows应用程序部署 634 24.2.1 创建部署项目 634 24.2.2 可选的部署功能 636 24.3 安装及卸载Windows程序 642 24.3.1 在本地计算机上安装 642 24.3.2 部署到其他计算机 642 24.3.3 卸载安装应用程序 642
书籍目录: 第1篇 Visual C#基础编程实例 实例1 C#经典程序--Hello World 实例2 C#的简单输入输出(I/O) 实例3 C#的复杂输入输出(I/O) 实例4 通信录管理与维护 实例5 文件与目录管理 实例6 用户界面上的“Hello,World!” 实例7 组件化“Welcome”程序 实例8 网络上的“Hello World” 实例9 Ref、Out与Params描述符的应用 实例10 C#自动内存管理的应用 实例11 一个有趣栈类的实现 实例12 垃圾收集器管理与应用 实例13 垃圾收集器算法控制与使用 实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 实例21 简单角色类游戏的制作 实例22 旅馆住宿登记情况表制作 实例23 长命名空间的应用 实例24 文件特征计数 实例25 文本框输入数据的验证 第2篇 Visual C#中级编程实例 实例26 窗体背景颜色动态变化 实例27 C#属性及应用 实例28 C#属性Metadata的管理与应用 实例29 使用Context属性创建CallThreshold Service 实例30 使用应用程序域 实例31 创建C#组件与客户应用程序 实例32 用OpenFileDialog类浏览或打开文件 实例33 在C#程序中获得Win32 API 实例34 从C#中调用COM组件 实例35 在C#程序中修改HTML文件标题 实例36 下载Web页面 实例37 创建多线程应用程序 实例38 多线程的多次加载 实例39 单个线程同步运行 实例40 多线程同步运行 实例41 线程Thread Relative Static跟踪与实现 实例42 线程池(ThreadPool)的应用 实例43 多线程互斥运行 实例44 多线程时钟应用程序 实例45 监视多线程 实例46 防止多线程应用程序死锁 实例47 文件同步操作与应用 实例48 在COM程序设计中使用.NET组件 实例49 文件异步操作与多处理器系统 实例50 获取网络主机IP地址 实例51 C#对话信息框的应用 实例52 在C#中快速调用Windows API 实例53 摄氏温度与华氏温度间相互转换(1) 实例54 摄氏温度与华氏温度间相互转换(2) 实例55 使用FileSystemWatcher组件监视Web服务器 实例56 由颜色名字产生对应颜色 实例57 使用索引指示器分析域名 实例58 C#版本的PingC 实例59 DNS客户程序 实例60 一个有趣的DOS实用程序 实例61 代表元基本应用 实例62 有趣的事件代表元 实例63 随机连续偶数发生事件处理 实例64 有趣的列表框窗体 实例65 数学函数应用 第3篇 Visual C#高级编程实例 实例66 文件夹中的文件列表 实例67 读写文本文件 实例68 读写二进制文件 实例69 显示系统日期与时间(1) 实例70 显示差值的日期与时间(2) 实例71 时钟发生器应用 实例72 在.NET程序设计中使用ATL 实例73 浏览Internet文件 实例74 在C#应用程序中打开浏览器 实例75 显示Internet文件信息 实例76 Puzzle游戏 实例77 MDI窗体菜单设计(1) 实例78 MDI窗体菜单设计(2) 实例79 创建一个C#编辑器 实例80 网络端口扫描器 实例81 深入WinForms-地址簿应用(1) 实例82 深入WinForms--Image Viewer应用程序(2) 实例83 开饭时间提醒器(Meal Reminder) 实例84 服务器端C#实例 实例85 数字时钟设计技术 实例86 自动编译C#程序AutoCompiler 实例87 使用C#与ASP+编写File Uploder 实例88 访问注册表中的硬件信息 实例89 设置“开始”菜单 实例90 在“新建”中添加自己的文件类型 实例91 显示Exchange软件的客户名称 实例92 读取Windows注册表信息 实例93 自定义AboutBox组件 实例94 自定义控件及应用 实例95 Java与C#混合编程的应用 实例96 C#与C++混合编程的应用 实例97 C#与VB混合编程的应用 实例98 C#组件与C#客户程序编程的应用 实例99 C#与XML联合应用XMLHelper 实例100 在C#中部署应用
第1章 认识C#及开发环境 1.1 C#概述 1.1.1 C#发展历程 1.1.2 C#语言编程环境 1.2.NETFramework2.0简介 1.2.1 什么是.NETFramework2.0 1.2.2.NETFramework2.0特性 1.3 安装集成开发环境VisualStudio2005 1.3.1 安装VisualStudio2005开发环境 1.3.2 安装MSDN帮助 1.3.3 如何使用MSDN帮助 1.3.4 利用MSDN帮助附带的示例学习编程 1.4 启动VisualStudio2005开发环境 1.4.1 启动VisualStudio2005 1.4.2 创建项目 1.5 熟悉VisualStudio2005集成开发环境 1.5.1 新特性 1.5.2 主窗口 1.5.3 菜单栏 1.5.4 工具栏 1.5.5 文档窗口 1.5.6 工具箱窗口 1.5.7 解决方案资源管理器窗口 1.5.8 属性窗口 1.5.9 代码编辑器 1.5.10 “错误列表”面板 1.5.11 “输出”面板 1.6 程序调试 1.6.1 断点操作 1.6.2 使用开始、中断和停止执行功能调试程序 1.6.3 单步执行 1.6.4 运行到程序的指定位置 第2章 QQ企业通 2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端登录模块设计 2.3.4 客户端QQ模块设计 2.3.5 客户端消息发送模块设计 2.3.6 服务器端控制台模块设计 第3章 SQL数据表提取器模块 3.1 概述 3.2 关键技术 3.2.1 如何备份数据库 3.2.2 如何还原数据库 3.2.3 如何附加数据库 3.2.4 如何分离数据库 3.2.5 设置数据库模式 3.3 设计过程 3.3.1 主窗体 3.3.2 获取服务器名称 3.3.3 获取所有数据库 3.3.4 获取所有数据表 3.3.5 备份数据库 3.3.6 还原数据库 3.3.7 附加数据库 3.3.8 分离数据库 3.3.9 导出表结构 3.3.10 导出数据 第4章 万能搜索模块 4.1 设计思路 4.2 关键技术 4.2.1 如何制作一个接口程序 4.2.2 实现接口程序的信息互传 4.2.3 如何将接口程序加载到其他程序中 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL语句 4.3.5 主程序获得接口信息 第5章 万能打印模块 5.1 设计思路 5.2 关键技术 5.2.1 打印设置(PrintDocument类) 5.2.2 打印预览对话框(PrintPreviewDialog) 5.2.3 打印对话框(PrintDialog) 5.2.4 获取指定颜色值和字体样式 5.2.5 DataGridView控件的相关应用 5.3 设计过程 5.3.1 打印信息的设置 5.3.2 表格样式的设置 5.3.3 打印类的设置 5.3.4 打印数据信息 第6章 决策分析模块 6.1 设计思路 6.2 关键技术 6.2.1 游标的基本操作 6.2.2 存储过程的基本操作 6.2.3 透视表的基本概念 6.2.4 统计表的基本操作 6.2.5 单击显示右键菜单 6.3 设计过程 6.3.1 主窗体的初始化 6.3.2 透视表的筛选 6.3.3 透视表的设计 6.3.4 统计表的设计 第7章 自定义图表控件 7.1 设计思路 7.2 关键技术 7.2.1 控件的生成 7.2.2 如何在项目中添加控件 7.2.3 在“属性”对话框中添加属性 7.2.4 用GDI+绘制图形 7.2.5 如何在控件上绘制图形 7.2.6 获取扇形外弧中心点的位置 7.3 设计过程 7.3.1 向自定义控件中添加属性 7.3.2 获取绘制图表的初始值数据 7.3.3 绘制标签框 7.3.4 绘制图表中的表格 7.3.5 绘制条形图 7.3.6 绘制面形图 7.3.7 绘制饼形图 第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 数据库设计 8.3.2 系统登录 8.3.3 邮件发送实现 8.3.4 为邮件上传多个附件 8.3.5 邮件接收实现 8.3.6 查看邮件详细信息 8.3.7 下载附件的实现 8.3.8 删除邮件实现 8.3.9 用户管理 第9章 短信群发模块 9.1 设计思路 9.2 关键技术 9.2.1 短信猫中API函数的使用 9.2.2 短信猫中的短信接收格式 9.2.3 窗体间的互操作 9.2.4 锁定模块主窗体 9.2.5 使用ADO.NET连接Access数据库 9.3 设计过程 9.3.1 数据库设计 9.3.2 群发短信实现 9.3.3 已发送短信管理 9.3.4 接收短信实现 9.3.5 常用联系人管理 9.3.6 常用短语管理 第10章 桌面精灵模块 10.1 概述 10.2 关键技术 10.2.1 阴阳历转换算法 10.2.2 调用系统API实现鼠标穿透效果 10.2.3 修改注册表控制程序开机自启动 10.2.4 通过控制窗体透明度实现日历透明显示效果 10.2.5 拖动无标题栏窗体 10.2.6 将窗体的关闭位置写入到注册表中 10.2.7 将程序图标写入到托盘 10.3 设计过程 10.3.1 桌面精灵模块公共类设计 10.3.2 当前日期的农历、天干地支年、节日及星座显示 10.3.3 定时提醒的实现 10.3.4 日历窗体效果控制 10.3.5 转到某天、某周、某月及某年的实现 10.3.6 节日管理 10.3.7 提醒管理 第11章 文件批量处理器 11.1 概述 11.2 关键技术 11.2.1 文件流技术 11.2.2 文件解压缩技术 11.2.3 获取系统文件及文件夹图标 11.2.4 获取指定目录下的所有文件及文件夹 11.2.5 Word操作技术 11.2.6 进度条的显示 11.2.7 对ListView控件中的项进行排序 11.3 设计过程 11.3.1 主窗体预览 11.3.2 批量复制、剪切文件 11.3.3 批量复制、剪切文件夹 11.3.4 批量重命名文件 11.3.5 批量删除文件及文件夹 11.3.6 搜索文件及文件夹 11.3.7 批量压缩、解压文件 11.3.8 分割、合并文件 第12章 图片管理工具模块 12.1 概述 12.2 关键技术 12.2.1 上下移动ListBox选中项 12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3.7 图片水印 12.3.8 幻灯片放映 12.3.9 图片打印 第13章 FTP文件管理模块 13.1 设计思路 13.2 关键技术 13.2.1 架设FTP服务器 13.2.2 登录FTP服务器 13.2.3 获取服务器上文件的大小 13.2.4 向FTP服务器发送命令 13.2.5 调用系统API 13.3 设计过程 13.3.1 主窗体设计 13.3.2 登录FTP服务器 13.3.3 获取本地磁盘 13.3.4 获取指定磁盘中的文件 13.3.5 获取本地磁盘中文件的图标 13.3.6 获取FTP服务器中的所有文件 13.3.7 批量上传文件 13.3.8 批量下载文件 13.3.9 删除FTP中的文件或文件夹 第14章 魔法兔子模块 14.1 概述 14.2 关键技术 14.2.1 获取进程信息 14.2.2 获取计算机信息 14.2.3 修改注册表 14.3 设计过程 14.3.1 主窗体 14.3.2 功能菜单设计 14.3.3 系统检测 14.3.4 系统优化 14.3.5 超级工具 14.3.6 实用工具 14.3.7 任务管理器 14.3.8 选项设置 第15章 学生考试模块 15.1 设计思路 15.2 关键技术 15.2.1 获取试题数目 15.2.2 验证用户名和密码 15.2.3 随机抽取试题 15.2.4 自动评分 15.3 设计过程 15.3.1 数据库设计 15.3.2 公共类设计 15.3.3 登录验证 15.3.4 主窗体实现 15.3.5 开始考试 15.3.6 修改密码 15.3.7 分数查询 15.3.8 管理员界面 15.3.9 用户管理 15.3.10 成绩查询 15.3.11 考试设置 15.3.12 添加试题 15.3.13 修改试题 第16章 网页浏览器模块 16.1 概述 16.2 关键技术 16.2.1 网页浏览器核心控件 16.2.2 网页多页面显示 16.2.3 获取网页源码 16.3 设计过程 16.3.1 主窗体 16.3.2 查看网页源码 16.3.3 添加到收藏夹 16.3.4 整理收藏夹 第17章 电话客服管理模块 17.1 设计思路 17.2 关键技术 17.2.1 语音卡中的API函数 17.2.2 硬件语音卡驱动分析 17.2.3 窗体间传值 17.2.4 导航菜单的制作 17.3 设计过程 17.3.1 数据库设计 17.3.2 模块主窗体设计 17.3.3 自动语音处理 17.3.4 通话管理实现 17.3.5 员工管理实现 17.3.6 产品类别管理 第18章 多媒体播放器 18.1 设计思路 18.2 关键技术 18.2.1 窗体间的信息传递 18.2.2 AxWindowsMediaPlayer控件的相关应用 18.2.3 在列表框中动态移动选中的项 18.2.4 如何在文件夹中遍历文件 18.2.5 如何实现播放进度条 18.3 设计过程 18.3.1 磁性窗体的设置 18.3.2 播放窗体的设计 18.3.3 列表窗体的设计 18.3.4 歌词窗体的设计 第19章 屏幕录像模块 19.1 概述 19.2 关键技术 19.2.1 如何抓取屏幕 19.2.2 创建AVI文件 19.2.3 向AVI文件中添加视频 19.2.4 分解AVI文件 19.2.5 设置快捷键 19.3 设计过程 19.3.1 主窗体设计 19.3.2 抓图功能 19.3.3 选项设置 19.3.4 屏幕录像 19.3.5 视频分割 第20章 EXE文件加密器 20.1 设计思路 20.2 关键技术 20.2.1 FileStream对象 20.2.2 文件的读写操作 20.2.3 如何获取两个日期的月份差 20.2.4 获取两个日期的相差天数 20.2.5 载取字符串中的指定字符 20.3 设计过程 20.3.1 获取加密字符串的信息 20.3.2 对生成后的数据进行加密 20.3.3 对EXE文件进行加密 20.3.4 解密文件的设置 第21章 视频监控模块 21.1 设计思路 21.2 关键技术 21.2.1 认识视频监控卡 21.2.2 视频监控卡中API函数的使用 21.2.3 Pelco-D协议 21.2.4 串口通信技术 21.2.5 WMI类的使用 21.2.6 注册表技术 21.3 设计过程 21.3.1 视频监控实现 21.3.2 云台控制 21.3.3 色彩控制 21.3.4 图像抓拍及生成监控录像 21.3.5 定时录像设置 21.3.6 录像回放 21.3.7 注册程序 21.3.8 实时监控软件运行时间及磁盘空间 第22章 网络五子棋游戏 22.1 设计思路 22.2 关键技术 22.2.1 在下拉列表中绘制图片 22.2.2 UDP协议 22.2.3 用Socket实现信息传递的必备条件 22.2.4 自定义事件的设置 22.2.5 动态按钮的设置 22.3 设计过程 22.3.1 类库的设计 22.3.2 客户端注册模块设计 22.3.3 客户端登录模块设计 22.3.4 五子棋大厅的设计 22.3.5 对决窗体的设计 22.3.6 网络五子棋服务器窗体的设计 第23章 在线升级模块 23.1 设计思路 23.2 关键技术 23.2.1 FTP上传下载技术 23.2.2 XML文件操作 23.2.3 INI文件的读写 23.2.4 动态生成版本面板 23.2.5 使用Hashtable(哈希表)记录版本号及更新信息 23.3 类库设计过程 23.4 服务器端设计过程 23.4.1 服务器端主窗体预览 23.4.2 连接FTP服务器 23.4.3 向FTP服务器上传新版本 23.5 客户端设计过程 23.5.1 启动客户端时检测是否有新版本 23.5.2 从FTP服务器下载指定版本 23.5.3 定时升级设置 第24章 Windows应用程序打包与部署境 24.1 WindowsInstaller简介 24.2 Windows应用程序部署 24.2.1 创建部署项目 24.2.2 可选的部署功能 24.3 安装及卸载Windows程序 24.3.1 在本地计算机上安装 24.3.2 部署到其他计算机 24.3.3 卸载安装应用程序
### 回答1: Unity3D热力分布图是一种基于图像颜色来表示游戏物体热度分布的技术。它可以将不同游戏物体的热度值在图像上进行热力分布展示,从而帮助开发者更好地了解游戏中物体的使用情况。此外,Unity3D热力分布图还可以帮助开发者优化游戏性能,通过分析图像来找到游戏中的性能瓶颈。 在Unity3D热力分布图中,每个游戏物体都会被分配一个颜色值,颜色值表示该物体的热度值。热度值越高,颜色越接近红色,热度值越低,颜色越接近蓝色。通过颜色的变化,开发者可以直观地了解到游戏中哪些物体最受玩家欢迎,哪些物体的使用率较低。 使用Unity3D热力分布图可以为开发者带来许多优势。首先它可以帮助开发者深入了解游戏中物体的使用情况,以便针对性地进行优化。其次,它可以节省开发者的时间,减少开发过程中的盲猜,从而更加高效地进行游戏性能优化。最后,它可以提高游戏质量和玩家的游戏体验。 综上所述,Unity3D热力分布图是一项非常有用的工具,可以帮助开发者更好地了解游戏中物体的使用情况,并为游戏性能优化提供有力的支持。 ### 回答2: Unity3D热力分布图C#是一种开发工具,旨在提供一个直观的方式来可视化分析Unity3D场景的性能瓶颈。Unity3D是一种跨平台游戏开发引擎,可用于开发游戏,仿真程序,虚拟现实和增强现实程序,等等。Unity3D热力图C#插件可用于分析代码和资源的影响,与CPU、GPU和内存资源的使用情况相关、并帮助开发人员从中优化其程序。它提供了一个实时热力图,可以通过色彩区分出哪些区域和代码或资源受到了最大的压力。这使得Unity3D开发人员能够诊断性能问题的根本原因,并加入适当的修复和调整。 Unity3D热力图C#还提供了附加的功能,例如一个在场景中跟踪物体数量及单个物体中各个组件的性能开销的模块。它也提供了与规则分析器的集成,以便能够通过自动化规则来分析场景中产生的瓶颈。Unity3D热力图C#是一个功能强大的工具,可以帮助Unity3D开发人员优化他们的程序,提高性能,并在设备上实现流畅酣畅的游戏体验。 ### 回答3: Unity 3D是一种非常流行的跨平台游戏引擎,它可以用来创建三维游戏、模拟器和其他交互式内容。Unity 3D具有非常完善的功能,可通过其功能丰富的编辑器和脚本 API 进行高度自定义的开发。其中,热力分布图(Heatmap)是Unity 3D中的一种运用图像表达数据的展示方式。 热力分布图常用于可视化位置和流量数据,通过颜色深浅的变化表现数据的项集中程度。对于游戏开发者而言,热力分布图非常有用。通过对玩家的行为、战斗、场景等数据进行可视化,能够展现游戏玩法的成功与失败之处。利用热力分布图的技术,游戏开发者可以更清楚地认识游戏特性的受欢迎程度和弊端,为后续的升级和改进提供有价值的参考意见。 当然,热力分布图不仅仅只在游戏开发中有用。其他领域如数据分析、推荐系统、商业应用中也有应用。总之,热力分布图只是我们在可视化数据时的一种方法,我们可以根据不同需求应用不同的可视化技术、创新可视化方式,让数据更加直观和易于理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值