Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
특정경로의 어플리케이션이 실행되고 있는지 감지하려면???
안녕하세요~ ^^
궁금한게 있어서요... 좀 간단해 보일수도 있는데요....제가 무식하걸랑요 ㅡ.ㅡ;;
제가 알고 싶은건요...특정경로의 어플리케이션이 실행되고 있는지 알수 있는 방법이 없을까 해서요... 예를 들면 C:exedel.exe 이게 실행되고 있은지 어떻게 알수 없을까요?? 좀 가르쳐주세엽...^^;; 부탁드립니다~
3
COMMENTS
최용일
•
2001.05.31 02:42
안녕하세요. 최용일입니다...
좀 간단한게 아니군요...
먼저 현재 실행되고 있는 윈도우들의 목록을 구해야 겠죠... 이건 EnumWindows라는 API함수로 간단히 할 수 있는데...여기에서 얻어진 핸들로 실행파일 이름을 구해야 하는데 이건 9x계열하고 NT계열하고 구하는 방식이 약간 다릅니다...
윈도우의 플랫폼을 알수 있는 함수는 팁란에 있으니까 그건 생략하구요... 아래와 같이 하세요... uses절에 TLHelp32유닛을 추가하세요... NT계열일 경우는 TLHelp32대신에 PSApi유닛을 추가하시구요...
function GetWindowFileName9x(Handle: THandle): string;
// 윈도우 플랫폼이 Windows 9x계열일 경우
var
ProcessID: DWORD;
SnapShot: THandle;
ProcessEntry: TProcessEntry32;
begin
Result := '';
GetWindowThreadProcessID(Handle, @ProcessID);
SnapShot := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
ProcessEntry.dwSize := SizeOf(ProcessEntry);
if (SnapShot <> THandle(-1)) then
begin
if Process32First(SnapShot, ProcessEntry) then
begin
repeat
if (ProcessID = ProcessEntry.th32ProcessID) then
begin
Result := string(ProcessEntry.szEXEFile);
Break;
end;
until (Process32Next(SnapShot, ProcessEntry) = False);
end;
end;
CloseHandle(SnapShot);
end;
function GetWindowFileNameNT(Handle: THandle): string;
// 플랫폼이 NT계열일경우
var
ProcessID: DWORD;
ProcessHandle: THandle;
FileName: array [0..Max_Path - 1] of char;
begin
Result := '';
GetWindowThreadProcessID(Handle, @ProcessID);
ProcessHandle := OpenProcess(Process_Query_Information or Process_VM_Read, False, ProcessID);
if ProcessHandle <> 0 then
begin
if GetModuleBaseName(ProcessHandle, 0, FileName, SizeOf(FileName)) > 0 then
Result := FileName;
CloseHandle(ProcessHandle);
end;
end;
function EnumWindowsProc(Wnd: HWND; SearchFileName: PChar): BOOL; stdcall;
// EnumWindows 콜백함수
var
FileName: string;
begin
Result := True;
FileName := GetWindowFileName9x(Wnd);
// NT계열일경우: FileName := GetWindowFileNameNT(Wnd);
if CompareText(FileName, SearchFileName) = 0 then
// 찾고자 하는 파일이름과 같은가 검색
Result := False;
end;
// Button1의 OnClick이벤트
procedure TForm1.Button1Click(Sender: TObject);
var
SearchName: PChar;
begin
SearchName := 'C:exedel.exe';
if not EnumWindows(@EnumWindowsProc, Integer(SearchName)) then
ShowMessage('C:exedel.exe파일이 현재 실행중입니다.')
else
ShowMessage('C:exedel.exe파일이 현재 실행중이지 않습니다.');
end;
^^ 항상 즐코하세요...
왕초보? wrote:
> 안녕하세요~ ^^
> 궁금한게 있어서요... 좀 간단해 보일수도 있는데요....제가 무식하걸랑요 ㅡ.ㅡ;;
> 제가 알고 싶은건요...특정경로의 어플리케이션이 실행되고 있는지 알수 있는 방법이 없을까 해서요... 예를 들면 C:exedel.exe 이게 실행되고 있은지 어떻게 알수 없을까요?? 좀 가르쳐주세엽...^^;; 부탁드립니다~
0
0
삭제
수정
댓글
왕초보?
•
2001.05.31 21:12
감사합니다... 그런데여... 윈9X계열일 경우의 것을 해봤는데여...제가 무식해서 그런건지 안되네여 ㅡ.ㅡ 어느 부분이냐면요...
변수선언에서 ProcessEntry: TProcessEntry32; <==요부분이 걸리네여.. 다시 한번 갈쳐주셨음 해여...부탁드려여~ ^^;;;
0
0
삭제
수정
댓글
최용일
•
2001.05.31 22:07
제글을 잘 읽어보시면 되는데.... 쩝~
uses 절에 TLHelp32유닛을 추가하세요... 아래처럼...
uses
......, TLHelp32;
왕초보? wrote:
> 감사합니다... 그런데여... 윈9X계열일 경우의 것을 해봤는데여...제가 무식해서 그런건지 안되네여 ㅡ.ㅡ 어느 부분이냐면요...
> 변수선언에서 ProcessEntry: TProcessEntry32; <==요부분이 걸리네여.. 다시 한번 갈쳐주셨음 해여...부탁드려여~ ^^;;;
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
강영미
•
2001.05.31 02:14
3
COMMENTS
/
0
LIKES
퀵리포트에서 테이블과 쿼리 함께 사용하기
조복기
•
2001.05.31 11:30
특별한 부분에서 에러가 난건 아니구염 파라미터 지정이 잘못
강영미
•
2001.05.31 19:35
감사합니다. 조복기님 제가 아직 쿼리의 parameter 개념이 없네요. 그런데 코드값을 출력하는 것에 ...
성더기
•
2001.06.01 03:22
> dm1.Query1.ParamByName('woo1').AsString := dm1.Table1.FieldByName('woo1').AsString; > dm1...
궁금이
•
2001.05.31 01:31
1
COMMENTS
/
0
LIKES
다른폼의 StringGrid내용을 읽어오는 방법 알려주세요.
(주)에스콘
•
2001.06.22 20:07
궁금이 wrote: > 안녕하세요. > > 다른폼에 있는 스트링그리드의 값을 앍어와야 하는데 > > 잘되지 ...
cjh
2001.05.31 01:29
0
COMMENTS
/
0
LIKES
quick report를 이용하여 확정된 양식으로 출력하고자 할때..
왕초보?
•
2001.05.31 01:14
1
COMMENTS
/
0
LIKES
MS Sql 7.0 을 사용하고 있는데요..DB를 옮기는 방법좀...
hobakpa
•
2001.05.31 02:26
전 이런식으로 해서 집으로 db를 옮기곤 합니다. 해당 디비 서버의 c:mssql7.0data 밑에 보시면 디비...
이상현
2001.05.31 01:11
0
COMMENTS
/
0
LIKES
Install CD제작시 문제 도와주세요...
왕초보?
•
2001.05.31 01:11
3
COMMENTS
/
0
LIKES
특정경로의 어플리케이션이 실행되고 있는지 감지하려면???
안녕하세요~ ^^ 궁금한게 있어서요... 좀 간단해 보일수도 있는데요....제가 무식하걸랑요 ㅡ.ㅡ;; 제가 알고 싶은건요...특정경로의 어플리케이션이 실행되고 있는지 알수 있는 방법이 없을까 해서요... 예를 들면 C:exedel.exe 이게 실...
최용일
•
2001.05.31 02:42
안녕하세요. 최용일입니다... 좀 간단한게 아니군요... 먼저 현재 실행되고 있는 윈도우들의 목록을 ...
왕초보?
•
2001.05.31 21:12
감사합니다... 그런데여... 윈9X계열일 경우의 것을 해봤는데여...제가 무식해서 그런건지 안되네여 ㅡ....
최용일
•
2001.05.31 22:07
제글을 잘 읽어보시면 되는데.... 쩝~ uses 절에 TLHelp32유닛을 추가하세요... 아래처럼... uses ...
초보델피언
2001.05.31 01:07
0
COMMENTS
/
0
LIKES
nmftp접속해서...
델맹
•
2001.05.31 00:19
1
COMMENTS
/
0
LIKES
Query로 갖고 온 값을 TChart로 뿌리고 싶은데요.. 도와주세요..
델맹
•
2001.05.31 01:48
제가 해결했네요.. 밑의 어느분 소스를 참조했습니다. 감사드립니다. chart1.Series[0].AddXY((0), Que...
처음
•
2001.05.31 00:16
1
COMMENTS
/
0
LIKES
메모리 해제라는 예상뿐...
이히히
•
2001.06.01 22:58
폼에 쓰는 Action := Cafree; 혹은 폼.Destroy 이것은 쓰실 필요 없구요.... (저도 예전에는 메모리 문제...
전기수
2001.05.31 00:07
0
COMMENTS
/
0
LIKES
TChart 콤포넌트 설치해야되는데.....
백승환
2001.05.31 00:06
0
COMMENTS
/
0
LIKES
레지스트리에서요....
레콩
•
2001.05.31 00:04
1
COMMENTS
/
0
LIKES
이.. 쿼리좀 갈켜줘여..
나그네
•
2001.05.31 00:21
레콩 wrote: > table1 > 문서번호 > 내용 > 등록자ID(사원ID) > 수정자ID(사원ID) > > table2 > ...
궁금이
2001.05.31 00:53
0
COMMENTS
/
0
LIKES
Quick Report가 안됩니다.(한 폼에 두개의 리포트)한번봐주세요.
mashimaro
2001.05.30 23:55
0
COMMENTS
/
0
LIKES
mysql ==backup
전기봉
2001.05.31 00:25
0
COMMENTS
/
0
LIKES
엑셀 쉬트 마지막행 구하기와 오라클 정보 얻기
정상원
2001.05.30 23:44
0
COMMENTS
/
0
LIKES
에러발생했는데요.(EVariantError ....)해결 부탁합니다.
왕초보
2001.05.30 23:01
0
COMMENTS
/
0
LIKES
needdata를 이용해서 출력할때..페이지스킵문제..
궁금스
2001.05.30 22:51
0
COMMENTS
/
0
LIKES
기술적으로 정말 어려운 기술....
이창영
2001.05.31 00:30
0
COMMENTS
/
0
LIKES
null 값 지정과 관련하여
delsarang
2001.05.30 21:43
0
COMMENTS
/
0
LIKES
내친김에 TDatabase 콤포넌트의 Connected 명령질문
왕초보?
2001/05/31 01:11
Views
253
Likes
0
Comments
3
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
좀 간단한게 아니군요...
먼저 현재 실행되고 있는 윈도우들의 목록을 구해야 겠죠... 이건 EnumWindows라는 API함수로 간단히 할 수 있는데...여기에서 얻어진 핸들로 실행파일 이름을 구해야 하는데 이건 9x계열하고 NT계열하고 구하는 방식이 약간 다릅니다...
윈도우의 플랫폼을 알수 있는 함수는 팁란에 있으니까 그건 생략하구요... 아래와 같이 하세요... uses절에 TLHelp32유닛을 추가하세요... NT계열일 경우는 TLHelp32대신에 PSApi유닛을 추가하시구요...
function GetWindowFileName9x(Handle: THandle): string;
// 윈도우 플랫폼이 Windows 9x계열일 경우
var
ProcessID: DWORD;
SnapShot: THandle;
ProcessEntry: TProcessEntry32;
begin
Result := '';
GetWindowThreadProcessID(Handle, @ProcessID);
SnapShot := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
ProcessEntry.dwSize := SizeOf(ProcessEntry);
if (SnapShot <> THandle(-1)) then
begin
if Process32First(SnapShot, ProcessEntry) then
begin
repeat
if (ProcessID = ProcessEntry.th32ProcessID) then
begin
Result := string(ProcessEntry.szEXEFile);
Break;
end;
until (Process32Next(SnapShot, ProcessEntry) = False);
end;
end;
CloseHandle(SnapShot);
end;
function GetWindowFileNameNT(Handle: THandle): string;
// 플랫폼이 NT계열일경우
var
ProcessID: DWORD;
ProcessHandle: THandle;
FileName: array [0..Max_Path - 1] of char;
begin
Result := '';
GetWindowThreadProcessID(Handle, @ProcessID);
ProcessHandle := OpenProcess(Process_Query_Information or Process_VM_Read, False, ProcessID);
if ProcessHandle <> 0 then
begin
if GetModuleBaseName(ProcessHandle, 0, FileName, SizeOf(FileName)) > 0 then
Result := FileName;
CloseHandle(ProcessHandle);
end;
end;
function EnumWindowsProc(Wnd: HWND; SearchFileName: PChar): BOOL; stdcall;
// EnumWindows 콜백함수
var
FileName: string;
begin
Result := True;
FileName := GetWindowFileName9x(Wnd);
// NT계열일경우: FileName := GetWindowFileNameNT(Wnd);
if CompareText(FileName, SearchFileName) = 0 then
// 찾고자 하는 파일이름과 같은가 검색
Result := False;
end;
// Button1의 OnClick이벤트
procedure TForm1.Button1Click(Sender: TObject);
var
SearchName: PChar;
begin
SearchName := 'C:exedel.exe';
if not EnumWindows(@EnumWindowsProc, Integer(SearchName)) then
ShowMessage('C:exedel.exe파일이 현재 실행중입니다.')
else
ShowMessage('C:exedel.exe파일이 현재 실행중이지 않습니다.');
end;
^^ 항상 즐코하세요...
왕초보? wrote:
> 안녕하세요~ ^^
> 궁금한게 있어서요... 좀 간단해 보일수도 있는데요....제가 무식하걸랑요 ㅡ.ㅡ;;
> 제가 알고 싶은건요...특정경로의 어플리케이션이 실행되고 있는지 알수 있는 방법이 없을까 해서요... 예를 들면 C:exedel.exe 이게 실행되고 있은지 어떻게 알수 없을까요?? 좀 가르쳐주세엽...^^;; 부탁드립니다~