- Kod: Zaznacz cały
bool CALLBACK EnumWindowsProc(HWND hWnd, TListView *ListView)
{
char WindowName[80], ClassName[80];
GetWindowText(hWnd, WindowName, 80);
GetClassName(hWnd,ClassName, 80);
AnsiString CLIENT = "CLIENT" ;
DWORD procesID ;
GetWindowThreadProcessId(hWnd, &procesID);
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]->SubItems->Add(procesID);
ListView->Items->Item[i]->Update();
}
return true;
}
jak widać procesID jest liczbą i tylko to różni nazwy moich okien, wszystkie się nazywają: SRO_Client
malo tego klasy też mają taką samą nazwę: CLIENT
jedyna rzecz która pozwoli mi to rozróżnić to ten processID bo dla każdego okna jest inny, tutaj mały screen:
i teraz główny problem, czy da się mając sam processID znaleźć HWND właśnie do tego okna z tym ID a nie innego?
koliduje mi to bo np jak chce wysłać SendMessage do okna to wiadomość idzie do pierwszego lepszego okna.
oczywiście pomyślałem o tym że można byloby zmienić nazwę okna ale do tego też potrzebuje rozróżnić nazwe okna,
i tak na przykład w tym kodzie znów zmienia mi losowe okno, oczywiscie mozna pozmieniac najpierw wszystkie okna na obojetnie jakie nazwy(aby kazda nazwa się roznila od drugiej), i potem juz te rozne nazwy pozmieniam sobie tak jak ja tego chce(nie bedzie losowego wybierania jak na poczatku, bo bede widzial rozne nazwy okien), ale to zabawy wtedy bedzie duzo
- Kod: Zaznacz cały
HWND hWnd = FindWindow(NULL, "SRO_Client");
SetWindowText(hWnd, "lalala");
z processID byłoby owiele łatwiej, no i ponowie pytanie, czy da się uzyskać hwnd do okna mając tylko i wyłącznie processID tego okna?
dzięki za pomoc