2011-03-09 48 views
0

我正在寫一個自動填充任何win32應用程序中保存的數據的應用程序。此應用程序在MFC的vC++中完成。從textField hWnd從網站窗體中檢索文本vC++

工作過程是發送程序到托盤,全局鉤鍵盤,抓住CTRL + SHIFT + K(K = A添加,R刪除,S發送信息,M修改信息,Q退出),註釋/ decript並保存/從MySql數據庫檢索信息。

當程序捕捉到一個用戶動作,它掃描有源頂部窗口如下:

HWND hWndMW = GetForegroundWindow(); 
wchar_t buff[512]; 

this->ClearBuffer<wchar_t>(buff, 512); 
GetClassName(hWndMW, buff, 512); 
String^ sClassName = gcnew String(buff); 
this->ClearBuffer<wchar_t>(buff, 512); 

GetWindowText(hWndMW, buff, 512); 
String^ sText = gcnew String(buff); 

zOrder=0;   
EnumChildWindowsDelegate^ ecwDel = gcnew AutoComplete::EnumChildWindowsDelegate(this, &AutoComplete::hWndControls); 
EnumChildWindows(hWndMW, ecwDel, (LPARAM) NULL); 

這檢索信息的功能:

bool hWndControls(HWND hWnd, LPARAM lParam) 
{ 
    wchar_t buff[512]; 
    zOrder++; 

    this->ClearBuffer<wchar_t>(buff, 512); 
    GetClassName(hWnd, buff, 512); 
    String^ sClassName = gcnew String(buff); 

    if (sClassName->ToUpper()->Contains("EDIT")) 
    { 
     char buff1[MAX_DATASIZE]; 
     this->ClearBuffer<char>(buff1, MAX_DATASIZE); 
     int len = this->SendMessage(hWnd, WM_GETTEXT, MAX_DATASIZE, (LPARAM) buff1); 
     buff1[len] = 0; 
     String^ sTextInside = gcnew String(buff1); 
     if(textInside!="") SaveData(hWndMW, hWnd, zOrder, sTextInside); 
    } 


    return true; 
}; 

保存數據()還是要發達。 問題是:

1-如何從網站表單中獲取信息(主要是在Mozilla,IExplore或Google Crome中)?

2-有沒有什麼方法可以將信息與信息所在的控件進行匹配,而不是使用zOrder?我猜想像「控制名稱」,可以從hWnd檢索..

歡迎任何評論!謝謝,

米格爾

回答

0

好了,內心深處尋找在網絡上後,第一個問題,我發現:

http://www.codeproject.com/KB/applications/Sniffer.aspx

http://msdn.microsoft.com/en-us/library/aa366510%28VS.85%29.aspx - >很好的一步一步的例子

第二個問題仍然存在..

有什麼辦法可以唯一地匹配來自aw indow及其內容?在concret中我正在尋找編輯和靜態控件。

我發現的另一個有趣的事情是,某些應用程序並不真正顯示EDIT或任何字段中的某些數據(主要是密碼),但它們可視化顯示該字段中有一些數據,關於它如何完成的任何想法?

+0

沒有人有任何解決方案? – Miquel 2011-03-19 17:33:26