2024/12 124

[VC++]CWinThread 시작 및 종료

// 쓰레드 시작CWinThread* g_pGridThread = AfxBeginThread(GridThread, this);g_hGridHandle = pGridThread->m_hThread;  // 쓰레드 종료if(WaitForSingleObject(pGridThread->m_hThread, 2000) == WAIT_TIMEOUT){// 타임아웃까지 종료되지 않으면 강제종료pGridThread->SuspendThread();pGridThread->ExitInstance();delete pGridThread;}else {// 자동종료되어 객체가 자동삭제된다. // 자동삭제를 방지하려면 g_pGridThread->m_bAutoDelete = FALSE 로 설정하면// 객체를 삭제되지 않고 남아있다.//..

유용한 정보 2024.12.26

[VS2005] IE8 프로세스 디버깅하기

Visual Studio 2005에서 ActiveX나 Band Objet 등을 디버깅하기 위해 IE8 프로세스를 디버깅하려고 하면 IE8의 LCIE(Loosely-Coupled Internet Explorer) 때문에 디버깅하려는 프로세스에 디버거가 연결되지 않고 아래와 같은 메시지를 출력하고 실행한 프로세스가 종료되어 버린다.'[2344] iexplore.exe: 네이티브' 프로그램이 0 (0x0) 코드에서 끝났습니다.이 현상을 회피하려면 LCIE의 프로세스 추가 할당 기능을 비활성화해주면 된다.방법은 아래 레지스트리에HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MainTabProcGrowth값을 DWORD값으로 생성하고 0으로 설정해주면 된다.출..

유용한 정보 2024.12.26

[VC++]IE8 설치 시 VS2005에서 발생하는 스크립트 에러

IE8 정식 버전을 설치하고 Visual Studio 2005에서 작업을 하다가 보니 다음처럼 마법사에서 스크립트 에러가 발생하는 경우가 있었다.찾아보니 VC++ 팀블로그에 해당 현상에 대한 회피 방법이 올라와 있다.http://blogs.msdn.com/vcblog/archive/2009/03/28/some-vs2005-and-vs2008-wizards-pop-up-script-error.aspx발생하는 위치는 함수/변수 추가 마법사와 스마트 디바이스 - 프로젝트 생성, 클래스 추가 마법사에서 발생한다고 한다.이에 대한 회피 방법으로 아래 레지스트리에HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones100..

유용한 정보 2024.12.26

[VC++]Visual Studio 2005에서 원격 디버깅

원격 디버깅툴 Remote_Debugee.zip vsjitdebugger.zip  원격 디버깅에 대해서 공부를 하고, 실제로 사용해 보고 정리해 보았다. 이 내용은 내가 재홍이 형에게서 배운 내용을 정리하는 것이다. 재홍이 형에게 먼저 감사하다는 말을 하고 싶다. http://www.pyrasis.com 는 재홍이 형 사이트이다. “최근에 윈도우 프로젝트 필수 유틸리티”라는 책을 썼다. 윈도우 소프트웨어 제품을 만드시는 분들이 보면 좋은 책이다. 원격 디버깅에 좋은 점은 직접 내 pc에서 실행하지 않고, 문제가 발생한 pc에서 실행할 수 있다는 것이다. 문제가 발생한 환경에서 직접 재현하면서 trace 할 수 있다는 것이다. 소스와 개발 툴이 없는 pc에서 값을 보려면 메시지 박스나 printf로 볼 수..

유용한 정보 2024.12.26

[HTML]Textarea 입력 내용을 메일로 보낼때 줄바꿈 문제

HTML 태그 중에 TextArea 로 내용을 받게되면그 내용중에 엔터키(줄바꿈)을 하게 될경우 BR처리가 아니라 \n으로 처리를 합니다.그렇게 저장을 해서 TextArea가 아닌 그냥HTML로 나중에 출력할경우줄바꿈이 되지 않고 그냥 나오게 되는거죠따라서 메일을 전송(mail())하기 전에nl2br()함수를 이용하여 변환을 해서 전송해야함.출처: https://use1348.tistory.com/21 [유용한 정보:티스토리]

유용한 정보 2024.12.26

[C++]OS가 32비트인지 64비트인지의 여부

윈도우 OS가 몇 비트 인지 알아오는 방법에는 2가지가 있습니다. 1.GetSystemInfo, GetNativeSystemInfo 함수 사용.2.IsWow64Process 함수 사용. GetSystemInfo 부터 알아 보겠습니다. GetSystemInfo는 시스템 정보를 얻어오는 함수 입니다. 이렇게 정의 되어 있습니다. WINBASEAPI VOID WINAPI GetSystemInfo( __out LPSYSTEM_INFO lpSystemInfo ) ; 얻어오는 인자 값으론SYSTEM_INFO라는 구조체를 사용 합니다.typedef struct _SYSTEM_INFO {union {DWORD dwOemId; // Obsolete field...do not usestruct {WORDwProcessor..

유용한 정보 2024.12.26

[C++]ExitWindowsEx() 를 이용한 시스템 종료

// OS에 따라 적절하게 시스템을 강제 종료한다.BOOL SystemShutDown(){CString strOSName=_T(""); HANDLE hToken; TOKEN_PRIVILEGES tkp; CString l_sErrorCode;OSVERSIONINFO verInfo; //0: default 1: 3.1 // 2: 98 //3: 95 //4: NTverInfo.dwOSVersionInfoSize = sizeof(verInfo); GetVersionEx(&verInfo) ;switch(verInfo.dwPlatformId) { /*case VER_PLATFORM_WIN32s: strOSName = "Microsoft Windows 3.1"; MessageBox(strOSName);break; *..

유용한 정보 2024.12.26

[C++]현재 열려있는 Internet Explorer를 모두 닫는다.

// 현재 열려있는 Internet Explorer를 모두 닫는다.int CSetupDlg::CloseExplorer(void){MSG msg;HWND hWnd = ::GetWindow(::GetDesktopWindow(), GW_CHILD); char szClassName[255] = {0,};while(hWnd > 0){memset(szClassName, 0, sizeof(szClassName));GetClassName(hWnd, szClassName, sizeof(szClassName));if(strcmp(szClassName, "IEFrame") == 0 || strcmp(szClassName, "TabThumbnailWindow") == 0)::PostMessage(hWnd, WM_CLOSE, ..

유용한 정보 2024.12.26