苏飞论坛

标题: C# 番外篇 之 Win32Api [打印本页]

作者: ro4ters    时间: 2014-11-3 23:49
标题: C# 番外篇 之 Win32Api
http://www.sufeinet.com/thread-5428-1-1.html上一篇帖子分享了个类.
这次直接用它进行实战演示.
番外篇 Win32Api
          C#调用系统API.
         C# SendMessage 更改listbox选中
          C# SendMessage 更改combox选中
          C# SendMessage 到文本框
         C# SendMessage 选中checkbox
从自己的软件,来操作别人写好的软件.
SendMessage
句柄  标识当前进程/控件的一个标识;
     本课程所用到的常量信息:
      [C#] [color=rgb(51, 102, 153) !important]纯文本查看 [color=rgb(51, 102, 153) !important]复制代码
[color=white !important][backcolor=rgb(108, 226, 108) !important]
[color=white !important]?

1

2

3

4

5

6

7

private const uintLB_FINDSTRING = 0x18F;//查询项目在listbox中
        private const uint LB_ADDSTRING = 0x180;//增加字符串在listbox中
      private const uint LB_SETCURSEL = 0x186;  //用于多选ListBox
      private const uint LB_SETTOPINDEX = 0x197;//改变序号在ListBox
      private const uint CB_FINDSTRING = 0x014C;//搜索字符串在下拉菜单中
      private const uint CB_SETCURSEL = 0x014E;//设置下拉菜单的选中项
      private const uint CB_SHOWDROPDOWN = 0x014F;//展开下拉菜单
      private const uint BM_CLICK = 0x00F5;//按钮点击






  引用其他非托管语言编写的DLL时.必须要加上此标志
[C#] [color=rgb(51, 102, 153) !important]纯文本查看 [color=rgb(51, 102, 153) !important]复制代码
[color=white !important][backcolor=rgb(108, 226, 108) !important]
[color=white !important]?

1

2

3

4

关键字     方法所在的DLL  方法名称
  [DllImport("user32.dll",EntryPoint = "FindWindow")]
         权限修饰符   静态标志  修饰符   返回值类型  方法名(与调用方法相同)
           private   static   extern   IntPtrFindWindow(string IpClassName, string IpWindowName);





如何编写一个win32api的程序.
一、获取句柄
a)  从窗体标题中获取句柄/从进程中(pid)获取句柄
b)  IntPtr.Zero   判断句柄是否为0
二、找到实现函数
a)  SendMessage
三、函数的原型(搜索引擎,MSDN,玄机宝盒)
a)  可以使用宝盒的api速查
四、如何调用
a)        EasyWin32Apis

找出窗体上所需要操控控件句柄,在进行消息传递.Ps:常量消息暂时放在楼层,以后有空收录至 玄机宝盒 ,并增加相应中文注释
C# 操作API 视频下载地址:
http://pan.baidu.com/s/1gdAFesb


作者: 我是MT    时间: 2014-11-4 04:32
对于自绘的QQ窗体而言,这个就不行了吧。貌似要用大漠。
作者: ro4ters    时间: 2014-11-4 09:48
我是MT 发表于 2014-11-4 04:32
对于自绘的QQ窗体而言,这个就不行了吧。貌似要用大漠。

通过鼠标也是可以的,但是在C#中还有一种自动化测试的方案.那个可以搞定QQ这种.
作者: ching126    时间: 2014-11-4 14:08
强烈支持楼主ing……
作者: 我是MT    时间: 2014-11-5 07:44
ro4ters 发表于 2014-11-4 09:48
通过鼠标也是可以的,但是在C#中还有一种自动化测试的方案.那个可以搞定QQ这种.

哦 。那就非常强大了,一直想要写个自动模拟登录QQ挂机的软件出来。这个思路不错。
作者: Cheungnotes    时间: 2014-11-5 19:53
受教了学习中……
作者: span    时间: 2014-11-23 00:57
强烈支持楼主ing……




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4