| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 847 人关注过本帖
标题:如何用VC控制某一软件的按钮
只看楼主 加入收藏
daijiarong
Rank: 1
等 级:新手上路
帖 子:19
专家分:1
注 册:2010-8-6
结帖率:88.89%
收藏
已结贴  问题点数:64 回复次数:1 
如何用VC控制某一软件的按钮
如何用VC控制某一软件的按钮,这个软件不知道按钮ID,不知道类名,只知道按钮的名称,如何获取他的句柄?并发送消息?那位大侠知道,能给出一个例子吗?我想说明的是获取按钮的句柄,不是窗口的句柄
搜索更多相关主题的帖子: 软件 
2010-12-29 19:56
megadeath
Rank: 4
等 级:业余侠客
帖 子:24
专家分:260
注 册:2008-8-29
收藏
得分:45 
回复 楼主 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,然后执行上面的代码。
2010-12-30 00:36
快速回复:如何用VC控制某一软件的按钮
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015057 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved