向其他软件窗口、控件发送消息的方法

2024-02-18 19:32

本文主要是介绍向其他软件窗口、控件发送消息的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自己提问解决的帖子内容http://bbs.csdn.net/topics/390713308

先用spy++找到控件类名

HWND hWndParentDlg,hwndChildCtrl;hWndParentDlg = ::FindWindow(_T("类名"), _T("窗口名"));//得到目标窗口句柄if ( hWndParentDlg == NULL ) 
{AfxMessageBox(_T("没有找到目标程序"));
}
else
{hwndChildCtrl = ::FindWindowEx(hWndParentDlg, NULL,_T("控件类名"), _T("控件名"));if (hwndChildCtrl == NULL){AfxMessageBox(_T("没有找到控件"));}else{DWORD ID = ::GetDlgCtrlID(hwndChildCtrl);::SendMessage(hWndParentDlg, WM_COMMAND, MAKEWPARAM(ID, BN_CLICKED), (LPARAM)hwndChildCtrl);	}
}

有时候窗口上可能会有好几个没名字的控件,比如没名字的edit控件 这时可以用另外的方法获取句柄

首先.h里声明全局回调函数和变量

BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) ;
extern HWND Edithwnd[2];//句柄数组保存需要的句柄
extern int nHwnd;//句柄计数

cpp里全局回调函数

BOOL CALLBACK EnumChildProc(HWND hWndChild, LPARAM lParam)   
{   TCHAR p[10];TCHAR a[10] = _T("TEdit");//控件类名::GetClassName(hWndChild,p,10);if ( _wcsicmp(p,a) == 0 ) //比较类名{		Edithwnd[nHwnd] = hWndChild;		nHwnd++;}return TRUE;  
}  

cpp里枚举控件

::EnumChildWindows(hWndParentDlg, EnumChildProc,NULL);::SendMessage(Edithwnd[0], WM_SETTEXT, NULL, (LPARAM)_T("12345678"));::SendMessage(Edithwnd[1], WM_SETTEXT, NULL, (LPARAM)_T("ssw"));







这篇关于向其他软件窗口、控件发送消息的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722225

相关文章

Linux文件名修改方法大全

《Linux文件名修改方法大全》在Linux系统中,文件名修改是一个常见且重要的操作,文件名修改可以更好地管理文件和文件夹,使其更具可读性和有序性,本文将介绍三种在Linux系统下常用的文件名修改方法... 目录一、引言二、使用mv命令修改文件名三、使用rename命令修改文件名四、mv命令和rename命

mysql删除无用用户的方法实现

《mysql删除无用用户的方法实现》本文主要介绍了mysql删除无用用户的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 1、删除不用的账户(1) 查看当前已存在账户mysql> select user,host,pa

电脑提示msvcp90.dll缺少怎么办? MSVCP90.dll文件丢失的修复方法

《电脑提示msvcp90.dll缺少怎么办?MSVCP90.dll文件丢失的修复方法》今天我想和大家分享的主题是关于在使用软件时遇到的一个问题——msvcp90.dll丢失,相信很多老师在使用电脑时... 在计算机使用过程中,可能会遇到 MSVCP90.dll 丢失的问题。MSVCP90.dll 是 Mic

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

Mybatis从3.4.0版本到3.5.7版本的迭代方法实现

《Mybatis从3.4.0版本到3.5.7版本的迭代方法实现》本文主要介绍了Mybatis从3.4.0版本到3.5.7版本的迭代方法实现,包括主要的功能增强、不兼容的更改和修复的错误,具有一定的参考... 目录一、3.4.01、主要的功能增强2、selectCursor example3、不兼容的更改二、

VSCode中C/C++编码乱码问题的两种解决方法

《VSCode中C/C++编码乱码问题的两种解决方法》在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码,这种编码不一致会导致在VSC... 目录问题方法一:通过 Code Runner 插件调整编码配置步骤方法二:在 PowerShell

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自