프로그래밍 301

detour - WIN32 API Trace Utility

detour - WIN32 API Trace Utility 어떤 프로그램 작동방식이 궁금해 이것 저것 뒤져 보던중 detour 라는 MS Research 팀에서 만드는 툴에 대해 알게 되었다. 이 툴엔 여러가지 기능이 있는데 Dll Injection 툴, Api Trace 툴, Memory Allocation Trace 툴 등등.. 무엇 보다 좋았던건 소스도 포함되어 있거니와 PPT 파일로 작동 방식도 설명 해주고 있다. 이 중 가장 애용(?) 했던 것이 API 함수가 호출 되는 것을 Trace 로그로 남겨 주는 traceapi 툴이다. 이를 이용해 특정 프로그램을 실행 하면 이 프로그램이 로더에 의해 로드 되어 쓰레드가 시작 될 때 부터의 모든 API를 로그로 찍어 준다.(모든 API는 아니고 거의 모..

프로그래밍 2007.12.22

창 닫기(Alt + F4) 막기

폼에서 창 닫기를 강제로 막으려면, WM_SYSCOMMAND 메시지를 처리하면 됩니다. 다음과 같은 코드들을 추가합니다. TForm1 = class(TForm) private procedure WMSysCommand(var Msg:TMessage); message WM_SYSCOMMAND; // 생략 end; implementation // 생략 {** 창이 단축키로 닫히지 않도록 함 *} procedure TForm1.WMSysCommand(var Msg: TMessage); begin if (Msg.WParam=SC_CLOSE) then Msg.Result:=-1; end; 위와 같이 코드를 추가해 주면, 시스템 메뉴의 닫기나, X버튼 및 Alt+4로 창을 닫을 수 없게 됩니다.

비트맵 이미지를 회전하는 메소드

비트맵 이미지를 회전하는 메소드 입니다. {** 이미지를 회전시킨다. @param SourceBitmap 원본 비트맵 @param DestBitmap 회전된 이미지 비트맵 @param dAngle 회전 방향은 반시계 방향. 0~360 사이의 각도 @param clBackground 배경색 *} procedure RotateBitmap(SourceBitmap, DestBitmap: TBitmap; dAngle: Double; clBackground: TColor); const MaxPixelCount = 32768; type PRGBTripleArray = ^TRGBTripleArray; TRGBTripleArray = array[0..MaxPixelCount] of TRGBTriple; var A: Ex..

InstallShield 7.0에서 IE창 닫은후 프로그램 제거하기

프로그램을 개발하던 중에, IE를 모두 닫은 후에 프로그램을 제거해야만 하는 경우가 있었습니다. 이런 경우 InstallShield 프로그램에서 다음과 같이 처리하면 IE를 모두 닫고 제거를 수행하도록 할 수 있습니다. 아래의 코드를 OnMaintUIBefore에 적당히 넣으시면 됩니다. STRING svResult, szCaption, szAppPath; NUMBER nResult, nRetry; HWND nhWnd, nHwnd; .... svResult = @PRODUCT_NAME+"를 시스템에서 제거합니다. 계속 하시겠습니까?"; szCaption = @PRODUCT_NAME+" 제거"; nResult = SprintfBox(MB_YESNO|MB_ICONQUESTION, szCaption, "%s"..

프로그래밍 2007.12.22

InstallShield 7.0 Pro 버전에서 언인스톨 아이콘(Add Uninstall Shortcut)

다음과 같은 코드를 OnEnd 스크립트에 추가하면 됩니다. STRING szAppPath; ... if (!MAINTENANCE) then szAppPath=FOLDER_PROGRAMS^IFX_PRODUCT_NAME; AddFolderIcon( szAppPath, "프로그램 제거하기", UNINSTALL_STRING, DISK1TARGET, DISK1TARGET^"setup.exe", 0, "", REPLACE); endif; 그러면, 시작 프로그램 메뉴의 해당 프로그램 폴더에 보면 "프로그램 제거하기"라는 아이콘이 만들어져 있을 겁니다.

프로그래밍 2007.12.22

원하는 프로세스 찾기 / 프로세스 경로 얻기

1. 원하는 프로세스를 찾기 위해서 ToolAPI를 이용해야 합니다. 이를 위해서는 TlHelp32 유닛을 사용합니다. 다음은 현 시스템의 모든 프로세스 목록을 얻는 예제입니다. uses ... , TlHelp32, ... ; procedure TMainForm.btnGetProcessListClick(Sender: TObject); var AProcessEntry32:LPPROCESSENTRY32; hProcessSnap:THandle; blnNext:BOOL; i:integer; begin ClearProcessList; hProcessSnap:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); try New(AProcessEntry32); AProcessEntr..

PostgreSQL DB 백업 및 MS-SQL로의 이전

pg_dump 명령으로 데이터베이스를 백업합니다. pg_dump --help pg_dump dumps a database as a text file. Usage: pg_dump [options] dbname Options: -a dump out only the data, no schema -b dump out blob data -c clean (drop) schema prior to create -C output commands to create database -d dump data as INSERT, rather than COPY, commands -D dump data as INSERT commands with attribute names -f FILENAME specify output file n..

프로그래밍 2007.12.21
728x90