Vista에서 알려진 경로를 구하는 방법… DarkKaiser, 2008년 10월 11일2023년 9월 6일 기존 XP에서는 SHGetFolderPath 함수를 이용하면 가능했지만 Vista에서는 SHGetKnownFolderPath 함수를 사용해야 한다. 아직 Compatibility를 위해서 기존 함수도 지원한다고 하지만 Recommand가 아니니 바꿔야 잠재된 문제를 앱앨 수 있겠죠. if (_isVista) { WCHAR *pSavePath = NULL; HMODULE shell32module = GetModuleHandle("shell32.dll"); // Defined in the platform SDK for Vista const DWORD KF_FLAG_CREATE = 0x00008000; Continue Reading
컴파일 하는 시점에 실행파일 아이콘 변경하기 DarkKaiser, 2008년 9월 6일2023년 9월 6일 간혹 컴파일 하는 시점에 실행 파일의 아이콘을 다른 아이콘으로 변경하고자 하는 경우가 있다.저 같은 경우는 업체별로 실행파일의 아이콘을 달리하여야 할 경우인데.. 이 때 아래와 같이해 주면 된다. 우선 VC++ 프로젝트에서 .rc 파일의 ICON 섹션을 보면 아래와 같은 내용이 있다. Icon with lowest ID value placed first to ensure Continue Reading
툴팁 생성시 마우스가 오버되었을 때 항상 나오도록 하기 DarkKaiser, 2008년 9월 6일2023년 9월 6일 툴팁 컨트롤 생성시 다음의 속성을 주도록 한다. TTS_ALWAYSTIP툴팁 생성시 위의 속성을 주게되면 툴팁의 윈도우가 포커스를 안가지고 있더라도 항상 툴팁이 나온다.안주게 되면 포커스를 잃어버리면 툴팁이 나오다 안나오다 하는 현상이 발생한다. Continue Reading
msvcrt.dll, msvcr71.dll, msvcr80.dll 그리고 WinSxS DarkKaiser, 2008년 9월 6일2023년 9월 6일 출처 : http://somma.egloos.com/3020481 WinSxS 는 언제 생긴건지…GAC (Global Assembly Cache) 가 Native 에도 있었다니…지나치다 보기는 했는데 오늘에야 뭐 하는 넘인지 알았네요.(예전에 미친감자님 블로그에서 보긴 했지만 당장 필요하지 않으면 잘 안보게 되서..쿨럭..) 만일 전에 .NET 공부를 해두지 않았으면 manifest 니 GAC 니 하는 개념을 몰라서 한참 헤맬뻔 했군요. Continue Reading
System.Configuration.Install 네임스페이스의 Installer 를 이용한 설치 프로젝트 작성 DarkKaiser, 2008년 4월 14일2023년 9월 6일 using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Configuration.Install; namespace WindowsApplication { [System.ComponentModel.RunInstaller(true)] public class SetupInstaller : System.Configuration.Install.Installer { public SetupInstaller() { this.AfterInstall += new InstallEventHandler(SetupInstaller_AfterInstall); this.BeforeInstall += new InstallEventHandler(SetupInstaller_BeforeInstall); this.Committed += new InstallEventHandler(SetupInstaller_Committed); } // 셋업 설치가 완료되었을 때 호출 void SetupInstaller_Committed(object sender, InstallEventArgs e) { // 아래 Continue Reading
VC에서 원격 데이터 객체 호출하는 방법 DarkKaiser, 2008년 4월 11일2023년 9월 5일 IDispatch* CreateConnection(LPCTSTR strAddr) { #ifdef UNICODE LPTSTR strAddress = strAddr; #else size_t sl = strlen(strAddr); LPWSTR strAddress = new WCHAR[sl+1]; strAddress[sl] = 0; mbstowcs(strAddress, strAddr, sl); #endif IDispatch* pDispatch = NULL; bool ok = false; RDS::IDataspacePtr pDS; if (SUCCEEDED(pDS.CreateInstance(OLESTR("RDS.DataSpace")))) { _variant_t Result; try { Result = pDS-CreateObject(_bstr_t("Component.bizCOM"), _bstr_t(strAddress)); HRESULT Continue Reading
VB의 자동화 사용 DarkKaiser, 2008년 4월 9일2023년 9월 2일 후기바인딩 사용 Dim obj as Object Set obj = CreateObject("AddBack.AddBack.1") obj.Prop = propVaue obj.Method 초기바인딩 사용 Dim obj As AddBack Set obj = New AddBack obj.someMethod 첫번째 문장이 실행되어 Visual Basic 함수인 CreateObject가 호출될 때 Visual Basic은 COM 라이브러리의 CLSIDFromProgID 함수를 호출하여 CreateObject 함수의 매개변수에 지정된 ProgID를 대응되는 CLSID로 변환한 Continue Reading
safesafe.h DarkKaiser, 2008년 4월 8일2023년 9월 6일 C언어 표준에 포함된 문자열 함수들 중에 일부는 매우 위험하다. 대표적인 함수가 strcpy와 sprintf함수다. 이 두 함수의 경우 출력 값으로 문자열 포인터를 전송한다. 하지만 출력 문자열 포인터의 크기를 입력 받지 않기 때문에 버퍼 오버런의 위험을 가지고 있다. 버퍼 오버런의 경우 보안상 취약점이 될 수 있다. 따라서 견고한 프로그램을 작성하기 위해서는 되도록 Continue Reading
내컴퓨터, 제어판, 내 내트워크 환경, 휴지통 실행하기… DarkKaiser, 2008년 4월 7일2023년 9월 4일 #using <System.dllusing namespace System; using namespace System::Diagnostics; using namespace System::ComponentModel; /// <summary/// Opens the Internet Explorer application. /// </summaryvoid OpenApplication( String^ myFavoritesPath ) { // Start Internet Explorer. Defaults to the home page. Process::Start( "IExplore.exe" ); // Display the contents of the favorites folder in the browser. Continue Reading
유니코드로 개발하기(MFC 프로젝트) DarkKaiser, 2008년 4월 7일2023년 9월 6일 출처 : http://eslife.tistory.com/entry/유니코드로-개발하기 MFC 로 거의 10년이 넘게 유지 보수해 오던 회사 프로젝트를 드디어(이제야?) 유니코드로 이전한다고 합니다. 막상 유니코드로 이전하려고 하니, 그 동안 익숙하게 사용해 오던 함수들, 특히 strcpy, memcpy 와 같은 표준 C 라이브러리가 애물단지가 되고 말았습니다. 진작에 갔어야 하는데, 차일피일 미루다 보니 한번에 수정하기엔 너무 부담스러울 정도로 Continue Reading