Win32 , C++ 28

ActiveX, 개체가 이 속성 또는 메서드를 지원하지 않습니다.

코딩중이던 ActiveX 를 테스트하려고 html 하나 맹글어서 var obj = document.getElementById("MyActiveX"); obj.test(); 를 했더니 개체가 이 속성 또는 메서드를 지원 안한단다.. REGSVR32 등록, 실행, 컨트롤 초기화, 동작이 다 되는데 javascript 호출할때만 에러가 나길래 뭐지 고민하다 하루가 갔다 -_-.. 결론은! COM맵(클래스 선언이 아님)에 IDispatch 가 빠져있더라... 그렇다 VBScript 등은 ActiveX 등에 IDispatch 로만 접근이 가능하다.. 근데 IDispatchImp 등 필요 코드는 다 집어넣고 정작 COM맵에 빼먹다니; 자나깨나 IDispatch 조심..

Win32 , C++ 2015.01.23

MMX 를 이용한, RGB32(ARGB) 를 RGB24(RGB) 로 변환하기

Original Posting :: https://github.com/s-silva/fennec/blob/master/plugins/visualizations/goom/mmx.asm 대략적인 설명 :: 파라미터 L1 전에 있는 코드를 난 아래와 같이 바꿔 사용했음, C++ 에서 inline asm 으로 사용했기 땀시.. 마기막 ecx 에 들어가는 값은 원문에는 바이트로 표시돼 있으나, 뭘 봐도 픽셀 갯수다.. 잘못 쓴듯.. mov edi, dest; destination mov esi, src; source mov ecx, px; pixels

Win32 , C++ 2014.09.16

실행 파일의 버전 정보 확인하기

resource 에 기록된 파일의 정보를 읽는 함수 GetFileVersionInfoSize 두번째 파라미터가 아닌 return 되는 값을 확인해야 한다는 거에 유의! // filename : 조회하려는 파일 전체 경로 (NULL 전달시 현재 실행 파일을 조회) // FileVersion :: VER 리소스의 파일 버전 // ProductVersion :: VER 리소스의 PRODUCT_VERSION void GetModuleVersion(LPCTSTR filename, CString& FileVersion, CString& ProductVersion ) { LPCTSTR filepath = filename; TCHAR module[1024]; if(filepath == nullptr) { GetModu..

Win32 , C++ 2013.07.05

Pipe 로 표준 출력 잡기

ffmpeg 등 command line 툴의 콘솔 출력을 잡기 위해선 pipe 를 이용하여 std-in, std-out, std-err 를 redirection 해야한다. redirection 은 fprintf(stdout)..., printf, fgets 등의 표준 I/O 의 목적지를 화면이 아닌 모(母) 프로그램이 받도록 도와준다. Win32 함수로 구현하기 위해선 CreatePipe, Duplicate, ReadFile, WriteFile, CloseHandle 함수를 사용해야 한다. 여러 프로그램을 pipe 로 연결시킨 경우 각각의 프로세스를 만들고 앞 프로세스의 output 을 다음 프로세스의 input 에 수동으로 넣어줘야 한다. 난 당연히 자동으로 되겠지 했으나 왜 그런지 에러만 났을 뿐이다..

Win32 , C++ 2012.08.27

WinHttp 로 Web Client 만들기

WinInet 함수가 윈도 서비스 등에 사용할 수 없음이 확인되면서, Microsoft 에서 권장하는 WinHttp 함수군으로 framework 코드를 만들었다. 요점 사항 WinHttpAddRequestHeaders - 헤더의 유효성(validation)을 체크한다. WinHttpSendRequest 에서 POST 인 경우 TotalLength 파라미터를 기록해줘야한다. TotalLength 가 실제 전송하는 데이터 길이 보다 길게 기록한 경우 WinhttpReceiveResponse 에서 15초 정도의 시간이 걸린다. 이는 서버측에서 timeout 시간동안 데이터를 더 기다리고 있기 때문에 발생한다. 개발 기준 : Visual Studio 2010 SP1, ATL, MSXML6

Win32 , C++ 2012.06.18

파일 맵핑을 이용한 파일 읽기

특징? 일단 로컬에서는 빠르다.. remote 파일이라면? 못해도 fread 등 보다는 빠르다 -_- 왜냐 미리 페이지 단위로 prefetch 를 하기 땀시/ 구현은 안했지만서도 Read 함수 외에 일종의 Lock 함수를 만들면 직접 메모리 접근이 가능하기 때문에 더 빠른 처리를 할 수 있을것 같다. 현재 구현 : read -> copy 최선의 구현 : read and process ! (버퍼의 공유)

Win32 , C++ 2012.05.02

NAFXCW.lib, libcmt.lib ~~~~ operator new

세상에서 제일 짜증나는게 콘솔 프로젝트 빌드했더니 1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)이(가) LIBCMT.lib(new.obj)에 이미 정의되어 있습니다. 1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)이(가) LIBCMT.lib(delete.obj)에 이미 정의되어 있습니다. 1>c:\users\administrator\documents\visual studio 2010\Projects\2012\Release\mediaServer.exe ..

Win32 , C++ 2012.04.25

ACE 컴파일 하기

1. 우선 ACE 를 다운로드 받고.. [http://www.cs.wustl.edu/~schmidt/ACE.html] 2. 하드에 압축을 풀고.. (난 간편하게 C:\에 풀어버렸다.. 나중에 지우기 편하게..) 3. ACE_wrappers\ace 폴더에 config.h 를 만들어 준다 config.h 에는 컴파일 되는 플랫폼에 대한 정의가 들어간 헤더 파일을 포함 시켜주면 되는데.. 내용은 저게 전부다.. 4. 컴파일 시작 난 Visual Studio 2008 을 사용하기에 ACE_wrappers_vc9.sln ACE_wrappers_vc9_Static.sln 두 개의 솔루션 파일을 Batch build 로 Debug, Release 버전에 대해 빌드 하였다. 참 쉽지 아니한가? config.h 가 왜 ..

Win32 , C++ 2009.07.14