Pobranie danych z innej aplikacji...

Odpowiedz Nowy wątek
2004-07-16 13:57
Pepe
0

Witam!
Od dłuższego czasu próbuje napisać aplikację, która pobierałaby temperaturę mojego procesora (AMD Athlon XP 2000+), płyty głównej Asus A7V600 oraz obrotów wiatraczka, itp. Niestety, nic nie wymyśliłem, a przykłady, które były prezentowane na forum, oparte na ZlPortio - u mnie nie działają. Zatem, pomyslałem sobie, że zrobię to drogą okrężną - mianowicie wraz z płytą Asusa dostarczana jest aplikacja AsusProbe - podaje ona wszystkie parametry, które mnie interesują. Zatem chcę odczytać te dane. Pytanie jak. Chcę skorzystać z funkcji pobierających tekst z innych okien Windows. I tak:
Potrafię pobrać uchwyt do okna głównego:

var
h : longint;

h:=FindWindow(pchar('TMainForm'),'Asus Probe 2');
label4.Caption:=inttostr(h)+'      '+GetText(h);

funkcja GetText pobiera tresc:

function GetText(WindowHandle: hwnd):string;
var
txtLength : integer;
buffer: string;
begin
TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
txtlength := txtlength + 1;
setlength (buffer, txtlength);
sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1]));
result := buffer;
end;

Tyle, że tutaj nic nie ma ciekawego do pobrania...
Ale, program AsusProbe ma tak zrobione, ze wszystkie informacje, w formie podsumowania przedstawione są w głównym oknie w oknie o klasie : TBgListView.
Zatem jak pobrać dane z poszczególnych komórek tego BgListView?

Wyniki, które mnie interesuja są też wyswietlane na kolejnych, bardziej szczegółowych zakładkach programu. Np. temperatura procesora wyswietlana jest w oknie o klasie : TMonitorForm (tytuł okna: MonitorForm) na komponencie, którego klasa okna to : TStaticText, zaś tytuł to interesujące mnie dane, czyli np. "48/112"9temp. procka).
Zatem, jak pobrać te dane, bo gdy wstawiam to to funkcji FindWindow to mi nic nie zwraca(konkretnie to 0)... Czy to trzeba jakoś wylistować wszystkie klasy, któe są pochodnymi klasy głównej TMainForm(która mnie akurat nie intersuje)? Wszytkie interesujące mnie dane są w oknie TMonitorForm, w kontrolkach o klasach TStaticText(pierwsza dla temp procka, druga dla temp plyty glownej, trzecia wiatraczka itd...). Jak zatem pobrac uchwyty do tych kotrolek, by przejąć ich napisy?
Mam nadzieję, że zrozumiale napisałem. Prosze o pomoc.
Pozdr.
Pepe

Uwaga: Dane o nazwie klasy okna pochodzą z programu "Grzebacz Okienkowy", uzytkownika :"Szymek".

Pozostało 580 znaków

2004-07-16 14:01
nav
0

najpierw findwindow(klasa, caption), a potem kilkukrotnie findwindowex(rodzic, child, klasa,caption). banalne, najpierw znajdz glowna forme, a potem szukaj przez findwindowex tego co jest na formie - zakladki, a potem znowu na zakladce szukaj statica.


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2004-07-16 15:43
0

najpierw findwindow(klasa, caption), a potem kilkukrotnie findwindowex(rodzic, child, klasa,caption). banalne, najpierw znajdz glowna forme, a potem szukaj przez findwindowex tego co jest na formie - zakladki, a potem znowu na zakladce szukaj statica.

No, próbuje według Twoich wskazówek. Ale co jesli dla klasy TMonitor(pochodna TMainForm) mam kilka kontrolek TStaticText. Bo dla uzyskania tekstu z kontrolki TStaticText wpisalem jej uchwyt rodzica, czyli TMonitor - ale co z innymi, któe mają tego samego rodzica? Jak to się wypisuje dla kilku kontrolek, tej samej klasy tego samego rodzica?
Jaka funkcja do tego słuzy?
Pozdr

Ps: Najlepiej by było gdyby ktoś wiedział jak czytac poszczegółne komórki tej klasy TbgListView. Bo znalazłem jej uchwyt ale co dalej nie wiem...


Zapraszam:
http://www.pawelporwisz.pl
Potrzebujesz instalator? Napiszę go za Ciebie (NSIS).
Potrzebujesz program? Napiszę go za Ciebie (Delphi).

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0