VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1287|回复: 3

GetWindowText 和 EnumWindows 的问题

[复制链接]
74_avatar_middle
最佳答案
0 
在线会员 发表于 2016-2-18 16:23:23 | 显示全部楼层 |阅读模式
3驿站币

一下代码是Win32控制台程序


我想用 EnumWindows  取窗口句柄


现在需要用 GetWindowText 比较标题


但是GetWindowText我用不来,求教








#include <stdio.h>
#include <windows.h>
#include<string.h>
//#include<allege.h>


BOOL CALLBACK 窗口信息回调函数(HWND hwnd, LPARAM lParam)
{
        //LPWSTR 窗口标题 = NULL;
        char str2[256];
        LPTSTR p = (LPTSTR)str2;
        //LPTSTR p = new char[255];
//        getmem(p, 255);
        GetWindowText(hwnd, p, 255);
        printf("%s", str2[256]);
        //printf("进程列表:%d 窗口标题:%s\n", (int)hwnd,p);
        return (1==0); // 返回真就是一直循环取出窗口信息为止

}


int _FindWindow(char * 类名, char * 标题)
{
        HANDLE 窗口句柄 = NULL;
        int 窗口句柄_ = 0;
        LPARAM lparam= (LPARAM)NULL;
        //printf(文本);
        if (类名 == "" || 类名==NULL)
        {
                类名 = NULL;
        }

        if (标题 == "" || 标题 == NULL)
        {
                标题 = NULL;
        }
        //printf("%s %s", 类名, 标题);
        //Win7 居然无法使用..
        窗口句柄 = FindWindow((LPCWSTR)类名, (LPCWSTR)标题);
        窗口句柄_ = (int)窗口句柄;
        if (窗口句柄_ == 0) // 一般Win7系统就不行用FindWindow获取窗口句柄
        {
               
                EnumWindows(&窗口信息回调函数, lparam);
        }
       
        printf("%d", 窗口句柄_);
        return(窗口句柄_);
}




int main()
{
        _FindWindow(NULL,"FC.txt - 记事本");
        printf("\nOK!成功编译");
        getchar();
        return(0);
}





上一篇:内存调用 exe, dll ???
下一篇:VC6.0 怎样在一个对话框中嵌入另一个对话框
74_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-2-18 16:24:05 | 显示全部楼层
这是C代码
81_avatar_middle
最佳答案
3 
online_supermod 发表于 2016-2-18 17:26:32 | 显示全部楼层
变量名和函数名都用中文。。。第一次见到这样的代码,看来楼主以前是用易语言的GetWindowText  和 EnumWindows 的问题
83_avatar_middle
最佳答案
0 
在线会员 发表于 2016-2-19 07:08:01 | 显示全部楼层
易语言转过来的确要费点时间的。慢慢来吧。
我不太明白你想问什么,但这个我有用过。VC6上的。MFC,里面用到了CSTRING类。搞成纯C也比较容易吧。你试着改一下?
//////////////////////////////////////////////////////////////////////////
//关掉包含指定文本标题的窗口
CString ToKillWinTiltle="";
int KillErroWinNums=0;
CMDlg *pmthis;
BOOL CALLBACK EnumWindowsProc_toKill(HWND hwnd,LPARAM lparam)
{
        char lpWinTitle[512];
        ::GetWindowText(hwnd,lpWinTitle,256-1);
        CString m_strTitle;
        m_strTitle.Format("%s",lpWinTitle);
        if(m_strTitle.Find(ToKillWinTiltle)!=-1)
        {
                HANDLE hProcessHandle;
                ULONG nProcessID;
                ::GetWindowThreadProcessId(hwnd, &nProcessID );
                hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE, nProcessID );
                ::TerminateProcess( hProcessHandle,0);
                if (ToKillWinTiltle=="Error")
                {
                        KillErroWinNums++;
                        char cshowstr[64];
                        sprintf(cshowstr,"关闭错误窗口数量: %d",KillErroWinNums);
                        pmthis->SetDlgItemText(IDC_EDIT6,cshowstr);
                }
        }
        return TRUE;
}
void CMDlg::killwinincludetxt(CString wintxt)
{
        ToKillWinTiltle=wintxt;
        if (ToKillWinTiltle=="")
        {
                return;
        }
        ::EnumWindows(EnumWindowsProc_toKill,0);
}
//////////////////////////////////////////////////////////////////////////
void CMDlg::OnButton6() //关闭指定窗口
{
        CString wintitle;
        GetDlgItemText(IDC_COMBO3,wintitle);
        killwinincludetxt(wintitle);
}
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-22 12:18

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表