BOOL operator==(const RECT& rctA,const RECT& rctB)
{
 if(rctA.left==rctB.left&&rctA.top==rctB.top
    &&rctA.right==rctB.right&&rctA.bottom==rctB.bottom)
   return TRUE;
 return FALSE;
}struct EWParam
{
HWND* hwndResult;
enum{ byCptn=0, byRct=1 }matchBy;
union{ char* sPartialCptn; RECT rct; }data;
};
BOOL CALLBACK lpEnumFunc(HWND hwndTurn,LPARAM lParam)
{
EWParam* pEwp=(EWParam*)lParam; BOOL bMatch=FALSE;
switch(pEwp->matchBy)
{
case 0://byCptn
char s[256]; GetWindowText(hwndTurn,s,256);
if( strstr(s,pEwp->data.sPartialCptn) ) bMatch=TRUE;
break;
case 1://byRct
RECT rct; GetWindowRect(hwndTurn,&rct);
if( rct==pEwp->data.rct )bMatch=TRUE;
}
if(bMatch) { *pEwp->hwndResult=hwndTurn; return FALSE; }
return TRUE;
}main()
{
 EWParam ew={&hwndIE,byCptn,"dreye"};
 EnumWindows(lpEnumFunc,(LPARAM)&ew);//含dreye的窗柄存至hwndIE
 if(!hwndIE)...
}byCptn未定义...以及其它改进建议