说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关个关于findwindowex的问题

编辑:说三道四文库 发布时间:2018-02-21 03:49
HTML文档下载 WORD文档下载 PDF文档下载
想动态改一下一个外部程序文本框里的内容,我的程序段如下
HWND mywnd,mycol;
char mychar[255]="aaa";
mywnd = ::FindWindow(NULL,"物品领用管理");
mycol = ::FindWindowEx(mywnd,0,"edit1",NULL);
if (mycol == NULL)
{
AfxMessageBox("mycol is null");
return;
}
::SendMessage(mycol,WM_SETTEXT,255,(LPARAM)mychar);
可是,这里怎么也抓不到edit1的句柄,请大虾们指点一下。。。
HWND mywnd,mycol;
char mychar[255]="aaa";
mywnd = ::FindWindow(NULL,"物品领用管理");
mycol = ::FindWindowEx(mywnd,0,"edit1",NULL);
         HWND hwndAfter=NULL;
        while(hwndAfter = ::FindWindowEx(mywnd,hwndAfter,NULL,NULL))
{
memset(szText,0,256);
::SendMessage(hwndAfter,WM_GETTEXT,(WPARAM)256,(LPARAM)szText);
printf("%s\t",szText);
}
楼上的是遍历所有控件。。。我要找的,只要那个文本框的句柄,现在又有新的问题了
要是,我的窗体的名字是英文的,就能找到文本框的句柄,若窗体标题是中文的,就找不到
文本框的句柄,窗体的句柄能找到,就是那个文本框的句柄找不到,不知道哪位大虾知道这是为什么?
代码如下
HWND mywnd,mycol;
char mychar[255];
UpdateData(TRUE);
strcpy(mychar,m_mytxt);
if ((mywnd = ::FindWindow(NULL,"物品领用管理")) == NULL)
{
AfxMessageBox("the window is not find");
return;
}
if ((mycol = ::FindWindowEx(mywnd,NULL,"TEdit","")) == NULL)
{
AfxMessageBox("the control is not find");
return;
}
::SendMessage(mycol,WM_SETTEXT,(WPARAM)255,(LPARAM)mychar);
上面的代码是原来的,这才是改过后的正确的代码,为什么对英文标题的窗体有用,对中文标题的窗体没用呢?
HWND mywnd,mycol;
char mychar[255];
UpdateData(TRUE);
strcpy(mychar,m_mytxt);
if ((mywnd = ::FindWindow(NULL,"物品领用管理")) == NULL)
{
AfxMessageBox("the window is not find");
return;
}
if ((mycol = ::FindWindowEx(mywnd,NULL,"TEdit","Edit1")) == NULL)
{
AfxMessageBox("the control is not find");
return;
}
::SendMessage(mycol,WM_SETTEXT,(WPARAM)255,(LPARAM)mychar);
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘