프로그래밍 326

스레드 내부에서 Sleep 하면 suspended 상태인가?

스레드를 사용하다보면 내부에서 Sleep로 일정 시간 기다리게 하는 상황이 발생하는데... Sleep로 작업 스레드가 중지 되어 있는 상태에 스레드 내부 속성중 Suspended 속성이 true인지 궁금하였다. 결론적으로 Sleep과 스레드의 Suspended와는 아무런 연관이 없다. Suspended에 영향을 주는 것은 오직 Suspend 메소드를 이용하여 그 상황을 만드는 것 뿐이다. Suspend 메소드를 호출하여 스레드가 일시 정지된 상태에서 다시 스레드를 동작시키기 위해서는 Resume 메소드를 호출해 주면 된다. 아래 코드는 Sleep한 스레드가 Suspended 상태인지 검사해본 예제 소스 이다. unit Unit1; interface uses Windows, Messages, SysUtil..

윈도우즈 이벤트에 내 프로그램의 로그 기록하기(SvcMgr.TEventLog)

unit SvcMgr; TEventLog 클래스 이용하여 다음과 같이 작성하면 내 프로그램에서 원하는 이벤트 로그를 남길 수 있습니다. FEventLog := TEventLog.Create("Test Event Program"); FEventLog.LogMessage("테스트 오류 이벤트 메시지"); FEventLog.LogMessage("테스트 경고 이벤트 메시지", EVENTLOG_WARNING_TYPE, 120); // ID = 120 상수 상수값 설명 EVENTLOG_ERROR_TYPE $0001 오류 이벤트 EVENTLOG_WARNING_TYPE $0002 경고 이벤트 EVENTLOG_INFORMATION_TYPE $0004 정보 이벤트 EVENTLOG_AUDIT_SUCCESS $0008 감사 ..

HTML 특수문자코드표

HTML 특수문자코드표 표현문자 숫자표현 문자표현 설명 - �- - 사용하지 않음 space - 수평탭 space - 줄 삽입 - - - 사용하지 않음 space - 여백 ! ! - 느낌표 " " " 따옴표 # # - 숫자기호 $ $ - 달러 % % - 백분율 기호 & & & Ampersand ' ' - 작은 따옴표 ( ( - 왼쪽 괄호 ) ) - 오른쪽 괄호 * * - 아스트릭 + + - 더하기 기호 , , - 쉼표 - - - Hyphen . . - 마침표 / / - Solidus (slash) 0 - 9 0-9 - 0부터 9까지 : : - 콜론 ; ; - 세미콜론 > > 보다 큰 ? ? - 물음표 @ @ - Commercial at A - Z A-Z - A부터..

VC 8.0로 컴파일한 실행파일이 다른곳에서 실행이 안될때...

VC 8.0(2005)에서 컴파일한 실행파일이 다음과 같은 오류를 나타내며 실행되지 않는 현상이 나타났습니다. "응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 실행하지 못했습니다. 이 문제를 해결하려면 응용 프로그램을 다시 시작하십시요." 여러 가지로 알아본 결과... 컴파일된 실행파일이 실행되기 위해 필요한 MFC관련 DLL이 없어서 그런것이더군요. 그래서 정적 방식 MFC를 포함하여 빌드하려 했으나, 링커에서 오류가 나는 바람에 해당 오류는 아직 제힘으로 해결하기 벅찰듯 싶어 다른 방법을 찾아 다녔습니다. 일단 어떤 DLL들이 없어서 실행이 안되는 것인지 Dependency Walker(http://www.dependencywalker.com/)를 실행해 보았습니다. Debug용 빌드..

프로그래밍 2008.03.06

주어진 프로세스 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..

728x90