컴퓨터 공부/Win32 API 프로그래밍

[5월 7일 3교시] 시스템 정보 1

려리군 2009. 5. 7. 16:16

void GetSystemInfo(LPSYSTEM_INFO lpSystemInfo);

시스템 정보를 얻어오는 함수

SYSTEM_INFO 구조체 내용 : http://msdn.microsoft.com/en-us/library/ms724958(VS.85).aspx


컴퓨터 이름 조사

BOOL WINAPI GetComputerName(__out    LPTSTR lpBuffer /*버퍼*/ , __inout  LPDWORD lpnSize /*크기*/);

컴퓨터 고유 이름을 얻는다.

참고주소 : http://msdn.microsoft.com/en-us/library/ms724295(VS.85).aspx

BOOL WINAPI GetUserName(__out    LPTSTR lpBuffer /*버퍼*/ ,__inout  LPDWORD lpnSize /*크기*/);

현재 로그인한 사용자의 ID

참고주소 : http://msdn.microsoft.com/en-us/library/ms724432(VS.85).aspx


컴퓨터 이름 바꾸기

BOOL WINAPI SetComputerName(__in  LPCTSTR lpComputerName /*문자열*/);

레지스트리에 컴퓨터 이름이 저장되며 재부팅시 적용된다.

참고주소 : http://msdn.microsoft.com/en-us/library/ms724930(VS.85).aspx


시스템 색상 조사

DWORD WINAPI GetSysColor(__in  int nIndex);

시스템 색깔을 얻는다.

참고주소 : http://msdn.microsoft.com/en-us/library/ms724371.aspx

BOOL WINAPI SetSysColors(int cElements /*개수*/ ,CONST INT* lpaElements /* 변경 대상 배열* / ,

                                         CONST COLORREF* lpaRgbValues /* 색상 배열 */); 

한꺼번에 여러 개의 시스템 색상을 변경. 

WM_SYSCOLORCHANGE메세지 발생시 시스템 색상 즉시 적용

참고주소 : http://msdn.microsoft.com/en-us/library/aa453656.aspx


운영체제 버전 조사

BOOL WINAPI GetVersionEx(__inout  LPOSVERSIONINFO lpVersionInfo);

현재 운영체제 정보를 얻는다.

OSVERSIONINFO 구조체 정보 : http://msdn.microsoft.com/en-us/library/ms724834(VS.85).aspx


DLL버전조사

HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi);

DLL파일 내부에 정의된 함수.

응용 프로그램에서는 인자 DLLVERSIONINFO *pdvi만을 이용한다.

참고주소 : http://msdn.microsoft.com/en-us/library/bb776404(VS.85).aspx


#include <commctrl.h>

#include <shlwapi.h>

DWORD MyDllGetVersion(char*dll)

{

HINSTANCE hInst;

DLLVERSIONINFO dvi;

DWORD Ver=0;

DLLGETVERSIONPROC pFunc;

HRESULT hr;

hInst=LoadLibrary(dll);        // DLL을 Load

if (hInst== NULL)

return Ver;

pFunc=(DLLGETVERSIONPROC)GetProcAddress(hInst,"DllGetVersion");

        // DLL에서 DllGetVersion함수를 찾는다.

if (pFunc!= NULL) {

memset(&dvi,0,sizeof(DLLVERSIONINFO));

dvi.cbSize=sizeof(DLLVERSIONINFO);

hr=(*pFunc)(&dvi);        // Load된 DLL에서 찾은 DllGetVersion함수 실행.

if (SUCCEEDED(hr)) {

Ver=MAKELONG(dvi.dwMinorVersion, dvi.dwMajorVersion);

}

}

FreeLibrary(hInst);

return Ver;

}