본문 바로가기
반응형

개발469

[개발/MFC] 날짜계산, 시간계산 해보자 쌈꼬쪼려 소백촌닭 MFC에서 현재 시간을 기준으로 시간계산을 하는 방법을 알아보자. 아래의 예제만 알면... 더하고 빼고 차이를 계산하는 건 문제가 아니다. 먼저 현재 날짜와 시간을 제대로 얻어야 한다. 처음 사용한다면 변수에 날짜와 시간을 표시하는 과정을 갖고 확인하는 습관을 들이자. 그럼 아래에 예제가 있다. 오늘로부터 3일 뒤의 날짜를 알고 싶다. CString s; CTime ctTime = CTime::GetCurrentTime(); s.Format("%04d.%02d.%02d", ctTime.GetYear(), ctTime.GetMonth(), ctTime.GetDay()); CTimeSpan tsAddTime(3, 0, 0, 0); ctTime += tsAddTime; // 날짜 더하기 s... 2011. 4. 29.
[개발/MFC] Thread, Process ID & Handle 윈도우즈용 응용프로그램, ActiveX, DLL, Windows Service 등을 만들기 위해서 알아두어야 할 기본적인 지식들 출처 : http://radrome.springnote.com/pages/2213794 윈도우, 프로세스, 모듈 - 핸들, ID, 파일이름 파일이름 만으로 전체 경로 얻기 GetFullPathName( sFileName, _MAX_PATH, sFullFull, 0); -> 문제 : 현재 경로에 파일름만 붙인다. GetFullPath()(만듬) : 파일일 현재 실행된 파일의 경로에 있는 검사해서 붙인다. * 윈도우 윈도 Instance : (SDK) GetWindowLong(hWndCur, GWL_HINSTANCE), (MFC)HINSTANCE AfxGetInstanceHandl.. 2011. 4. 19.
[개발/MFC] 프로세스 강제 종료 두번째 내가 특정 프로그램명을 알고 있을 때 그 특정 프로그램의 윈도우 핸들을 구할 수 있다. 그러면, 핸들에서 프로세스 ID를 구할 수 있게 된다. 그 다음 순서는 분명하다. 프로세스를 강제로 종료시키는 것이다. 그럼 아래 소스를 살펴보자. HWND hOsk=::FindWindow(NULL, "SBRICH"); if(hOsk) { CWnd* p = CWnd::FromHandle(hOsk); CString sT; p->GetWindowTextA(sT); DWORD pid2; DWORD pid = GetWindowThreadProcessId(hOsk, &pid2); // 바로서치 핸들로 프로세스 id를 구한다. HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, .. 2011. 4. 15.
[개발/MFC] 유휴 루프 처리 유휴 루프 처리 Visual Studio .NET 2003 많은 응용 프로그램은 "백그라운드에서" 처리 시간이 긴 작업을 수행합니다. 경우에 따라 이러한 작업에 다중 스레딩을 사용하면 성능을 향상시킬 수 있습니다. 스레드로 인해 개발 과정에 불필요한 오버헤드가 발생하기 때문에 MFC가 OnIdle 함수에서 수행하는 유휴 시간 작업과 같은 단순 작업에는 적당하지 않습니다. 따라서 이 문서에서는 유휴 처리를 중심으로 설명합니다. 다중 스레딩에 대한 자세한 내용은 다중 스레딩 항목을 참조하십시오. 일 부 백그라운드 처리는 사용자가 응용 프로그램과 상호 작용을 하지 않는 동안에 적절하게 수행됩니다. Microsoft Windows 운영 체제용으로 개발된 응용 프로그램은 시간이 많이 걸리는 프로세스를 여러 개의 .. 2011. 4. 15.
[개발/VC] Windows에서 프로그램을 실행할 때 "다음 계정으로 실행" 해결 방법 [개발/VC] Windows에서 프로그램을 실행할 때 "다음 계정으로 실행" 해결 방법 Microsoft Windows 2000 및 Microsoft Windows XP에서 현재 로그온한 사용자 이외의 사용자로 프로그램을 실행할 수 있습니다. 이렇게 하려면 Windows 2000에서는 RunAs 서비스를 실행하고 있어야 하고 Windows XP에서는 Secondary Logon 서비스를 실행하고 있어야 합니다. RunAs 서비스와 Secondary Logon 서비스는 이름이 다른 동일 서비스입니다. 이 문서에서는 Windows 2000 기반 컴퓨터나 Windows XP 기반 컴퓨터에서 다음 계정으로 실행 명령을 설정하고 사용하는 방법을 단계별로 설명합니다. 컴퓨터에 관리자로 로그온하거나 관리 권한이 있는.. 2011. 4. 15.
[개발/MFC] 실행중인 프로세스 강제 종료시키기 윈도우즈에서 실행중인 프로세스를 강제 종료시키자. 내가 사용하는 방법도 있지만 아래 소스가 잘 정리되어 있어서 그대로 스크랩했다. 출처 : http://koronaii.tistory.com/241 BOOL CGomControl::ProcessKill(CString strProcessName) { HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; PROCESSENTRY32 pe32 = {0}; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == (HANDLE)-1) return false; pe32.dwSize = sizeof(PROCESSENTRY32); //프로세스가 메모.. 2011. 4. 15.
[개발/VC] 레지스트리 키 열기, 닫기, 목록 가져오기, 키 값 가져오기 레지스트리 키 열기, 닫기 키 목록 가져오기, 키에 해당하는 값 가져오기(GetText, GetDword 외 필요하시면 추가하시면 됩니다.) 키하위의 값목록 가져오기. 이와 같은 동작을 하는 함수만 아래 나열. typedef struct REGVALUE_T { enum { TYPE_NONE, TYPE_DWORD, TYPE_SZ }type; string key; union { DWORD val_dword; char *val_sz; }value; }RegValue, *PRegValue; typedef list RegValueList; HKEY RegCtrl::OpenKey(string keyName) { HKEY hKey = NULL; string retval_; LONG lretval_; string rV.. 2011. 4. 13.
[개발/MFC] VC++/MFC API 팁 1. 특정 디렉토리 뒤지기 2. API를 이용하는 유니코드와 ANSI 문자열간의 변환 방법 3. 윈도우 탐색기로부터의 Drag&Drop을 받으려면 4. 시스템의 모든 드라이브 알아내기 5. 레지스트리 읽기/쓰기 1. 특정 디렉토리 뒤지기 지정한 디렉토리에 있는 모든 파일을 찾아내는 코드를 만들려면 어떻게 해야 합니까 ? 이 때 사용할 수 있는 API가 바로 FindFirstFile과 FindNextFile, FindClose라는 API들입니다. 사용 예제는 다음과 같습니다. WIN32_FIND_DATA findFileData; HANDLE hFileHandle; // szDir에 뒤지고자 하는 디렉토리의 경로명을 준다. 예를 들면 "C:\\TEMP\\*.*" // 찾아진 파일의 속성은 findFileDa.. 2011. 4. 13.
[개발/MFC] Sleep()함수 대신 프로그램 딜레이 시키기 Sleep()함수 대신 프로그램 딜레이 시키기 개발을 하다가 보면... 어떤 조건이 true가 될 때까지 기다려야 할 때가 있다. 그렇게 하려면 loop를 사용해야한다. 그리고 대기함수인 Sleep() 함수를 사용하게 되는 경우가 생기는데 이 함수를 사용하면. 모든 메세지 처리가 중단되기 때문에 프로그램 응답 없음과 같은 애매하고 난감한 사항에 처하게 된다. 그래서 이 Sleep()이라는 함수 대신에 프로세스나 쓰레드에서 사용되는 메세지는 처리되면서 특정조건이 만족할 때까지 기다릴 수 있는 함수가 필요하다. 대기시간 동안 메세지큐에서 메세지를 확인하여 처리하면서 기다리게 해준다. ///////////////////////////////////////////////////////////////// // 수.. 2011. 4. 8.
반응형