SPY++ 相关编程获取第三方程序

SPY++ 相关编程获取第三方程序


Contents

  1. SPY++ 的使用步骤
  2. 实例代码
  3. 在MFC中的使用

SPY++ 的使用步骤

  1. 在visual studio中工具 ->spy++ 中打开,如图:
    SPY++ 相关编程获取第三方程序_第1张图片

  2. 找到望远镜按钮点击(图1中红色框),
    在这里插入图片描述

    出现下面图,拖动位置1处的查找程序工具圆形图标 放置到想要获得的第三方程序的数据显示框位置2中,即显示2位置编辑框的信息,点击确定

SPY++ 相关编程获取第三方程序_第2张图片

  1. 右击选中的编辑框信息行(图中蓝色位置)->属性 ,窗口属性中可以查看该编辑框的所有信息。

SPY++ 相关编程获取第三方程序_第3张图片


实例代码

在控制台程序中运行

#include
#include 
#include 
#include 
using namespace std;

int Pnum = 0, Cnum;//父窗口数量,每一级父窗口的子窗口数量
//---------------------------------------------------------
//EnumChildWindows回调函数,hwnd为指定的父窗口
//---------------------------------------------------------
BOOL CALLBACK EnumChildWindowsProc(HWND hWnd, LPARAM lParam)
{
    //注释程序为获取编辑框的title内容,在这个程序中可以获得软件界面中静态文本框的内容,编辑框中的内容无法获取
	//char WindowTitle[100] = { 1 };
	//Cnum++;
	//::GetWindowText(hWnd, WindowTitle, 100);
	//printf("--|%d :%s\n", Cnum, WindowTitle);界面中所有的内容进行输出(带有编号)
	Cnum++;
	char classname[100] = { 0 };
	//::GetClassNameA(hWnd, classname, 100);获取编辑框的类名
	::SendMessage(hWnd, WM_GETTEXT, sizeof(classname) / sizeof(char), (LPARAM)classname);
	string a = classname;
    //Cnum 为要获取的编辑框在主界面中的排序,如果不知道可以全部输出然后找到相应的位置
	if (Cnum == 12)
	{
		cout << a << endl;
	}
	return true;
}
//调用函数
void codeout()
{
	HWND hw1 = NULL;
	hw1 = ::FindWindow(_T("WindowsForms10.Window.8.app.0.143a722_r6_ad1"), _T("X-COM"));
    //使用FindWindow函数获得主界面的句柄,"WindowsForms10.Window.8.app.0.143a722_r6_ad1"为主界面的类名,"X-COM"为caption这两个都是用SPY++获得的,
    //获取主界面句柄之后,用EnumChildWindows遍历主界面中的所有控件
	EnumChildWindows(hw1, EnumChildWindowsProc, NULL);
}
//---------------------------------------------------------
int main()
{
	for (int i = 0; i < 10; i++)
	{
		codeout();
		Sleep(1000);
		Cnum = 0;
	}
	system("pause");
	return 0;
}

在MFC中的使用

程序结构完全相同只有两个点需要注意

  1. 回调函数EnumChildWindowsProc 中的两个函数SendMessageGetClassName 需要改为

    SendMessageAGetClassNameA,(具体为什么这样好像是因为字符集 ,这个不懂)。

  2. 控制台程序使用的是cout进行输出,在MFC界面中需要根据程序需求做出相应的更改,比如:转为CString格式进行显示或者是其他格式进行处理运用
    为字符集 ,这个不懂)。

  3. 控制台程序使用的是cout进行输出,在MFC界面中需要根据程序需求做出相应的更改,比如:转为CString格式进行显示或者是其他格式进行处理运用

你可能感兴趣的:(mfc,visual,studio,c++)