Fenster schließen - Statische Bibliothek



  • Hallo

    ich hab das ziel, fenster zu schließen und habe keine fehler direkt im code.
    Ich verwende :

    VS2015 Community Edition
    Konsolenanwendung
    Vorkompilierter Header
    SDL-Prüfungen
    und diesen Code rein:

    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	const ::HWND hWnd(::FindWindow(NULL, TEXT("Unbenannt - Editor")));
    	if (hWnd != NULL && ::IsWindow(hWnd) == TRUE) {
    		std::clog << "INFO: Das Fenster \"Notepad" konnte gefunden werden!" << std::endl;
    	}
    	else {
    		CloseWindow(hWnd);
    	}
    
    	return 0;
    }
    

    Funktioniert alles, nur damit ich es ohne vcredistxyz oder sonst was woanders starten kann, habe ich statische bibliothek eingestellt.
    Jetzt bekomme ich den Fehler:

    ConsoleApplication3.exe : fatal error LNK1120: 3 nicht aufgelöste Externe
    


  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich rate mal. Die unaufgelösten externen Symbole sind FindWindow , IsWindow und CloseWindow .
    Und jetzt rate du doch mal, welche Libs du in den Linkeroptionen noch einbinden musst. Tipp: In der MSDN steht sowas unter "Requirements".



  • Wo kommen wir denn da hin wenn nun schon jedem Noob so Insidertips gegeben werden wie mal in der MSDN nachzusehen.
    Nachher empfiehlt ihm jemand noch vollständige Fehlermeldungen zu posten.
    Oder gibt ihm gar den Tip dass es meist wichtig ist ein Programm 1:1 aus dem Editor raus zu kopieren, damit man "Abtippfehler" wie in seinem Beispiel vermeidet.
    🤡



  • Die Logik des Programms ist auch merkwürdig:
    Wenn Window gefunden wird, dann Ausgabe, ansonsten schließe das (nicht vorhandene) Fenster 😉


  • Mod

    🤡 Nicht so viele Tipps, er könnte das Programm zum laufen bringen... :p 😃



  • Problem gelöst.
    Neues Problem:
    Es klappt nicht für die Notifications die ständig aufpoppen....

    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    #pragma comment(lib, "user32.lib")
    using namespace std;
    
    int main()
    {
    	const ::HWND hWnd(::FindWindow(NULL, TEXT("Neue Benachrichtigung")));
    	if (hWnd != NULL && ::IsWindow(hWnd) == TRUE) {
    		//FindWindowEx(hWnd,
    		std::cout << "INFO: Das Fenster \"Neue Benachrichtigung\" konnte gefunden werden!" << std::endl;
    		DestroyWindow(hWnd);
    	}
    	else {
    		std::cout << "ne" << std::endl;
    	}
    
    	return 0;
    }
    

    Ich finde IMMER das Fenster "Neue Benachrichtigung" und kann es NIE schließen.

    Falls ich eventuell Kinder töten muss wollte ich FindWindowEx benutzen, mit der Parametrierung komme ich allerdings nicht zurecht.

    HWND WINAPI FindWindowEx(
      _In_opt_ HWND    hwndParent,
      _In_opt_ HWND    hwndChildAfter,
      _In_opt_ LPCTSTR lpszClass,
      _In_opt_ LPCTSTR lpszWindow
    );
    

    hwndChildAfter ist doch genau was ich suche oder stehe ich grad total auf dem Schlauch?!
    Danke.


Anmelden zum Antworten