::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-04 20:20:15, Hit : 5612, Vote : 1373
 떠 있는 프로그램 죽이기...

다음 Delphi source는 process처리를 위한 예제프로그램을
작성한 것입니다. (좀더 꾸미면 Task Manager가 되겠죠)
리스트박스에 현재 실행중인 process를 보여준후
선택한 process를 kill합니다. (kernel32.dll의 함수를 사용합니다)
이 예제프로그램이 조금이나마 도움이 되었으면 합니다.
의문사항은 메일주세요

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, TlHelp32;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    B_Search: TButton;
    B_Terminate: TButton;
    procedure B_SearchClick(Sender: TObject);
    procedure B_TerminateClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

// kernel32.dll을 사용하여 현재 떠있는 process를 읽어온다
procedure Process32List(Slist: TStrings);
var
  Process32: TProcessEntry32;
  SHandle:   THandle;  // the handle of the Windows object
  Next:      BOOL;
begin
  Process32.dwSize := SizeOf(TProcessEntry32);
  SHandle          := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);

  if Process32First(SHandle, Process32) then
  begin
    // 실행화일명과 process object 저장
    Slist.AddObject(Process32.szExeFile, TObject(Process32.th32ProcessID));
    repeat
      Next := Process32Next(SHandle, Process32);
      if Next then
        Slist.AddObject(Process32.szExeFile, TObject(Process32.th32ProcessID));
    until not Next;
  end;
  CloseHandle(SHandle);  // closes an open object handle
end;

procedure TForm1.B_SearchClick(Sender: TObject);
begin
  // 현재 실행중인 process를 검색
  ListBox1.Items.Clear;
  Process32List(ListBox1.Items);
end;

procedure TForm1.B_TerminateClick(Sender: TObject);
var
  hProcess: THandle;
  ProcId:   DWORD;
  TermSucc: BOOL;
begin
  // 현재 실행중인 process를 kill
  if ListBox1.ItemIndex < 0 then System.Exit;
  ProcId   := DWORD(ListBox1.Items.Objects[ListBox1.ItemIndex]);
  // 존재하는 process object의 handle을 return한다
  hProcess := OpenProcess(PROCESS_ALL_ACCESS, TRUE, ProcId);
  if hProcess = NULL then
    ShowMessage('OpenProcess error !');
  // 명시한 process를 강제 종료시킨다
  TermSucc := TerminateProcess(hProcess, 0);
  if TermSucc = FALSE then
    ShowMessage('TerminateProcess error !')
  else
    ShowMessage(Format('Process# %x terminated successfully !', [ProcId]));
end;

end.





971   [네트웍/인터넷] Internet에 연결중인지 여부를 알려면...  김영대 2003/03/04 5165 1329
970   [윈도우즈 API] 델파이 3.0에서 한글변환을 하는법....  김영대 2003/03/04 5492 1386
  [시스템] 떠 있는 프로그램 죽이기...  김영대 2003/03/04 5612 1373
968   [시스템] 다른 Application 생성과 소멸에 대하여...  김영대 2003/03/04 4810 1298
967   [윈도우즈 API] 도구모음 Bar는 어떻게 만드는지...  김영대 2003/03/04 4685 1325
966   [일반/컴포넌트] StringGrid의 Cell에 입력 값 제한 하기  김영대 2003/03/04 5792 1272
965   [데이터베이스] DB의 Blob필드에 화일을 저장하기  김영대 2003/03/04 5094 1223
964   [시스템] Windows NT 에서 한글 NT인지 영문 NT인지 구분하는 방법  김영대 2003/03/04 5093 1322
963   [시스템] 오직 하나의 프로그램만 실행...  김영대 2003/03/04 4998 1350
962   [데이터베이스] TBlobField에 대한 사용법  김영대 2003/03/04 4868 1250
961   [멀티미디어] TMedia Player에서 BMP파일로 저장하기(화면 capture)  김영대 2003/03/04 4426 1245
960   [일반/컴포넌트] StringGrid에서 Enter Key를 Tab Key와 같은 효과  김영대 2003/03/04 5081 1177
959   [데이터베이스] Stored Procedure 작성을 어떻게 하나  김영대 2003/03/04 4886 1260
958   [윈도우즈 API] 날짜변형에 대해서...  김영대 2003/03/04 4778 1212
957   [윈도우즈 API] 델파이에서 시간을 기다리는 함수  김영대 2003/03/04 5813 1346
956   [데이터베이스] DBGrid에서 MultiSelect된것 알아내려면...  김영대 2003/03/04 5264 1237
955   [윈도우즈 API] 외부 프로그램의 윈도우 크기 조절  김영대 2003/03/04 4866 1237
954   [윈도우즈 API] 클립보드로 복사  김영대 2003/03/04 5619 1394
953   [일반/컴포넌트] VB Left$(), Right$(), LTrim$() ...  김영대 2003/03/04 4791 1189
952   [윈도우즈 API] 화면캡처하기 Delphi3.0에서...  김영대 2003/03/04 4689 1264
951   [데이터베이스] 엑셀자료를 읽어서 DB에 UPDATE  김영대 2003/03/04 5134 1249
950   [시스템] 프린터 상태가 Ready인지 아닌지 검사  김영대 2003/03/04 5739 1650
949   [데이터베이스] DBGrid 에서 선택된 필드의 타이틀을 굵게  김영대 2003/03/04 4703 1288
948   [윈도우즈 API] bitmap을 JPEG로 변환  김영대 2003/03/04 4901 1309
947   [데이터베이스] DBGrid의 Column, Record 의 위치 저장/이동  김영대 2003/03/04 9200 1383
946   [데이터베이스] ORACLE 나 SQL Server 에서 레코드 번호  김영대 2003/03/04 4932 1252
945   [윈도우즈 API] 키보드의 임의키 발생  김영대 2003/03/04 5174 1323
944   [데이터베이스] BDE 버전정보  김영대 2003/03/04 3986 1125
943   [일반/컴포넌트] 문자열의 암호화(Password 처리)  김영대 2003/03/04 4371 1076
942   [일반/컴포넌트] Image의 90도 회전  김영대 2003/03/04 5078 1159
941   [윈도우즈 API] 파일정보(생성,변경,접근일자,속성,종류...)  김영대 2003/03/04 5324 1236
940   [윈도우즈 API] 윈도우즈 탐색기와의 연동  김영대 2003/03/04 5434 1323
939   [시스템] 절약형 모니터의 켜기/끄기  김영대 2003/03/04 4669 1283
938   [시스템] 드라이브 포맷(Format) API 함수  김영대 2003/03/04 4708 1278
937   [일반/컴포넌트] virtual keys 리스트  김영대 2003/03/04 4134 1181
936   [윈도우즈 API] short/long file name 변환  김영대 2003/03/04 4167 1222
935   [일반/컴포넌트] 메뉴 아이템의 동적 추가와 그림넣기  김영대 2003/03/04 4541 1184
934   [윈도우즈 API] 파일의 확장명으로 실행화일 연결  김영대 2003/03/04 4961 1316
933   [시스템] CD-ROM 문 열기/닫기  김영대 2003/03/04 4708 1332
932   [일반/컴포넌트] QReport에서 출력된 자료를 Text화일로 저장  김영대 2003/03/04 4392 1215

1 [2][3][4][5][6][7][8][9][10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero