EnumWindows bleibt hängen



  • Ich habe ein Problem mit der Windowsfunktion EnumWindows.
    Wenn das Fenster nicht vorhanden ist nachdem ich Suche, fliegt mir das Programm immer um die Ohren...

    BOOL CALLBACK EnumWindowsProc_m (HWND hwnd, LPARAM lParam)
    {
      TagWindowsProg *ptagWindowsProg;
      TCHAR caTitle[1024];
    
      ptagWindowsProg=(TagWindowsProg*)lParam;
      GetWindowText(hwnd, caTitle, sizeof(caTitle)/sizeof(TCHAR));
    
    	  if(strstr(caTitle,ptagWindowsProg->caTitelName))
    	  {
    	    ptagWindowsProg->windowHandle=hwnd;
    	    ptagWindowsProg->bFound=TRUE;
    	    return(FALSE);
    	  }
    
      }
      return(TRUE);
    } // EnumWindowsProc_m()
    
    ...
      TagWindowsProg tagWindowsProg;
    
      memset(&tagWindowsProg,0,sizeof(TagWindowsProg));
      strcpy(tagWindowsProg.caTitelName,PG4UW_MAIN_TITEL_TEXT);
    
      EnumWindows(EnumWindowsProc_m, (LPARAM)&tagWindowsProg);
    

    Der Absturtz erfolg immer in der Funktion EnumWindows...

    Gruss Binggi



  • Was meinst du mit "fliegt mir um die Ohren"? In der Enum-Funktion erkennst du, ob du das gewünschte Fenster gefunden hast - wenn nicht, steht in tagWindowsProc noch das selbe wie am Anfang. Bevor du weiterarbeiten kannst, mußt du überprüfen, ob du Erfolg hattest.



  • Was meinst du mit "fliegt mir um die Ohren"?

    Das heisst, dass wenn das Fenster nicht existiert, stürtzt das Programm in der Funktion EnumWindows ab. Ich komme gar nicht dazu zum Prüfen ob das Fenster gefunden wurde.
    über die variable ptagWindowsProg->bFound solle ich ja dann entweder TRUE, oder FALSE (default Wert) erhalten, aber ich komme gar nicht so weit.



  • Setz doch mal einen Debug-Haltepunkt (MSVS F9) auf Zeile 3

    TagWindowsProg *ptagWindowsProg;
    

    und gehe (MSVS F11) jeweils Schritt für Schritt weiter.

    Wo genau bleibt dann der Debugger hängen?



  • Hmmm...
    Ich habe es jetzt mit Cygwin versucht... und ich hatte keine Probleme.
    Ich würde sagen der Compiler meiner IDE oder die ganze IDE ist *schlecht*.


Anmelden zum Antworten