注册 登录
编程论坛 VC++/MFC

如何用VC控制某一软件的按钮

daijiarong 发布于 2010-12-29 19:56, 847 次点击
如何用VC控制某一软件的按钮,这个软件不知道按钮ID,不知道类名,只知道按钮的名称,如何获取他的句柄?并发送消息?那位大侠知道,能给出一个例子吗?我想说明的是获取按钮的句柄,不是窗口的句柄
1 回复
#2
megadeath2010-12-30 00:36
回复 楼主 daijiarong
按钮也是窗口,也有窗口句柄,方法如下:
1.先用EnumWindows 枚举所有窗口,在其回调函数中找到对话框窗口句柄。
2.再调用EnumChildWindows枚举该对话框中的子窗体,找到相应的按钮窗口句柄。
3.然后该干什么就干什么。
程序代码:
#include <Windows.h>
#include <tchar.h>
#include <iostream>
using namespace std;

BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
    if (hwnd == NULL)
    {
        return FALSE;
    }
    TCHAR szTitle[MAX_PATH] = {0};

    GetWindowText(hwnd, szTitle, ARRAYSIZE(szTitle));

    if (_tcsicmp(szTitle, _T("取消")) == 0)
    {
        SetWindowText(hwnd, _T("修改按钮文字"));
        int z = 0;
    }
    return TRUE;
}


BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
    if (hwnd == NULL)
    {
        return FALSE;
    }
    TCHAR szTitle[MAX_PATH] = {0};

    GetWindowText(hwnd, szTitle, ARRAYSIZE(szTitle));

    if (_tcsicmp(szTitle, _T("查找")) == 0)
    {
        EnumChildWindows(hwnd, EnumChildProc, NULL);
    }
    return TRUE;
}

int main(int,char**)
{
    EnumWindows(EnumWindowsProc, NULL);
    cin.get();
    return EXIT_SUCCESS;
}

测试:
打开notepad.exe ,随便输入点什么,按Ctrl+F,然后执行上面的代码。
1