Programming/WINAPI
-
GetFileVersionInfo : 파일 버전 확인하는 방법Programming/WINAPI 2008. 2. 6. 14:26
GetFileVersionInfo Function 특정파일의 버전정보를 확인할때 GetFileVersionInfo 함수를 사용합니다. BOOL GetFileVersionInfo( LPTSTR lptstrFilename, DWORD dwHandle, DWORD dwLen, LPVOID lpData ); Parameters lptstrFilename 버전을 확인할 파일명(전체경로포함). 만약 전체경로가 포함되지 않은 파일명인 경우 LoadLibrary함수에서 설명된 경로에서 파일을 검색합니다. Windows 95/98/Me: 해당 OS에서는 파일명이 126자보다 작아야 합니다. dwHandle 이 인자는 무시됩니다. ( 그냥 0 을 주시면 됩니다. ) dwLen GetFileVersionInfoSize함수로..
-
SHDeleteKey : 레지스트리키 한번에 지우기 (하위키가 있는 키 지우기)Programming/WINAPI 2008. 1. 31. 00:55
하위키를 가지고 있는 레지스트리키를 삭제할때 SHDeleteKey를 사용하면 말끔히 키가 삭제됩니다. LSTATUS SHDeleteKey(HKEY hKey, LPCTSTR pszSubKey); hkey 현재 오픈된 키의 핸들이나 아래와 같이 선언된 키를 사용 HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_DYN_DATA (MicrosoftWindows95 only) HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA (Microsoft Windows NTonly) HKEY_USERS pszSubKey 삭제할 서브키 ( 문자열 ) Return Value 성공시 ERROR_SUCCESS, 실패시 0 이 아닌값을 리턴하고 해당..
-
컴퓨터 사용여부( 자리비움 ) 파악하는 방법Programming/WINAPI 2008. 1. 8. 22:39
네이트온이나 MSN메신저에서 일정시간동안 사용자가 컴퓨터를 사용하지 않으면.. 자리비움이나 부재중으로 상태가 변경이 됩니다. 이러한 기능을 이용한 프로그램으로는 스크린세이버가 제일 대표적이죠.. 아무튼 사용자가 컴퓨터를 사용하고 있는지을 어떻게 파악을 할까? 일단 컴퓨터를 사용한다는건 입력장치(마우스 나 키보드 등)을 사용하고 있다는것이겠죠.. 물론 영화감상같은 경우는 예외이긴하지만.. 위와 같은 상황은 제외하고 입력장치의 사용여부를 통해서 컴퓨터가 사용중인지를 파악하는게 제일 좋은 방법이겠죠.. 마우스와 키보드의 상태를 파악하기위해서는 후킹을 하는 방법이 아주 자세하게 상태를 파악할 수 있지만.. dll을 따로 만들어야한다는게 번거롭죠.. 그래서 간단하게 마우스 좌표를 파악하는 함수인 GetCursor..
-
GetWindowThreadProcessId : 핸들(HWND)값으로 ProcessID얻는 APIProgramming/WINAPI 2008. 1. 8. 13:16
GetWindowThreadProcessId 함수는 HWND 값을 이용하여 프로세스ID를 알려주는 함수입니다. DWORD GetWindowThreadProcessId ( HWND hWnd, LPDWORD lpdwProcessId ); Parameters hWnd : PID를 얻고자하는 윈도우의 핸들 lpdwProcessId : 반환받을 PID의 포인터 만약 NULL을 주는경우 PID는 리턴값으로 반환됩니다. Function Information Minimum DLL Version user32.dll Header Declared in Winuser.h, include Windows.h Import library User32.lib Minimum operating systems Windows 95, Wind..
-
레지스트리 키 보안 및 접근 권한 ( REGSAM )Programming/WINAPI 2008. 1. 5. 22:54
RegCreateKeyEx, RegOpenKeyEx 등과 같이 레지스트리키를 제어하는 API에서는 오픈하는 키에 대한 권한(쓰기/읽기 등)을 설정을 인자( REGSAM )가 있습니다. 그 REGSAM 에서 사용하는 옵션(mask)값은 아래와 같습니다. KEY_ALL_ACCESS (0xF003F) : 모든 권한을 받는다. ( 아래 옵션들의 조합 ) KEY_QUERY_VALUE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, and KEY_CREATE_LINK . KEY_CREATE_LINK (0x0020) : 시스템에서 사용하는 옵션 KEY_CREATE_SUB_KEY (0x0004) : 서브키를 생성하는 권한 KEY_ENUME..
-
RegOpenKeyEx 사용방법Programming/WINAPI 2007. 12. 28. 01:28
RegOpenKeyEx - 지정된 레지스트리 키를 open합니다. LONG WINAPI RegOpenKeyEx( __in HKEY hKey, __in_opt LPCTSTR lpSubKey, __reserved DWORD ulOptions, __in REGSAM samDesired, __out PHKEY phkResult ); Parameters hKey 오픈할 레지스트리 키의 핸들. RegCreateKeyEx 또는 RegOpenKeyEx 로 획득한 핸들이나 기본적으로 정의되어 있는 키의 핸들(predefined keys)을 사용합니다. HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS lpSubKey hKey이하의 서브키 ( 필수는 아님..
-
WinExec는 비스타에서는 치명적...Programming/WINAPI 2007. 12. 26. 01:20
WinExec 굉장히 오래된 api인걸로 알고있습니다.. 뭐 거의 쓰지 않는걸로 알고있지만.. 이놈땜에 한 삽질을 생각하면 ... 암튼 비스타에서 WinExec를 사용하여 실행파일을 실행시키면 경우에 따라서 실행이 되지 않는 문제가 발생합니다. 아마 낮은 권한의 프로세서에서 높은 권한의 프로세서를 실행할때 문제가 발생할것으로 생각됩니다. 음.. 비주얼스투디오도 망할녀석이네요.. 웬만한건 다 경고띄워주면서 언제사라질지 모르니까 딴거쓰라고 띄워주는데.. 왜 얘는 안띄워주는지.. 암튼 ShellExecute 를 적극적으로 사용하세요..