Version windows

Soyez le premier à donner votre avis sur cette source.

Vue 6 399 fois - Téléchargée 322 fois

Description

J'ai vu un code qui utilisait les api pour recuperer la version de windows, je me suis dit que la méthode utilisant les variables globales _osver, _winmajor, _winminor était plus simple donc je la poste.

Source / Exemple :


#include <windows.h>
#include "resource.h"
#include "FncASM.h"

HWND hdlg;

void ObtVersionWin()
{
	char szBuff[128], *c;
	
	c = bnstrcpy(szBuff, "Windows ");

	switch (_winmajor) {
		case 4:
			switch (_winminor) {
				case 0:		*((DWORD *)c) = 0x203539; c += 3; break;	//"95 "
				case 10:	*((DWORD *)c) = 0x203839; c += 3; break;	//"98 "
				case 90:	*((DWORD *)c) = 0x204D45; c += 3;			//"ME "
			}
			break;
		case 5:
			switch (_winminor) {
				case 0:		*((DWORD *)c) = 0x204B32; c += 3; break;		//"2K "
				case 1:		*((DWORD *)c) = 0x205058; c += 3; break;		//"XP "							
				case 2:		*((DWORD *)c) = 0x33303032;	c += 4; *c++ = ' ';	//"2003 "
			}
	}
	c = bnstrcpy(c, "version build ");
    c = bnultoa(_osver, c);

	SetDlgItemText(hdlg, IDST_VER, szBuff);
}

BOOL CALLBACK DlgProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
    switch (message) {
		case WM_INITDIALOG:
			SetClassLong(hwnd, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
			hdlg = hwnd;
			ObtVersionWin();
		case WM_COMMAND:
			if (wparam == IDOK || wparam == IDCANCEL) EndDialog(hwnd, 0);
			return 0;
		default:
			return 0;
	}
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE p, LPSTR q, int r) 
{
	DialogBoxParam(hInstance, (LPCTSTR)IDD_VERWIN, 0, DlgProc, 0);

	return 0;
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
706
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
j'en savais rien ;)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Sur VS on choisit le mode de compilation C ou C++ dans les options projet quelle que soit l'extension de fichier, aucun probleme.
Messages postés
706
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
l'extension des fichiers en .cpp m'a fait dire que c'etait du C++ (meme si aucun mot clé propre a ce langage, le compilateur ne va cependant pas permettre certaines largesses du C, vu qu'il va compiler en C++...), honte a moi et a ma famille sur 5 generations.
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005

comparons ce qui est comparable, et melanger du C au C++ n'a qd meme rien a voir avec melanger du C++ avec de l'assembleur et des passages obscurs qui sont sans interet...

> un bel exemple de mélange encore, ici c'est du C et de l'asm, pas de C++...
le problème est que en général qq1 qui fourre un peu d'asm dans son code sait ce qu'il fait ... alors que qq1 qui melange du C et du C++ ne s'en rend pas forcement compte ...
(exemples : incompatibilité des flux, de la gestion mémoire ...)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Autres remarques: manque un break à la fin de WM_INITDIALOG, et return 0 inutile à la fin de WM_COMMAND
Afficher les 34 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.