请教:如何查找其他程序中的指定窗口[Edit类]

qiren2001 2002-04-04 03:48:34
某程序[非BCB开发]中有一个多页控件,每页上有一个单行文本框(窗口:Edit类),且该程序可运行多个实例。我现在要编一个程序,向那个程序的当前激活页中的Edit发消息,问题是:我怎样才能找到那个程序中当前激活页的那个Edit窗口呢?
注:别说用鼠标去点Edit的那方法。估计要枚举窗口,具体怎么作呢?请实验后回答。
...全文
122 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pp616 2002-04-04
  • 打赏
  • 举报
回复
int subWindows;

BOOL CALLBACK EnumChildWinProc(HWND hwnd, LPARAM lParam)
{
Form1->ShowEnging(hwnd);
subWindows ++;
return true;
}
void __fastcall TForm1::ShowEnging(HANDLE hwnd)
{
char *buf;
buf=(char *)malloc(255);
memset(buf,0x00,255);
GetClassName(hwnd,buf,255);
if(AnsiString(buf)=="Edit")
{
ListBox1->Items->Add(IntToStr((long)hwnd));
}
}

使用时在你相应的事件中加入:
subWindows = 0;
EnumChildWindows(目标窗口的句柄(通常用findwindw获得),(WNDENUMPROC)EnumChildWinProc,0);
孩皮妞野 2002-04-04
  • 打赏
  • 举报
回复
1。通过GetForegroundWindow()取得foregroud window 的Handle;
2. GetWindowText, 看看是不是该程序,如是,继续,否则退出;
3. 用EnumChildWindows枚举所有ChildWindow, 在定做的回调函数中
4。通过WindowClass(GetClassName, etc)和其他信息来判断是不是想对其操作的控件,若不是,跳过; 若是,用SetWindowText修改其内容。


因为不知道你应用的细节,不好多说,我觉得是没有问题的。

kingcaiyao 2002-04-04
  • 打赏
  • 举报
回复
没错,你这个问题要用枚举,以前的贴子有,你搜一下,用EnumWindows,EnumChildWindows这两个API函数。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧