Version windows

4/5 (34 avis)

Vue 6 510 fois - Téléchargée 333 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
cosmobob
Messages postés
700
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
16 août 2004 à 13:52
j'en savais rien ;)
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
16 août 2004 à 13:45
Sur VS on choisit le mode de compilation C ou C++ dans les options projet quelle que soit l'extension de fichier, aucun probleme.
cosmobob
Messages postés
700
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
16 août 2004 à 13:33
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.
BlackGoddess
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005

16 août 2004 à 11:00
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 ...)
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
15 août 2004 à 22:30
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.