FindWindow i HWND

dział ogólny

FindWindow i HWND

Nowy postprzez zeno32167 » sobota, 30 sierpnia 2008, 17:24

Witam. Mam taki kod pod przyciskiem.

void __fastcall TForm4::Button3Click(TObject *Sender)
{
HWND d = FindWindow(NULL,"SRO_Client") ;

//SendMessage(d,WM_LBUTTONDOWN,120,149);
//SendMessage(d,WM_LBUTTONUP,120,149);

}

Problem polega na tym że tych okien SRO_Client mam odpalonych 6. I jak wysyłam komunikat czyli kliknięcie myszką to to idzie do losowego clienta.

Wie ktoś jak sprawdzić HWND wszystkich odpalonych clientów i wrzucić te wszystkie HWND np do TMemo, albo TBox.(najgorsze jest to że to jest typ void a do memo i box idzie String, nie umiem zrobić konwersji).

Zakładając że mam już te HWND, jak wysłać wiadomość do konkretnego clienta(dzięki znajomości HWND moge to wysłac do konkretnego ale w jaki sposób podac ten parametr?)?

Dziękuję za pomoc, czekam na sugestie
Avatar użytkownika
zeno32167
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): sobota, 30 sierpnia 2008, 17:15
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: FindWindow i HWND

Nowy postprzez Cyfrowy Baron » sobota, 30 sierpnia 2008, 18:17

Opis wyliczania okien znajduje siÄ™ w serwisie Cyfrowy Baron w dziale: porady | ciekawostki | wyliczanie okien.

Co do rozróżnienia okien, to jeżeli wszystkie mają tą samą nazwę klasy, ale różne nazwy okien to po tym można je rozróżnić. Funkcja FindWindow pobiera dwa argumenty, pierwszy to tytuł okna, a druga to nazwa klasy.
W ostatniej aktualizacji serwisu Cyfrowy Baron znajdziesz opis pobierania uchwytu do okna wskazywanego przez kursor myszy.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: FindWindow i HWND

Nowy postprzez zeno32167 » sobota, 30 sierpnia 2008, 18:44

dobrze tylko problem polega na tym ze te procesy maja taką samą nazwę okna i nazwę klasy, jedyne co je różni to HWND, ale dziękuję za nakierowanie

edit:

okienka umiem wyszukać i wrzucić je sobie na liste, tylko problem polega na tym że wszystkie wyglądają tak samo i nie ma do nich HWND.

lekko zmodyfikowany kod z Cyfrowego Barona:

bool CALLBACK EnumWindowsProc(HWND hWnd, TListView *ListView)
{
char WindowName[80], ClassName[80];

GetWindowText(hWnd, WindowName, 80);
GetClassName(hWnd,ClassName, 80);
AnsiString CLIENT = "CLIENT" ;
if(ClassName==CLIENT)
{
ListView->Items->Add();
int i = ListView->Items->Count-1;
ListView->Items->Item[i]->Caption = AnsiString(WindowName);
ListView->Items->Item[i]->SubItems->Add(AnsiString(ClassName));
ListView->Items->Item[i]->Update();
}

return true;
}
//-----------------------------------------------------------------------------------------
void __fastcall TForm5::Button1Click(TObject *Sender)
{
ListView1->Items->Clear();
EnumChildWindows(GetDesktopWindow(),(WNDENUMPROC)EnumWindowsProc, (LPARAM)ListView1);
}
Avatar użytkownika
zeno32167
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): sobota, 30 sierpnia 2008, 17:15
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 26 gości

cron