본문 바로가기

전체 글

기본 브라우저로 URL 실행 대부분 기본 브라우저를 HKEY_CLASSES_ROOT 하위의 http\shell\open\command 에서 읽어와서 처리하는 경우가 대부분이었지만 비스타에서는 이곳에 값을 쓰기 위해 권한 상승이 불가피하기 때문에 대부분의 웹브라우저들은 다른 방법으로 우회하여 처리하고 있다. 이를 일일이 찾아서 처리하는 방식 대신 WINAPI 함수인 FindExecutable() 함수를 사용하여 기본 브라우저 패스를 얻어 올 수 있다. bool ExecuteDefaultWebBrowser(HWND hwnd, LPCTSTR url) { TCHAR tempFolder[MAX_PATH] = {0,}; if(GetTempPath(_countof(tempFolder), tempFolder) == 0) { // Temp 폴더를 .. 더보기
[미션 OST] 엔리오 모리꼬네 - Gabries's Oboe [미션 OST] 엔리오 모리코네-Gabries's Oboe 작곡가:엔리오 모리코네 영화 '미션'[1986] 수록곡 감동.. 감동.. 또 감동.. [출처] [미션 OST] 엔리오 모리코네-Gabries's Oboe|작성자 시즈군주 더보기
PostThreadMessage로 SendThreadMessage 구현하기 스레드에서 메시지 처리를 하는 경우 스레드에서 특별히 윈도우를 만들지 않는 이상 PostThreadMessage 밖에 메시지를 보낼 수 있는 방법이 없다. 특별한 경우 SendThreadMessage 같은 걸 사용하고 싶은 경우 Event 객체를 써서 비슷하게 구현할 수 있다. 메지시 전송 부분 enum ThreadMessageFlag { TMF_ASYNC=0, TMF_SYNC }; HANDLE waitMsg = CreateEvent(NULL, TRUE, FALSE, NULL); if(PostThreadMessage(threadId_, WM_THREAD_INITIALIZE, reinterpret_cast(waitMsg), TMF_SYNC)) { if(WaitForSingleObject(waitMsg, M.. 더보기
PostThreadMessage가 실패하는 경우 스레드를 생성하자마자 PostThreadMessage 로 메시지를 넘길 경우 에러값이 1444, ERROR_INVALID_THREAD_ID 로 넘어오게 되어 메시지 전송에 실패하는 경우가 생긴다. 이것은 스레드에서 메시지큐가 바로 생성되지 않아서 제대로된 thread id를 넣었음에도 실패하게 된다. 이런 불상사를 방지하기 위해서 CWinThread에서는 몇가지 편법을 사용한다. 스레드 생성하는 부분에서는 Event 객체를 써서 초기화가 될 때까지 대기하게 되고 스레드 프로시저에서는 초기화가 된 후 SetEvent를 호출하여 스레드를 사용할 수 있는 상태로 만들어졌음을 보장하게 된다. 스레드 생성 루틴 // setup startup structure for thread initialization THRE.. 더보기
윈도우즈 업데이트가 실패할 경우 현상 Windows Update 웹 사이트, Microsoft Update 웹 사이트 또는 자동 업데이트 기능을 통해 업데이트를 설치하려고 하면 업데이트가 성공적으로 설치되지 않았다는 메시지가 나타납니다. 그러나 웹 사이트의 업데이트 기록 부분에는 업데이트가 표시되지 않습니다. 다음과 같은 경우에 이 문제가 발생합니다. 시나리오 1 • Windows XP를 실행하는 컴퓨터를 업데이트하려고 하는 경우 • Windows XP CD를 사용하여 Windows XP 설치를 복구한 경우시나리오 2 • Windows XP를 실행하는 컴퓨터를 업데이트하려고 하는 경우 • Windows XP 서비스 팩 2(SP2)를 새로 설치한 경우 • Windows Update 사이트를 직접 방문하여 업데이트를 구한 후 Windows.. 더보기
#pragam warning 사용법 #pragma warning(push) #pragma warning(disable : 4192) #pragma warning(disable : 4278) #import #import #pragma warning(pop) push, pop을 설정하여 해당 파일에만 제거하여 전체 프로젝트에 영향을 주지 않도록 한다. 더보기
ConvertBSTRToString 링크 에러 발생시 원인 : SDK 설치시 제공된 코드에 문제가 있음. 해결 : comdef.h 수정( 검색하면 여러개 검색됨. ) # pragma comment(lib, "comsupp.lib") 부분을 아래와 같이 수정 ------------------------------------------------------------ #ifdef _NATIVE_WCHAR_T_DEFINED # ifdef _DEBUG # pragma comment(lib, "comsuppwd.lib") # else # pragma comment(lib, "comsuppw.lib") # endif #else # ifdef _DEBUG # pragma comment(lib, "comsuppd.lib") # else # pragma comment(li.. 더보기
ActiveX 컨트롤에서의 IObjectSafety 인터페이스 구현 퍼온 글 : http://cafe.naver.com/imp09.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=3 IE를 가지고 인터넷 서핑을 하다가 보안 등급에 걸려서 어떠한 메시지를 본적이 있는가? 특히 ActiveX를 사용하는 상용서비스의 경우 지금 설명하게 될 방법을 적용하여 사용자가 해당 메시지를 볼 수 없게 하겠지만, 개발자의 경우 개발 도중 이러한 메시지를 보고 당황할 지도 모르겠다. 그럼 어떻게 해야 된다는 것인가? Implementation IObjectSafety Interface for ActiveX control ActiveX? MS의 ActiveX 기술은 현재 다음과 같은 3가지로 구분되어 진다. ActiveX Control 흔히 우리가 알고 있는 .. 더보기