분류 389

IHTMLWindow2::get_document returns E_ACCESSDENIED 뱉을 경우

IHTMLWindow2 *pWin~~~~ // 유효한 인터페이스가 존재하는 경우, 도큐먼트를 구할 시 다음과 같이 두 경우 고려 처리하면 된다. if(S_OK == (hr=pWin->get_document(&pDocFrame))){ // 제대로 구해지면 여기서 프레임 도큐먼트를 가지고 작업 //~~~~~~~~ pDocFrame->Release(); } else if(hr == E_ACCESSDENIED){ // 옆의 에러 발생시 아래와 같은 처리 IServiceProvider *pSP=NULL; IWebBrowser2 *pWBSub=NULL; if(S_OK == pWin->QueryInterface(IID_IServiceProvider, (void**)&pSP)){ if(S_OK == pSP->Query..

웹, HTML 2009.09.28

WideCharToMultiByte, MultiByteToWideChar 메모리 할당 관련 리턴 값

WideCharToMultiByte, MultiByteToWideChar와 관련해서 오해가 많고 헷갈리는 부분이 여섯번째 인수를 0으로 줬을 때의 리턴값이다. 리턴하는 값이 바로 인수로 집어넣을 수 있는 메모리 할당에 필요한 크기인지, 변환될 버퍼의 문자열 길이인지, 게다가 널터미네이트가 고려되었는지도 헷갈린다. 검색해서 여러 블로그와 웹페이지를 둘러보았는 데 문자열 변환결과는 맞게 나오지만 그 과정에서 잘못 의미를 이해하고 사용하는 경우도 많았다. ///////////////////////////////////////////////////////////////////2019년 추가)// WideCharToMultiByte, MultiByteToWideChar 함수는 작동이 독특하다. 특히 리턴값에 주목..

C, C++ 문법 2009.09.04

리스트뷰 아이템 스왑, 이동, 정렬 관련 API 소스

// 컬럼 수는 외부에서 입력한다. 이 함수는 빈번하게 사용하므로 Header_GetItemCount 호출은 낭비. void __stdcall ListItemSwap(HWND hList, int One, int Two, int iColCount) { // 텍스트 제외 속성 교환 LVITEM liOne={0}, liTwo={0}; liOne.mask = liTwo.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE; liOne.stateMask = liTwo.stateMask = LVIS_CUT | LVIS_DROPHILITED | LVIS_FOCUSED | LVIS_SELECTED | LVIS_OVERLAYMASK | LVIS_STATEIMAGEMASK; liOne.iSubIt..

API 2009.09.03

펌) 어셈 스트링과 배열 및 어셈으로 메모리 카피

[전광성의 어셈블리어 이해하기:9회] 스트링과 배열 | System Programming 2006.05.10 09:48 달무리(kspacepro) 카페 매니저 http://cafe.naver.com/devcore/156 1 .0 스트링관련 인스트럭션들, REP 접두어, 방향 플래그(Direction Flag) 시작하기에 앞서... 이번 회에서는 스트링과 배열을 다룰 때 쓰는 인스트럭션들과 이차원 배열을 사용하는 방법, 문자열 소팅함수를 만드는 방법에 대해 배울 것이다. 또한 본 회의 내용을 이용하면 스트링과 배열 처리를 고급언어를 이용하는 것 보다 훨씬 빠르게 할 수 있다. 어셈블리어에서는 스트링을 다루는 데 이용될 수 있는 좀더 편리한 인스트럭션들이 제공되기 때문이다.(엄밀히 말하면 CPU가 제공하는 ..

Assembly 2009.08.16

(펌)기계어 어셈블리어(Assembler)와 mmx, fpu 활용한 빠른(fast) memcpy 소스코드를 작성해봅니다.

기계어 어셈블리어(Assembler)와 mmx, fpu 활용한 빠른(fast) memcpy 소스코드를 작성해봅니다. 개발 일지 2002/12/29 어셈을 이용하여 memcpy 제작함 mmx 와 fpu 의 속도에 의심이 들어 관련 자료 찾아봄 과연 mmx 기술은 언제 어느 상황에서 사용할 수 있는 것인가...... 아래와 같은 글이 사실이라면 대용량 복사작업을 제외하면 사용할 수 있는 곳은 거의 없다고 판단됨...... MMX는 FPU 레지스터를 이용하는 것인데 FPU를 안 쓴다니 무슨 뜻인지 모르겠습니다. 매뉴얼을 좀더 자세히 읽어보시길 바랍니다. 그리고 emms 명령이 100클럭이 소요된다는 근거는 어디에 있는 것인가요? 물론 수 킬로 바이트 정도의 작은 데이터를 복사하는데 MMX나 SSE를 쓰는 것은..

Assembly 2009.08.16

어셈 명령어 정리

어셈 명령어 1.어셈블리어 Push : sp 레지스터를 조작하는 명령어중의 하나이다. 스택에 데이터를 저장하는데 쓰인다. ex:) Push eax : 스택에 Eax의 값을 스택에 저장한다. ex:) Push 20 :즉석값인 20을 스택에 저장한다. ex:) Push 401F47 : 메모리 오프셋 401F47의 값을 스택에 저장한다. Pop : 이또한 sp 레지스터를 조작하는 명령어중 하나이다. 스택에서 데이터를 꺼내는데 쓰인다. ex:) Pop eax :스택에 가장 상위에 있는 값을 꺼내애서 eax에 저장한다. 주의점 : Push 의 역순으로 값은 스택에서 Pop 된다. Mov : 메모리나 레지스터의 값을 옮길 때[로 만들 때]쓰인다. ex:) Mov eax,ebx :ebx 레지스터의 값을 eax로 옮긴..

Assembly 2009.08.16

펌) 프로그램 실행 시점에 디버거 붙이는 방법

프로그램 실행 시점에 디버거 붙이는 방법 리버스엔지니어링 2008/01/03 00:51 by 하루홍 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 1. 위의 레지스트리 키에 디버거를 붙일 프로그램 이름으로 키 생성 2. 생성한 키에 Debugger 이름의 문자열 값 생성 3. 이렇게 생성된 값에 디버거의 전체 경로 입력 예) 디버깅할 프로세스 이름이 hstest.exe 라면 아래 그림과 같음 이올린에 북마크하기

Reversing 2009.08.07

ShellExecute,WinExec,CreateProcess (IE 실행방법)

ShellExecute,WinExec,CreateProcess (IE 실행방법) 1. 레지스트리 경로 \software\microsoft\windows\currentversion\app paths\IEXPLORE.EXE 에 보시면 iexplorer.exe 패스가 나옵니다. win9x, winMe, win2k 동일합니다. spath는 설치된 경로, surl은 http://www.yahoo.co.kr/ 모두 문자열입니다. STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si,0,sizeof(STARTUPINFO)); sprintf(cmd,"%s %s",spath,surl); CreateProcess (NULL,cmd,NULL,NULL,true, NORMAL_PRIORIT..

웹, HTML 2009.07.25

HTMLElement 객체/ Event - JavaScript -

HTMLElement 객체/ Event - JavaScript - 2007/09/14 14:22 http://blog.naver.com/rakis77/70022030743 이 포스트를 보낸곳 () --- HTMLElement 객체의 프로퍼티 --- all ⓔ 특정한 HTMLElement 객체에 포함된 모든 태그들의 컬렉션 align ⓔ Block 효과를 가지는 태그의 align 속성을 가리키는 객체의 속성 className 스타일시트의 Selector로 사용하기 위해 태그에 사용된 class 속성의 값 children ⓔ 특정한 태그에 1차적으로 포함되어 있는 HTMLElement 객체들의 컬렉션 clientHeight 객체에 적용된 여백과 테두리, 스크룰바를 제외한 높이 clientWidth ⓔ 객체에..

웹, HTML 2009.07.21