MessageBox kullanımı ve sistem bilgilerinin alınması

MessageBox fonksiyonunun C++ konsol projesi üzerinde nasıl oluşturulduğu ve kullanımına dair küçük bir örneği sistem bilgilerinin alınması üzerinden gerçekleştirdim.

MessageBox, gösterilecek mesaj için bir kutucuk ortaya çıkarır. Parametreleri: İlk parametre, NULL olması durumunda pencerenin bir parent’ı olmadığını ifade eder, ikinci parametre, yazılacak içeriğin değişkenini belirtir, üçüncü parametre, MessageBox başlığı için girdi ister, dördüncü parametre ise MessageBox üzerinde buton, ikon gibi şeyler eklemeye yarar. Ayrıca MessageBox, üzerinde tıklanan butona göre bir integer değer döndürür.

#include <iostream>
#include <Windows.h>
#include <Lmcons.h>
#include <tchar.h>
#define INFO_BUFFER_SIZE 32767

void CombineInformations(WCHAR Informations[], WCHAR Info[]);

int main()
{
	WCHAR informations[256];
	WCHAR userName[UNLEN + 1];
	TCHAR computerName[MAX_COMPUTERNAME_LENGTH + 1];
	WCHAR processorCoreCount[4];

	DWORD computerNameBuffer = INFO_BUFFER_SIZE;
	DWORD userNameBuffer = UNLEN+1;

	GetComputerName(computerName, &computerNameBuffer);
		
	GetUserName(userName, &userNameBuffer);

	SYSTEM_INFO systemInfo;
	GetSystemInfo(&systemInfo);
	DWORD architectureValue = systemInfo.wProcessorArchitecture;

	swprintf_s(
		processorCoreCount,
		4,
		L"%d",
		systemInfo.dwNumberOfProcessors // get number of processors and set it to processorCoreCount variable
	);

	LPCWSTR architecture; //as we know the value of architecture, values mean something. see the MS docs.
	if (architectureValue == 9) { architecture = L"64 bit"; }
	else if (architectureValue == 5) { architecture = L"ARM 32 bit"; }
	else if (architectureValue == 12) { architecture = L"ARM 64 bit"; }
	else if (architectureValue == 6) { architecture = L"IA 64 bit"; }
	else if (architectureValue == 0) { architecture = L"32 bit"; }
	else { architecture = L"Bilinmeyen mimari"; }

	for(int i=0; i<256 ; i++)
	{
		informations[i] = '\0';
	}

	CombineInformations(informations, (WCHAR*) L"Computer name:\t");
	CombineInformations(informations, (WCHAR*) computerName);
	CombineInformations(informations, (WCHAR*) L"\nUser name:\t");
	CombineInformations(informations, (WCHAR*) userName);
	CombineInformations(informations, (WCHAR*) L"\nNumber of processors:\t");
	CombineInformations(informations, (WCHAR*) processorCoreCount);
	CombineInformations(informations, (WCHAR*) L"\nArchitecture:\t");
	CombineInformations(informations, (WCHAR*) architecture);

	MessageBox
	(	NULL, 
		informations, 
		L"System Informations",
		MB_OK | MB_ICONINFORMATION);

	return 0;
}

void CombineInformations(WCHAR Informations[],WCHAR Info[]) // gather all informations into one variable which will be written on message box later
{
	int j = 0;
	for(int i = 0; i<255 ; i++)
	{
		if(Informations[i]=='\0')
		{
			Informations[i] = Info[j];
			if(Info[j] == '\0')
			{
				return;
			}
			j++;
		}
	}
}