Auf CListCtrl zugreifen (Automatisierung)



  • Hallo,
    ich möchte eine Automatierung für ein Tool schreiben.
    Mit Spy++ habe ich die Applikation gefunden und kann sie ansprechen.

    HWND hWndP = ::FindWindow (NULL, "Die Applikation");
    	if(hWndP == NULL){
    		AfxMessageBox("Applikation nicht gefunden.");
    	}
    

    Danach hol ich mir mit EnumChildWindows alle Fenster dieses Fensters und schreibe sie in meinen Vector.

    Nun kann ich mit z.B. mit

    ::SendMessage(vecWindows[i], WM_LBUTTONDOWN, 0, 0);
    

    Aktionen durchführen.

    Das Problem was ich habe, ist folgendes:
    Eines dieser Fenster im Fenster ist wahrscheinlich ein CListCtrl
    Im Spy++ steht unter Caption "User 1" und unter Class HistoryListCtrl

    Wie kann ich nun auf die einzelnen Elemente der Liste zugreifen?
    Mit

    CListCtrl list = (CListCtrl)list.FromHandle(vecWindows[i]);
    

    Hab ichs versucht, klappt aber nicht....

    Wie geht das?



  • evtl. so

    CListCtrl* pControl = static_cast<CListCtrl*>(CListCtrl::FromHandle(vecWindows[i]));
    


  • Hab ich auch schon probiert,
    und dann mit

    int itemCount = pControl->GetItemCount();
    
    CString out;
    out.Format("%i",itemCount);
    AfxMessageBox(out);
    
    pControl->Detach();
    

    versucht mir die Anzahl der Elemente in der Liste ausgeben zu lassen.
    Steht immer ne 0 drin 😞



  • Komischerweise gibt mir aber

    pControl->GetWindowText(out);
    

    den Titel des CListCtrl korrekt aus.

    Aber ich kann mir nicht die Anzahl der Elemente Ausgeben lassen....


Anmelden zum Antworten