"ungültiger zugriff auf speicherbereich"
-
Komisch. Bei LPWNDCLASSEX hast du keinen Fehler bekommen? Hast du windows.h eingebunden?
-
doch doch! bei lpwndclassex kam ein fehler.
ich dachte du meinst deine variante und die von Horst2.

hast du eine idee? ich kann mir echt nix vorstellen.

edit: ja, klar windows.h ist eingebunden

-
hast du dich vielleicht verschrieben? kann es mir auch nicht erklären
-
den code, den ich bereits habe:
BOOL ShowExtendedStyles(HWND hwndDialog, HWND hwndFoundWindow) { HINSTANCE hInstance = NULL; WNDCLASSEX wndClassEx; char szClassName[255]; // Puffer des Klassennamen, nullterminiert char szOutput[255]; // Ausgabe // Retrieves a handle to the application instance. hInstance = (HINSTANCE)GetWindowLong(hwndFoundWindow, GWL_HINSTANCE); // Retrieves the name of the class to which the specified window belongs. int ClassNameNumChars = GetClassName(hwndFoundWindow, szClassName, sizeof(szClassName)-1); // Klassen-Informationen anfordern: if(GetClassInfoEx(hInstance, szClassName, &wndClassEx) == 0) { ErrorExit(); } else { //do something } // return value if SUCCESS return true; }@horst2 : dein new WNDCLASSEX funkt genau wie WNDCLASSEX wndClassEx;!
-
shareholder schrieb:
@horst2 : dein new WNDCLASSEX funkt genau wie WNDCLASSEX wndClassEx;!
schon klar

kannst du noch mal die genaue Fehlermeldung posten
-
bei mir spuckt er keinen Fehler aus.
Mit was arbeitest du?
-
void ErrorExit() { TCHAR szBuf[80]; LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); wsprintf(szBuf, "Error %d: %s", dw, lpMsgBuf); MessageBox(NULL, szBuf, "Debugging Error", MB_OK); LocalFree(lpMsgBuf); }Error 1411: Klasse ist nicht vorhanden
-
Ich arbeite mit Microsoft Visual Studio.
Wird aber damit nix zu tun haben. *g*
-
mmmh, hab ich auch. was hast du für ein projekt?
unterstützt du mfc?bei geht's
-
Und bei welcher Zeile kommt der Fehler genau?
-
Ist das ein Fenster einer fremden Anwendung?
-
Wenn ja benutz GetClassLongPtr.
-
Benutze Win32
HINSTANCE hInstance = NULL; WNDCLASSEX wndClassEx; char szClassName[255]; // Puffer des Klassennamen, nullterminiert // char szOutput[255]; // Ausgabe HWND hwndFoundWindow = FindWindow("MineSweeper", "MineSweeper"); if(hwndFoundWindow == NULL) MessageBox(NULL, "Fenster wurde nicht gefunden", "blub", MB_OK); // Retrieves a handle to the application instance. hInstance = (HINSTANCE)GetWindowLong(hwndFoundWindow, GWL_HINSTANCE); // Retrieves the name of the class to which the specified window belongs. int ClassNameNumChars = GetClassName(hwndFoundWindow, szClassName, sizeof(szClassName)-1); // Klassen-Informationen anfordern: if(GetClassInfoEx(hInstance, szClassName, &wndClassEx) == 0) { ErrorExit(); } else { //do something MessageBox(NULL, "Alley OKAY :=)", "blub", MB_OK); }Funktioniert der Code bei Euch, wenn ihr die Anwendung MineSweeper geöffnet habt?
-
ok, also ein fenster eines fremden prozesses?!
-
Ja, steht ja da!

-
hast ja nacheditiert. die lösung steht ja auch da.
-
stimmt, ein paar sekunden, bevor dein beitrag erschienen ist. sry

der code funktioniobelt dennoch nicht, es wird immer die error-funktion aufgerufen.

-
ok kannst ja mal zeigen wie du es benutzt.
-
das ist der komplette funktions-body,
habe nur den kopf und den rumpf weggelassen.der code wird ausgeführt, wenn ich auf einen btn klicke
-
hä?? ich hab dir doch gesagt du sollst die Funktion GetClassLongPtr verwenden.