프로그래밍 301

주어진 프로세스 ID의 IE에 대한 IWebBrowser2 구하기

function GetWebBrowser2(nProcessID: THandle):IWebBrowser2; var x: Integer; AShellWindows: IShellWindows; AWebBrowser2:IWebBrowser2; dwProcessID: Cardinal; begin Result := nil; AShellWindows := CoShellWindows.Create; for x := 0 to AShellWindows.Count - 1 do begin if ((AShellWindows.Item(x) nil) and (AShellWindows.Item(x).QueryInterface(IWebbrowser2, AWebBrowser2) = S_OK)) then begin GetWindowThre..

TEmbeddedWB에서 자바스크립트 오류 무시하기

TEmbeddedWB를 사용하여 네비게이션을 하던 중에 스크립트 오류창이 나타나는 경우가 있습니다. 이 창이 나타나지 않도록 DownloadOptions의 DLCTL_SLIENT를 설정해 놓는 경우가 있는데, 이런 경우 자바스크립트 오류가 한번 발생하면 다음부터 스크립트가 제대로 실행되지 않는 문제가 있습니다. 자바 스크립트는 그대로 동작하고, 오류창만 표시하지 않기 위해서는 OnScriptError 이벤트 핸들러를 설정해 주어야 하니다. procedure TForm1.EmbeddedWB1ScriptError(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: String; var ContinueScript, Sho..

부팅된 시각 알아내기

다음과 같은 선언부를 별도의 유닛으로 만들거나, 관련 부분에 추가해 줍니다. type NET_API_STATUS = DWORD; _STAT_SERVER_0=record sts0_start: DWORD; // the time when statistics collection started sts0_fopens: DWORD; // number of times a file is opened on a server sts0_devopens: DWORD; // number of times a server device is opened sts0_jobsqueued: DWORD; // number of server print jobs spooled sts0_sopens: DWORD; // number of times t..

자바스크립트로 ContextMenu 및 특수키 입력 제한 풀기

인터넷 사이트를 돌아다니다보면, 내용 복사 등을 방지하기 위하여 ContextMenu나 특수키(Ctrl, Shift, Alt) 입력을 막아 놓은 사이트들이 더러 있습니다. 이런 사이트에서 내용을 복사하거나, ContextMenu를 다시 활성화시키는 간단한 방법이 있습니다. 다음 코드를 인터넷 익스플로러에 즐겨찾기로 새로 등록합니다. javascript:function r(d){d.oncontextmenu=null;d.onselectstart=null;d.ondragstart=null;d.onkeydown=null;d.onmousedown=null; d.body.oncontextmenu=null;d.body.onselectstart=null;d.body.ondragstart=null;d.body.onkey..

프로그래밍 2008.02.21

WebBrowser에서 ContextMenu, 특수키 막은 사이트 풀기.

웹 페이지들 중에서, 특수키(Shift, Ctrl, Alt)나 범위 선택, ContextMenu를 막아 놓은 사이트들이 심심찮게 있습니다. 이런 사이트들의 원리는 각 HTML 요소의 이벤트 핸들러를 통해서 막게 됩니다. document나 body에 이벤트 핸들러를 설정하여 막게 됩니다. 예를 들어 ContextMenu를 막을 때는 다음과 같이 HTML 코드를 작성합니다. 위와 같이 작성을 하면 내용 부분에서 ContextMenu가 나타나지 않게 됩니다. 이를 풀기 위해서 다음과 같은 코드로 ContextMenu를 다시 나타나게 할 수 있습니다. use SHDocVw_TLB, MSHTML_TLB; // ... AHTMLDocument2 := AWebbrowser2.Document as IHTMLDocume..

MS-SQL의 저장 프로시저 호출을 위하여 TADOStoredProc를 이용할 때의 주의점.

MS-SQL의 저장 프로시저 호출을 위하여 TADOStoredProc를 이용할 때는 파라미터의 순서를 반드시 일치 시켜야함을 주의해야만 합니다. MS-SQL에 다음과 같은 저장 프로시저가 있다고 가정한다면, test_proc @param1 INT, @param2 VAHRCHAR(20), @param3 DATETIME TADOStoredProc를 이용할 때는 다음과 같이 동적으로 파라미터를 순서에 맞게 생성해 주거나, IDE의 Object Inspector에서 TADOStoredProc 컴포넌트의 Parameters 속성에 직접 파라미터들을 생성해 주어야 합니다. procedure TForm1.Button1Click(Sender: TObject); var AADOStoredProc : TADOStoredP..

StrToDateTime, StrToDateTimeDef, TFormatSettings 관계 둘러보기

문자열을 날짜로 변환하는 경우에 사용하는 함수가 StrToDateTime, StrToDateTimeDef 입니다. 이 함수는 다음과 같이 선언되어 있습니다. function StrToDateTime(const S: string): TDateTime; overload; function StrToDateTime(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload; function StrToDateTimeDef(const S: string; const Default: TDateTime): TDateTime; overload; function StrToDateTimeDef(const S: string; const Default..

SQL의 DATETIME과 델파이 쿼리 결과와의 관계 정리

SQL의 DATETIME과 델파이 쿼리 실행 결과와의 관계를 정리해 보았습니다. 다음과 같은 테스트 테이블을 생성한 이후에 테스트를 진행하였습니다. CREATE TABLE DATE_TEST ( seq INT IDENTITY(1, 1) NOT NULL, date1 SMALLDATETIME NULL, ) INSERT INTO DATE_TEST -- 첫 번째 데이터 입력 VALUES ( NULL ) 위와 같은 테이블의 결과를 얻는 부분을 다음과 같이 작성하였습니다. SELECT * FROM DATE_TEST procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery.Open; try if (ADOQuery.Fields[1].IsNull) then Memo1..

728x90