VC++代码转换成Delphi代码的问题,请同时熟练操作Delphi和VC++的朋友帮忙(200分)

  • 主题发起人 主题发起人 chinaxuguojun
  • 开始时间 开始时间
C

chinaxuguojun

Unregistered / Unconfirmed
GUEST, unregistred user!
CString str;
CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
while (pMainWnd)
{
HWND hWnd,hNext;
hWnd = pMainWnd->m_hWnd;
pMainWnd->GetWindowText(str);
if(str.Find ("聊天")>-1){//找到聊天主窗口Begin
//找RichEdit
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"#32770",NULL);
pMainWnd = CWnd::FromHandle(hWnd);
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL);
CWnd* pChildWnd=CWnd::FromHandle(hWnd);
int nLen = str.GetLength ();
hNext = FindWindowEx(pChildWnd->m_hWnd,NULL,"RICHEDIT",NULL);
if(hNext){//找到消息填写控件
CRichEditCtrl* pRich=(CRichEditCtrl*)(CWnd::FromHandle(hNext));
pRich->GetWindowText (str);
pRich->SetSel (nLen,nLen);
pRich->ReplaceSel ("成都外国语学校 黄东");//填上将要发送的内容
}else return;
//找消息发送按钮
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,NULL,NULL);
while (hWnd) {
pChildWnd=CWnd::FromHandle(hWnd);
pChildWnd->GetWindowText(str);
if(str.Find ("发送")>-1){
pChildWnd->SendMessage (BM_CLICK);//发送
return;// 退出
}
hWnd=FindWindowEx(pMainWnd->m_hWnd,hWnd,NULL,NULL);
}
return;
}//找到聊天主窗口End
else pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT); //继续找
}//While
 
太麻烦了,不写了, //你只要把几个函数弄懂了,好写的


下面是我用C++Builder写的,用来关闭程序的非法窗口写的枚举程序
delphi语法差不多


HWND renHwnd,hChild;
char winText[256];
renHwnd = GetWindow(MainForm.Handle,GW_HWNDFIRST); //找到第一个顶级窗口
while(renHwnd != NULL) //判断为不为空
{
//GetClassName(renHwnd,winText,255);
//ListBox1->Items->Add(winText);
GetWindowText(renHwnd,winText,255); //得到窗口Caption
if(strstr(winText,"服务控制管理器")||strstr(winText,"播出系统")) //在得到的窗口Caption字符串里查找有没得 '服务控制管理器' 或 '播出系统'
{
hChild = GetWindow(renHwnd,GW_CHILD); //得到子窗口
while (hChild != 0)
{
// GetClassName(renHwnd,winText,255);
// ListBox1->Items->Add(winText);

GetWindowText(hChild,winText,255); //这里又是一个得到子窗口上的Caption //这个子窗口只有一个 确定 按钮,
if(strstr(winText,"确定")) //又判断字符串是否有'确定'两个字
{
// ListBox1->Items->Add(winText);

SendMessage(hChild,WM_LBUTTONDOWN,0,0); //这里是通过发送消息按键 发了一个 鼠标左键按下
SendMessage(hChild,WM_LBUTTONUP,0,0); //这里是通过发送消息按键 发了一个 鼠标左键放开
SendMessage(hChild,WM_LBUTTONDOWN,0,0);  //这里是通过发送消息按键 发了一个 鼠标左键按下
SendMessage(hChild,WM_LBUTTONUP,0,0);  //这里是通过发送消息按键 发了一个 鼠标左键放开
}
// ListBox1->Items->Add("");
hChild = GetWindow(hChild,GW_HWNDNEXT); //如没找到 找子窗口下一个窗口

}
}
renHwnd=GetWindow(renHwnd,GW_HWNDNEXT); //如没找到 找主窗口的下一个窗口

}
 
接受答案了.
 
后退
顶部