[WINAPI] Problem z funkcją GetClassInfo()

0

Oto kod: c++:

    
WNDCLASS wc; 
HWND hProcess = FindWindow("KlasaOkna", 0); 
DWORD hInstance = GetClassLong(hProcess, 0); 
bool test = GetClassInfo((HINSTANCE)hInstance, "KlasaOkna", &wc);

Nie wiem dalczego wartość zwracana przez funkcję wynosi 0. Czy zrobiłem coś źle?

0

po 1 to upewnij się, że FindWindow zwraca uchwyt,
po 2 a, GetClassLong z drugim parametrem 0 zwracasz pierwsze 4 bajty z EXTRAMEMORY klasy okna, w klasach systemowych generalnie są tam uchwyty do obiektów GDI używanych przez klasę, a jeśli to ty tworzyłeś okno, to sam powinieneś wiedzieć co tam jest, czy coś tam w ogóle jest, mało prawdopodobne że jest tam uchwyt instancji, a pewnie o to ci chodzi

więc druga linijka jest błędna z poziomu logicznego

skoro GetClassLong zwraca ci 0 (bo pewnie nic tam nie ustawiłeś), podajesz w GetClassInfo w pierwszym parametrze 0, a zero tam oznacza klasy tylko systemowe, a takiej pewnie nie ma i zwraca ci FALSE

ROZWIĄZANIE:
pewnie chciałeś tak:
DWORD hInstance = GetClassLong(hProcess, GCL_HMODULE); // to powinno zwrócić instancję

CZY TO MA SENS?
coś ty za bardzo kombinujesz, powiedz co chcesz uzyskać, bo po co pobierać GetCLassInfo skoro informacje możesz pobrać przez GetCLassLong

0

Funkcja FindWindow zwraca mi uchwyt. GetClassLong zarówno z parametrem GCL_HMODULE jak i bez zwraca 0.
Moim celem jest zdobycie informacji o polach klasy okna,a następnie zmienienie kilku z nich i zarejestrowanie jeszcze raz.

0

Przepraszam, jednak funkcja GetClassLong zwraca już poprawną instancje, ale niestety nadal GetClassInfo() zero.

0

a GetLastError co mówi?

0

Zwraca wartość 1141. Dziwi mnie fakt, że jak nie uruchomie w ogóle okna i do funkcji GetClassInfo podam jako instancje 0 to jest ten sam błąd.

0

Przepraszam, poprawka błąd: 1411 czyli "Class doesn't exist."

0
Specjalista napisał(a)

Przepraszam, poprawka błąd: 1411 czyli "Class doesn't exist."

no widzisz, więc teraz chyba jasne, w czym tkwi błąd :>

0

No właśnie nie bo funkcją GetClassName pobieram odpowiednią nazwe klasy, więc czemu niby klasa ta nie istnieje?

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