본문 바로가기

프로그래밍49

[Windows] hosts 파일 바꾸기 (Win32API) 1. 개요 - hosts 파일 수정으로 특정 URL을 웹 브라우저에 입력 시 원하는 서버로 연결 가능. ex) www.daum.net 입력 -> 결과는 www.google.com 로 이동 - hosts 파일 경로 : C:\Windows\System32\drivers\etc\hosts - 리소스 드랍 활용 - 관리자 권한 필요 - hosts 파일 변경은 백신에서 탐지됨 2. 설정 3. 코드 #include #include "resource.h" // 수정된 hosts 파일을 리소스로 등록 : IDR_FILE1 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_Inst; LPCWSTR lpszClass = TEXT("WINDOW"); // .. 2016. 8. 10.
[Windows] 리소스 드랍 (Win32API) 1. 코드 //리소스 변수 선언 HMODULE hDll; HRSRC hResource; HGLOBAL hData; DWORD filesize, numWritten; LPVOID pResource; HANDLE hFile; TCHAR Adr[] = L"C:\\File.exe"; // 파일 경로 // 아래는 코드 적용 부분, 필요한 부분에 적절히 사용 // 리소스 찾기, 에러 시 NULL hResource = FindResource(g_Inst, MAKEINTRESOURCE(IDR_EXE1), L"exe"); // 리소스 로드, 에러 시 NULL hData = LoadResource(g_Inst, hResource); // 락, 에러 시 NULL pResource = LockResource(hData); /.. 2015. 8. 31.
[Windows] 윈도우 버전 확인 (Win32API) 1. 개요 - OSVERSIONINFOEX 구조체로 윈도우의 버전을 알수있음. 2. 코드 OSVERSIONINFOEX osvi; ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); // OSVERSIONINFOEX 구조체를 이용하여 버전 구분 switch(osvi.dwPlatformId){ // NT 기반 운영체제 case VER_PLATFORM_WIN32_NT: /* dwMajorVersion, dwMinorVersion 멤버로 운영체제 구분 ex) if(osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0) version = "vista"; .. 2015. 8. 23.
[Windows] 프로세스/운영체제 비트 확인 (Win32API) 1. 코드 // 현재 프로세스 비트 구분 #if defined(_WIN64) return TRUE; #else return FALSE; #endif // 운영체제 = 64bit, 프로세스 = 32bit 일 경우 TRUE BOOL IsCurrentProcessWow64() { BOOL bIsWow64 = FALSE; typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process; fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process"); if (!fnIsWow64P.. 2015. 8. 23.
[Windows] 프로세스 정보 확인하기 (Win32API) 1. 설명 - 현재 프로세스 정보 DWORD pid; HANDLE hdl; pid = GetCurrentProcessId(); hdl = OpenProcess(MAXIMUM_ALLOWED, FALSE, pid); - 다른 프로세스 정보 HWND hWnd; DWORD pid; HANDLE hdl; // 윈도우 이름으로 윈도우 핸들을 얻음. hWnd = FindWindow(NULL, L"Window Name"); // hWnd의 pid값 구하기 GetWindowThreadProcessId(hWnd, &pid); // 얻은 pid값으로 대상 프로세스의 핸들을 얻음. hdl = OpenProcess(MAXIMUM_ALLOWED, FALSE, pid); - 여러 프로세스 정보 #include "tlhelp32.h.. 2015. 8. 23.
[Windows] 파일열기 대화상자 (Win32API) 1. 코드 HANDLE hFile; OPENFILENAME OFN; TCHAR lpstrFile[MAX_PATH] = L""; // 필요한 부분에 아래 내용 사용 memset(&OFN, 0, sizeof(OPENFILENAME)); OFN.lStructSize = sizeof(OPENFILENAME); OFN.hwndOwner=hWnd; OFN.lpstrFilter=TEXT("ALL FILE(*.*)\0*.*\0"); OFN.lpstrFile=lpstrFile; OFN.nMaxFile=MAX_PATH; if(GetOpenFileName(&OFN) != 0) { hFile = CreateFile(OFN.lpstrFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTR.. 2015. 8. 22.
[Windows] 관리자 권한 요구하기 (Win32API) Property -> Linker -> Manifest File -> UAC Execution Level 2015. 8. 22.
[Windows] ATL90.dll, MSVCR90.dll 의존성 제거 (Win32API) ATL90.dll [Project] Property -> General -> Use of ATL -> Static Link to ATL MSVCR90.dll [Project] Property -> C/C++ -> Code Generation -> Runtime Library -> /MT 단, Debug로 컴파일 할 경우에는 /MTd 2015. 8. 21.
[Windows] 기본 윈도우 소스 (Win32API) 1. 코드 #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_Inst; LPCWSTR lpszClass = TEXT("Window"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszClassParam, int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_Inst = hInstance; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); W.. 2015. 8. 21.