首页 > 编程语言 >(2)PC微信UI自动化-微信窗体自动化初始化(C#)

(2)PC微信UI自动化-微信窗体自动化初始化(C#)

时间:2023-11-02 14:35:44浏览次数:38  
标签:初始化 C# 微信 自动化 窗体 句柄 ID

 我们接下来的操作的对象是微信窗体,分成这几个步骤可以将微信窗体进行自动化操作前的初始化

(1)通过窗体名称找到微信句柄指针。

(2)通过窗体指针找到微信的进程ID。

(3)使用进程ID初始化自动化组件服务。

(4)设置微信窗体的状态为激活。

(1)找到PC端微信窗体并获取微信窗体的句柄数据

 我们借助WINDOWS的两个API函数 ,先定义好API的C#调用方式。

 //根据名称获取窗体句柄
[DllImport("user32.dll", EntryPoint = "FindWindow")]
   private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
//根据句柄获取进程ID
[DllImport("User32.dll", CharSet = CharSet.Auto)]
   public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);

  

(2)通过以下代码获取到微信的窗口句柄和进程ID

int weChatID = 0;

IntPtr hwnd = FindWindow(null, "微信");

if (hwnd != IntPtr.Zero)
{
   GetWindowThreadProcessId(hwnd, out weChatID);
}

如果找到了微信句柄那么就可以继续了,如果没有那么请扫描登录或者进行其他的操作。比如自动打开微信。

(3)使用FlaUI.Core组件根据进程ID初始化自动化组件

 //根据微信进程ID绑定FLAUI
 var application = FlaUI.Core.Application.Attach(weChatID);

 var automation = new UIA3Automation();

 //获取微信window自动化操作对象
 var Window = application.GetMainWindow(automation);

自动化FlaUI对象构造就是通过步骤一获取微信进程ID进行构造。

(4)如果用户将微信最小化,我们需要将微信窗体置顶激活或者最大化

     public void Focus()
        {
            
            if (window.AsWindow().Patterns.Window.PatternOrDefault != null)
            {
                //将微信窗体设置为默认焦点状态
window.AsWindow().Patterns.Window.Pattern.SetWindowVisualState(FlaUI.Core.Definitions.WindowVisualState.Normal);
            }
        }

这个方法可以将微信窗体设置为活动焦点状态。

 

因为文章所表达的意思可能无法满足每一位阅读需求,需要源码或者支持请联系作者QQ 978124155

标签:初始化,C#,微信,自动化,窗体,句柄,ID
From: https://www.cnblogs.com/lichao7314/p/17805316.html

相关文章

  • 在使用docker-compose build一个faq服务Helpy 时报错
    Helpy时报错如下:ERROR:failedtosolve:process"/bin/sh-cbundleinstall--withouttestdevelopment"didnotcompletesuccessfully:exitcode:11ERROR:Service'helpy'failedtobuild:Buildfailed有两种解释这种报错1、修改dockerfile ruby:2.5,然后......
  • 【深度学习】PyTorch的基本运算 与 构造简单神经网络模型
    基本运算importtorch#创建一个自定义的张量t=torch.tensor([1.0,2.0,3.0])#tensor([1.,2.,3.])#求平均值t.mean()#tensor(2.)#创建一个指定行列的张量x=torch.empty(3,5)#tensor([[0.,0.,0.,0.,0.],[0.,0.,0.,0.,0.],[0.,0.,0.,0.,0.]......
  • (4)PC端微信UI自动化-微信联系人采集(C#)
    ​ 在进行一系列操作之前,我们需要采集到微信中的联系人和群聊信息软件运行效果演示  接下来我们如何采集到微信中的联系人列表呢?(1)找到通讯录按钮UI元素执行点击操作。(2)找到联系人面板并执行面板滚动操作(3)滚动过程中获取面板List对象中的ListItem项中的各个子元素......
  • (3)微信UI自动化-热键管理(C#)
    ​    进行微信自动化前,因为采集或者发送消息任务执行需要时间,并且微信窗体会将焦点长期占有,导致我们对软件失去控制,所以我们需要使用热键的方式将任务停止。我们这里采用热键是​编辑。(1)编写一个热键管理类 这个类定义了捕获热键消息的ID,注册热键,注销热键的功能。usi......
  • 移动端注意事项及坑位1(CSS)
    学习 中高级前端必须注意的40条移动端H5坑位指南|网易三年实践1.调用系统功能a标签能快速调用移动设备电话/短信/邮件功能,input标签可快速调用移动设备相册文件<!--拨打电话--><ahref="tel:10086">拨打电话给10086小姐姐</a><!--发送短信--><ahref="sms:1008......
  • 直播小程序源码,react-native自定义文本输入框
    直播小程序源码,react-native自定义文本输入框Examplesfromprops: ... _onChange=(label,value)=>{  this.setState({[label]:value}); }; render(){  return(   <Viewstyle={styles.container}>    <Text>     {this.stat......
  • 网站验证码cookie,localStorage
    很多网站登录或则注册时,都会做一个利用手机号获取验证码证明为本人操作的选项。当然为了网站的web网站安全和防止信息炸弹等恶意操作,都会对再次获取验证码做一个倒计时,一般都为60s。而正常情况下只需利用JS定时函数很容易实现,这种情况下用户一旦刷新页面,页面dom中我们定义的js变量......
  • dev like 函数 widechar 版本
    functionLike(p1:PChar;l1:Integer;p2:PChar;l2:Integer;percent_char,underline_char,escape_char:Char):Boolean;overload;varc:Char;AEscapeFlag:Boolean;beginAEscapeFlag:=False;repeatDec(l2);ifl2<0thenBreak;......
  • C语言中静态函数和非静态函数的区别
     C语言中,静态函数和非静态函数的区别主要体现在以下方面:可见性:静态函数只能在当前文件内使用,不能被其他文件调用,而非静态函数可以被当前文件以外的其他文件调用,具有全局可见性。生命周期:静态函数在程序运行期间一直存在,不会被释放,而非静态函数则是在被......
  • CDN加速
    一、简介二、应用场景    系统有很多的静态资源的,并且请求量也是超级大的。例如:移动端APP,有很多的图片,小视频以及流媒体等,对于网站来说,不仅有上面那些资源之外,还有大量的HTML文件,css文件以及Javascript文件。目前这些静态资源均是放在Nginx服务器上的,请求量很大,并且这些......