반응형

tip 35

COM+ 만드는 방법

1. ActiveX Library 프로젝트를 생성한다. 2. Active Server Object 프로젝트를 생성한다. 3. 생성할 Object 명을 입력한다. 4. 자동으로 테스트 asp 파일까지 만들어준다. 프로젝트명은 델파이 프로젝트 명이고, 오브젝트명은 3번에서 입력한 CoClass Name 가 된다. 5. 메소드 or 프로퍼티 등 필요한 것들을 만든다. Method로 할 경우, Return Type 는 HRESULT에서 수정을 하지 못한다. (적어도 "Active Server Object" 에서는, Com Object 에서는 BSTR 등이 가능하다) 대신에 Parameters 에서 Modifier 을 Out, Retval 로 하면 Return 으로 설정 가능하다. (단, ..

Programming/Delphi 2010.06.30

작업표시줄에 프로그램 표시하기/숨기기

procedure CreateParams(var params:TCreateParams); override; window class 속성에 보면 WndParent라는게 있습니다. TForm 속성이 아니구요 WndParent 속성이 Application의 MainForm의 Handle로 되어있지 않고 DesktopWindow로 되어있는 경우 그렇게 나타납니다. 주로 dll에 Form이 포함되어잇는경우 Dll안에 Form들이 작업창에 나타나곤 하죠 [방법1] TForm의 CreateParams 함수롤 오버라이드 해서 아래와 같이 Params에서 WndParnet를 메인윈도우핸들로 설정해주면 됩니다. procedure TForm2.CreateParams(var Params: TCreateParams); begi..

Programming/Delphi 2010.06.30

Access violation 난 곳 찾기

Project - Options 로 들어간다. Linker - Map File - Detailed 를 선택 후 "OK" 버튼을 누른다. 그럼 프로젝트가 저장되는 폴더에 프로젝트 이름.map 파일이 생성된다. 에러난 주소 $00456415에서 HIntance인 $00400000을 뺀다. 그리도 PE포맷의 헤더등 불필요한 앞부분 사이즈인 $1000 도 뺀다. 그러면 $00055415가 된다. 그러면 map파일에서 $00055415를 찾아보면 33line 0001번째 문자에서 에러가 났다는 것을 알 수 있다. XP, 2000에서는 HInstance는 항상 $00400000이고 델파이로 만들어진 EXE의 PE헤더정보는 항상 $1000 바이트이다. 그러므로 에러가 난 주소 = 에러화면에 나온주소 - $004100..

Programming/Delphi 2010.06.30

INI 파일 사용하기

IniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); try IniFile.WriteString('CONFIG','OriginalFolder', STRING_1); STRING_2 := IniFile.ReadString('CONFIG', 'DestFolder', DEFAULT); finally IniFile.Free; end; Use File = IniFiles Var = IniFile : TIniFile STRING_1 = INI 파일에서 읽은 값을 저장할 문자열 변수 STRING_2 = INI 파일에서 읽은 값을 저장할 String or Integer 형 변수 DEFAULT = 해당하는 Section에 Ident가 없을 때 이..

Programming/Delphi 2010.06.30

다른 프로그램 종료시까지 대기하기

// 프로그램에서 서브 프로그램을 실행시킨 후 종료시까지 대기한 후, 종료가 되면 실행 procedure Tfrm_UMS.InstallConversion; var StartupInfo : TStartupInfo; ProcessInfo : TProcessInformation; nFlag : Boolean; FileName : String; nCardinal : DWORD; nHandle : HWND; Cnt : Integer; begin VCLUnZip.ClearZip; Cnt := 0; nFlag := False; FileName := ExtractFilePath(Application.ExeName) + 'plugin' + _USE_CONVERSION_FILE_PATH + 'Setup.exe'; try ..

Programming/Delphi 2010.06.30

지정 함수를 쓰레드에 실어서 실행시키는 클래스 (델파이 버전)

{ 지정 함수를 쓰레드에 실어서 실행시키는 클래스 (델파이 버전) 델파이라고 해서 다를 것은 없습니다. 다만, 델파이와 C++의 약간의 언어적 차이만 손보면 동일하게 동작합니다. 설명은 아래의 팁 지정 함수를 쓰레드에 실어서 실행시키는 클래스를 보시기 바랍니다. } unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(S..

Programming/Delphi 2010.06.30
반응형