C++ 一个程序获取另一个程序Edit控件的内容
生活随笔
收集整理的這篇文章主要介紹了
C++ 一个程序获取另一个程序Edit控件的内容
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載地址:https://www.cnblogs.com/lujin49/p/4796502.html
//一個程序獲取另一個程序Edit控件的內容
//根據指定程序的標題名獲取改程序窗口的句柄 HWND hWnd=::FindWindow(NULL,"zhang001"); if(hWnd) { MessageBox("get windows"); //根據窗口句柄獲取EDIT控件的ID,但是這個ID是通過VS工具spy++獲取的 HWND h = ::GetDlgItem(hWnd,0x3E9); if (h!=NULL) { CString str0; //要知道SendMessage用法,特別是第三個參數 //根據EDIT控件的ID獲取控件內容,存放到str0中 ::SendMessage(h,WM_GETTEXT,20,(LPARAM)(LPCTSTR)str0); //將獲得的內容放到本程序指定的EDIT控件中進行顯示 GetDlgItem(IDC_EDIT1)->SetWindowText(str0); MessageBox(str0); } } else { MessageBox("fail!"); } 運行結果如下: 采用以上程序由于采用CString,獲取的內容大小不定,當制定的緩存和制定的大小不一樣時就會產生一下的錯誤 整個程序改為一下代碼,就好了: //一個程序獲取另一個程序Edit控件的內容//根據指定程序的標題名獲取改程序窗口的句柄 CString str;GetDlgItemText(IDC_TITLE,str);HWND hWnd=::FindWindow(NULL,str);//"zhang001"if(hWnd){MessageBox("get windows");//根據窗口句柄獲取EDIT控件的ID,但是這個ID是通過VS工具spy++獲取的 HWND h = ::GetDlgItem(hWnd,0x3E9);if (h!=NULL){//CString str0;char temp[50];//要知道SendMessage用法,特別是第三個參數//根據EDIT控件的ID獲取控件內容,存放到str0中 ::SendMessage(h,WM_GETTEXT,sizeof(temp)/sizeof(char),(LPARAM)temp);//第三個和第四個參數是緩存大小和緩存指針//將獲得的內容放到本程序指定的EDIT控件中進行顯示 GetDlgItem(IDC_EDIT1)->SetWindowText(temp);//MessageBox(str0); }}else{MessageBox("fail!");}?注:要想獲取某控件的位置 可以使用下面的方法
GetDlgItem(控件ID)->GetWindowRect(&rect);//獲取控件基于全頻的位置ScreenToClient(rect);//轉換為對話框上的相對位置?如何獲取控件的ID
?
MFC:: CWnd *pWnd = GetFocus(); if(pWnd == NULL) ;//no focus else UINT nID = pWnd->GetDlgCtrlID();SDK: HWND hWnd = ::GetFocus(); if(hWnd == NULL) ;//no focus else UINT nID = ::GetDlgCtrlID(hWnd);GetFocus: The return value is the handle to the window with the keyboard focus.If the calling thread's message queue does not have an associated window with the keyboard focus, the return value is NULL.
總結
以上是生活随笔為你收集整理的C++ 一个程序获取另一个程序Edit控件的内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML作业-保护环境-保护地球
- 下一篇: Qt creator5.7 OpenCV