Funktionsergebnis ausgeben und Message aktualisieren



  • Hallo,

    Ich habe dieses kleine Programm, welches diverse Dinge feststellen und in Zukunft anpassen soll.
    Windows Version prüfen und und eine Messagebox.
    DEP Status auslesen und wieder eine Messagebox...

    1. Diese Messageboxen sind ein Problem.
    Eine einzige Messagebox sollte erweitert bzw. aktualisiert werden.
    Am liebsten natürlich alles mit einer Meldung am Ende ausgeben. Es ist entweder schon zu spät oder ich bin noch zu doof in c++.

    2. Die Funktion WinVersionnummer() gibt den Wert "int_WinVersion" an switch weiter, wie kann ich mir den Anzeigen lassen zur Prüfung ohne "große Umstände"?

    3. Ich habe zwar die Windows Version in eine Funktion bekommen, wie bekomme ich den DEP-Teil aus gleiche Weise ausgelagert? Hatte ständig Fehler beim Versuch.(dies nicht definiert, das nicht deklariert...)

    Danke für jede Hilfe.

    // ConsoleApplication1.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include "Windows.h"
    #include <VersionHelpers.h>
    #include <iostream>
    #include <string>
    
    //--------------------------------------------------------------------------------------------------WINVERSION FUNKTION 
    
    int WinVersionnummer();
    int WinVersionnummer() {
    	int int_WinVersion;
    	if (!IsWindows8OrGreater())
    	{
    		if (IsWindows7OrGreater())
    		{
    			int_WinVersion = 7;
    		}
    		else {
    			int_WinVersion = 0;
    		}
    	}
    	else {
    		int_WinVersion = 8;
    	}
    	return int_WinVersion;
    }
    //--------------------------------------------------------------------------------------------------WINVERSION FUNKTION
    
    int main()
    {
    	//--------------------------------------------------------------------------------------------------WINVERSION 
    	switch (WinVersionnummer())
    	{
    	case 7:
    		MessageBox(NULL, "Windows 7", "Version is Supported", MB_OK);
    		break;
    	case 8:
    		MessageBox(NULL, "You have at least Windows 8", "Version is Supported", MB_OK);
    
    		break;
    	case 0:
    		MessageBox(NULL, "You need at least Windows 7", "Version Not Supported", MB_OK);
    		break;
    	}
    	//--------------------------------------------------------------------------------------------------WINVERSION 
    
    	//---------------------------------------------------http://voidmain.realplain.com/SetDEP.c---------DEP
    	typedef DEP_SYSTEM_POLICY_TYPE(WINAPI *GetSysDEPPolicy_f)(void);
    	HMODULE  hKernel32 = GetModuleHandleW(L"kernel32.dll");
    	GetSysDEPPolicy_f GetSystemDEP = (GetSysDEPPolicy_f)GetProcAddress(hKernel32, "GetSystemDEPPolicy");
    
    	char buf[128], output[1024];
    	LPSTR SysDEP_msg = buf;
    
    	if (GetSystemDEP)
    	{
    		DEP_SYSTEM_POLICY_TYPE SysDEP_type = GetSystemDEP();
    		LPCSTR type_msg;
    
    		OSVERSIONINFO versionInfo;
    
    		switch (SysDEP_type)
    		{
    		case DEPPolicyAlwaysOff:
    			type_msg = "DEPPolicyAlwaysOff and SetDEP will have no effect";
    		case DEPPolicyAlwaysOn:
    			type_msg = "DEPPolicyAlwaysOn and SetDEP will have no effect";
    			break;
    		case DEPPolicyOptIn:
    			versionInfo.dwOSVersionInfoSize = sizeof(versionInfo);
    			type_msg = "DEPPolicyOptIn is little to no use, on Vista and later";
    			break;
    		case DEPPolicyOptOut:
    			type_msg = "DEPPolicyOptOut is useful";
    			break;
    		default:
    			type_msg = "FATAL ERROR"; // Shouldn't happen, prevent crash
    		}
    		MessageBox(NULL, type_msg, "Result", MB_OK);
    	}
    	else
    	{
    		SysDEP_msg = "Note: This system doesn't have the DEP functions!";
    	}
    	//--------------------------------------------------------------------------------------------------DEP
    
    	return 0;
    }
    


  • Hol dir ein HANDLE auf die MessageBox, dann kannst du die gezielt adressieren.


Anmelden zum Antworten