프로그래밍/델파이 80

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

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..

IE 보안탭의 신뢰할 수 있는 사이트에 등록하기

IE 보안탭의 신뢰할 수 있는 사이트에 등록하는 함수를 만들어 보았습니다. 함수의 매개변수로 신뢰할 수 있느 사이트에 추가할 호스트 URL을 입력하면 됩니다. function SetReliableSite(const strSite:string):boolean; const CLSID_InternetSecurityManager: TGUID = '{7b8a2d94-0ac9-11d1-896c-00c04fB6bfc4}'; CLSID_InternetZoneManager : TGUID = '{7B8A2D95-0AC9-11d1-896c-00C04FB6BFC4}'; var AResult:HRESULT; AInternetZoneManager:IInternetZoneManager; AInternetSecurityManager..

DLL에 버전 정보를 넣어 보자

델파이로 DLL을 만들때는 별도로 버전 정보를 넣어야 합니다. 프로젝트 옵션에서 바로 버전 정보를 줄 수가 없더군요.(델7) DLL에 버전 정보를 넣기 위해서는 다음과 같은 리소스(*.rc) 파일을 만듭니다. 1 VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL FILEFLAGS 0x1L FILEOS 0x4L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", "Sample Application\0" VALUE "CompanyName", "Microsoft Corp.\0" VALUE ..

PlaySound 함수 이용 소리 내기.

효과 소리를 내기 위해서 PlaySound API를 이용합니다. function PlaySound(pszSound: PChar; hmod: HMODULE; fdwSound: DWORD): BOOL; stdcall; MMSystem 유닛에 위와 같이 정의되어 있습니다. 첫번재 파라미터 pszSound 는 효과 소리 파일에 대한 별명 / 리소스 아이디 / 파일명이 옵니다. 두번째 파라미터 hmod 는 별명이나 파일명인 경우, 0을 넣고 리소스인 경우 해당 리소스인 인스턴스 핸들을 넘겨줍니다. 세번째 파라미터 fdwSound에는 다음과 같은 파라미터가 올 수 있습니다. SND_SYNC = $0000; { play synchronously (default) } SND_ASYNC = $0001; { play as..

[GR32] 다각형 영역만 클립보드로 복사하기

공개 패키지 Graphics32 1.8 버전이 새로 나왔습니다. 이를 기존 프로젝트에 적용하였더니, 한군데서 오류가 발생하였습니다. 이미지의 Interpolate를 처리하기 위한 필터가 클래스 형태로 변경되었습니다. 기존 코드(1.7) FBuffer32.StretchFilter=sfLinear; 신규 코드(1.8) TLinearResampler.Create(FBuffer32); 이런식으로 적용하였더니, 바로 그대로 사용 가능하였습니다. 1.7 버전의 ImgView에 있던 레이어의 확대 버그가 1.8에서는 해결된것 같습니다. 다각형 영역만 클랩보드로 복사하는 것은 Examples의 Sprites 예제를 응용하면 됩니다. 다음 코드는 Sprites 예제의 생성자 코드의 일부입니다. procedure Load..

브라우저를 포함한 창의 크기를 HTML 소스에 따라 자동 조정하기

서론 델파이 프로그램을 만들다 보면 공지사항 팝업창의 경우 일일이 컴포넌트를 배치하여 프로그래밍 하는 것 보다는 손쉽게 HTML로 화면을 제적하고, 폼 안에 브라우저를 넣어서 필요한 화면을 HTML로 보여줄 경우가 있습니다. 이런 경우, 팝업 형태의 폼을 한 만들고 TWebBrowser나 TEmbeddedWB 컴포넌트를 위로 올려서 디자인된 HTML 화면 크기에 맞도록 ClientWidth, ClientHeight 값을 조정하여 하곤 하였습니다. 하지만, 이런 식으로 작업을 하게 되면 팝업 창으로 표시할 각 HTML 내용들이 모두 같은 크기라면 문제가 없지만, 서로 다른 크기라면 그 각각의 경우를 위하여 프로그램 소스에서 직접 ClientWidth, ClientHeight를 따로따로 코딩해 주어야 하고,..

WM_SYSCOMMAND로 NONCLIENT 영역의 마우스 동작 흉내내기

WM_SYSCOMMAND 메시지로 윈도우 폼의 타이틀 바가 아닌 클라이언트 영역에서 마우스를 눌렀을 때, WM_MOUSEDOWN 메시지에서 WM_SYSCOMMAND의 WParam으로 $F012를 보내면, 폼을 이동시키는 효과를 그대로 낼 수 있습니다. 보통 SC_CLOSE 등 미리정의된 상수가 있지만, 아래 값들은 상수로 정의되어 있지 않아서 WParam으로 직접 넣어 주면 됩니다. $F001 : 우측 고정 넓이 조절 $F002 : 좌측 고정 넓이 조절 $F003 : 하단 고정 높이 조절 $F004 : 우하단 고정 전체 크기 조절 $F005 : 좌하단 고정 전체 크기 조절 $F006 : 상단 고정 높이 조절 $F007 : 우상단 고정 전체 크기 조절 $F008 : 좌상단 고정 전체 크기 조절 $F009,..

문자열에서 숫자만 추출하는 함수

문자열에서 숫자만 추출하는 경우가 생겨 함수로 한번 만들어 봤습니다. 문자열 데이터에서 숫자(소수점 포함)만 추출합니다. 추출한 문자열을 StrToFloatDef 함수 등을 이용하여 숫자형으로 변환할 수 있습니다. function ExtractNumeric(const strData: string): string; var i, nLen: integer; p, d: PChar; begin nLen := Length(strData); SetLength(Result, nLen); p := @strData[1]; d := @Result[1]; for i := 0 to nLen - 1 do begin if (p^ in ['0'..'9', '.', '-']) then begin d^ := p^; inc(d); end..

TEdit에서 Alignement 처리하기.(왼쪽/가운데/오른쪽 정렬)

TLabel 등에는 TAlignment 속성이 있어서 정렬 처리가 가능합니다. 하지만 TEdit에는 TAlignment 관련 속성이 없습니다. 이를 처리하기 위해서 GetWindowLong 및 SetWindowLong Windows API를 이용합니다. TEdit는 윈도우의 기본 내장 클래스인 edit 컨트롤을 래핑해 놓은 것으로 다음과 같은 스타일을 적용할 수 있습니다. { Edit Control Styles } {$EXTERNALSYM ES_LEFT} ES_LEFT = 0; {$EXTERNALSYM ES_CENTER} ES_CENTER = 1; {$EXTERNALSYM ES_RIGHT} ES_RIGHT = 2; {$EXTERNALSYM ES_MULTILINE} ES_MULTILINE = 4; {$EX..

728x90