首页
社区
课程
招聘
[旧帖] [求助]EnumWindows 函数怎么让用户自定义参数呢 0.00雪花
发表于: 2012-12-23 12:33 1446

[旧帖] [求助]EnumWindows 函数怎么让用户自定义参数呢 0.00雪花

2012-12-23 12:33
1446
BOOL CALLBACK EnumWindowsProc (HWND hwnd, LPARAM lParam);

BOOL CALLBACK EnumWindowsProc (HWND hwnd, LPARAM lParam)
{

    int nLen = ::GetWindowTextLength(hwnd) + 1;

   LPTSTR Caption = new TCHAR[nLen];
    ::GetWindowText(hwnd, Caption, nLen);

TCHAR szBuf[256]={0};
   if (!::lstrcmp(Caption,"无标题 - 记事本"))
    {
       // cout << (long)hwnd << endl;
char szTmp[20];
    wsprintf(szTmp,_T("%d|"),(HWND)hwnd);
wsprintf(szTmp,_T("%c|"),Caption);
    strcat(szBuf,szTmp);

}
szBuf[strlen(szBuf)]='\0';

delete[] Caption;
    return TRUE;
}

int main ()

{

::EnumWindows(EnumWindowsProc,NULL);

return 0;
}

以上是我的代码   我通过EnumWindows 来得到 ,标题是 ,"无标题 - 记事本" 的所有的窗口句柄

现在的问题是 怎么让用户自己来定义窗口标题   也就是说要让 ,"无标题 - 记事本" 变成一个参数。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习中 学习中   不懂 帮顶
2012-12-23 13:04
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
::EnumWindows(EnumWindowsProc,NULL); 第二个参数
2012-12-23 13:15
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
4
BOOL CALLBACK EnumWindowsProc (HWND hwnd, LPARAM lParam);

BOOL CALLBACK EnumWindowsProc (HWND hwnd, LPARAM lParam)
{

...
   if (!::lstrcmp(Caption,(LPTSTR)lParam))
...
}

int main ()

{

::EnumWindows(EnumWindowsProc,(LPARAM)TCHAR("无标题 - 记事本"));

return 0;
}

应该这样可行。
2012-12-23 13:23
0
雪    币: 0
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢楼上各位朋友 我已经解决了这个问题

现在出现了新的问题 是 怎么把EnumWindows 函数执行完后,把得到的句柄接收回来,

我上面给出的代码 不能接收,需要把TCHAR szBuf[256]={0}; 这句拉到函数外边去,这样能接收

但还是有问题,我在VC中测试 每次都返回正确的句柄,但我写成DLL给其他软件调用 出现了

句柄重复跌加的情况,就是第一次调试是三个句柄,第二次6个 第三次9个,不过是重复的

不知道是哪里有问题,懂的朋友请指点一下,谢谢
2012-12-23 22:37
0
游客
登录 | 注册 方可回帖
返回
//