Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
중복실행시에...
어떤 프로그램이 중복적으로 실행되었을때.
두번째 뜨는 프로그램은 첫번째 뜬 프로그램의 핸들값을 알아서
메세지를 주고 싶거든요. 어떻게 해야 하죠.
findwindow를 쓰면 자기 자신의 핸들값을 가져 와서 ... --;
어떻게 하죠.. 급해요.. !!
2
COMMENTS
델파이사랑
•
2001.09.19 02:16
김씨 wrote:
> 어떤 프로그램이 중복적으로 실행되었을때.
>
> 두번째 뜨는 프로그램은 첫번째 뜬 프로그램의 핸들값을 알아서
>
> 메세지를 주고 싶거든요. 어떻게 해야 하죠.
>
> findwindow를 쓰면 자기 자신의 핸들값을 가져 와서 ... --;
>
> 어떻게 하죠.. 급해요.. !!
===============================================================
중복실행 방지 Function입니다.
인자의 값이 True이면 showmessage('중복실행 되었습니다..!!');
로 뿌려주세요..
원하시는 답이 되었는지..???
그럼 즐코.
function DoInstanceExist(WndTitle: String): Boolean;
var
hSem: THandle;
hWndMe, hWndPrev : HWnd;
semNm, wTtl: array[0..256] of Char;
begin
Result := False;
// Pascal strings 을 Char형 배열로 복사;
StrPCopy(semNm, 'SemaphoreName');
StrPCopy(wTtl, WndTitle);
// 메모리에 Semaphore 생성
hSem := CreateSemaphore(nil, 0, 1, semNm);
// semaphore가 이미 존재하는지 검사
if ((hSem <> 0) and (GetLastError() = ERROR_ALREADY_EXISTS)) then
begin
CloseHandle(hSem);
// 이전 instance 검색
hWndMe := FindWindow(nil, wTtl);
if (hWndMe <> 0) then
begin
if IsIconic(hWndMe) then
ShowWindow(hWndMe, SW_SHOWNORMAL)
else
SetForegroundWindow(hWndMe);
end;
Result := True;
end;
end;
0
0
삭제
수정
댓글
김씨
•
2001.09.19 02:44
델파이사랑 wrote:
> 김씨 wrote:
> > 어떤 프로그램이 중복적으로 실행되었을때.
> >
> > 두번째 뜨는 프로그램은 첫번째 뜬 프로그램의 핸들값을 알아서
> >
> > 메세지를 주고 싶거든요. 어떻게 해야 하죠.
> >
> > findwindow를 쓰면 자기 자신의 핸들값을 가져 와서 ... --;
> >
> > 어떻게 하죠.. 급해요.. !!
> ===============================================================
> 중복실행 방지 Function입니다.
> 인자의 값이 True이면 showmessage('중복실행 되었습니다..!!');
> 로 뿌려주세요..
> 원하시는 답이 되었는지..???
> 그럼 즐코.
>
>
> function DoInstanceExist(WndTitle: String): Boolean;
> var
> hSem: THandle;
> hWndMe, hWndPrev : HWnd;
> semNm, wTtl: array[0..256] of Char;
> begin
> Result := False;
>
> // Pascal strings 을 Char형 배열로 복사;
> StrPCopy(semNm, 'SemaphoreName');
> StrPCopy(wTtl, WndTitle);
>
> // 메모리에 Semaphore 생성
> hSem := CreateSemaphore(nil, 0, 1, semNm);
>
> // semaphore가 이미 존재하는지 검사
> if ((hSem <> 0) and (GetLastError() = ERROR_ALREADY_EXISTS)) then
> begin
> CloseHandle(hSem);
>
> // 이전 instance 검색
> hWndMe := FindWindow(nil, wTtl);
왜 이렇게 하면 이전 instance를 찾죠?
이유를 잘 모르겠네요^^;
createsemaphore와 연관이 있겠죠.. 설명좀 부탁드려요.
여하간 해결은 되었네요 ..감사합니다.
> if (hWndMe <> 0) then
> begin
> if IsIconic(hWndMe) then
> ShowWindow(hWndMe, SW_SHOWNORMAL)
> else
> SetForegroundWindow(hWndMe);
> end;
> Result := True;
> end;
> end;
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
happycoat
2001.09.19 05:58
0
COMMENTS
/
0
LIKES
[widestring]와이드스트링 정확히 어떤거구 어떻게 쓰죠?
왕초보
•
2001.09.19 05:21
1
COMMENTS
/
0
LIKES
알려주세요
하기
•
2001.09.19 19:44
왕초보 wrote: > 왕초봅니다. > 혼자서 책을 보면서 공부를 하고 있는데 모르는 것이 많이 나오네요 (ㅜ....
blind6
2001.09.19 05:02
0
COMMENTS
/
0
LIKES
ocx위에서는 드래그가 안되나여??
처음자
•
2001.09.19 04:45
1
COMMENTS
/
0
LIKES
[요청]아래 코딩을 좀더 매끄럽게..
사이비쥐 <;●●~
•
2001.09.20 03:26
처음자 wrote: > 며칠전부터 델파이를 접하게 뒈었습니다.. > 몇가지 나름데로 숙제 같은 형식으로 배우...
초보
•
2001.09.19 04:01
2
COMMENTS
/
0
LIKES
Calculate field를 어떻해 사용하는지 자세히.....
비쥬얼네트
•
2001.09.19 04:18
초보 wrote: > 저는 델파이 초보자 입니다 ...답변을 봐도 잘모르겠어요?? > Calculate field를 어떻해 ...
초보
•
2001.09.19 10:10
비쥬얼네트 wrote: > 초보 wrote: > > 저는 델파이 초보자 입니다 ...답변을 봐도 잘모르겠어요?? > > C...
하창호
2001.09.19 03:39
0
COMMENTS
/
0
LIKES
쿼리로 파라독스의 Timestamp에 값을 넣고 싶어요
자유지역
•
2001.09.19 03:47
2
COMMENTS
/
0
LIKES
스트링에서 문자삭제... [시스템 에러]
스파토이
•
2001.09.19 04:10
곰곰히 생각해보세요. S는 문자형이라고만 정의됐는데... 그러니까, 밥그릇의 크기는 정의 안됐는...
자유지역
•
2001.09.19 04:19
델파이 에서는 동적배열을 자동으로 확장시켜 주는줄 알았는데.. 그렇지 않더군여.. 답변 감사드립니다.....
il
•
2001.09.19 02:55
1
COMMENTS
/
0
LIKES
Socket 방식으로 프로그램 자동 업그레이드
로비
•
2001.09.19 08:36
파일 받기나 메세지에 대한 대응등은 인디나 기타 소켓관련 VCL의 예제를 보시면 약간의 응용만으로 구...
델초보
2001.09.19 02:52
0
COMMENTS
/
0
LIKES
새창(Form)을 각기 taskbar에 나타나게 하고 싶습니다.
황하성
2001.09.19 02:49
0
COMMENTS
/
0
LIKES
퀵리포트 출력시 그림이 사라집니다.
cowboy
2001.09.19 02:19
0
COMMENTS
/
0
LIKES
윈도우98,ME에서 윈도우2000 접속문제...
강..
•
2001.09.19 02:14
2
COMMENTS
/
0
LIKES
ORA-01000 : 최대열기 커서수를 초과했습니다.
아줌마
•
2001.09.19 22:21
강.. wrote: > ORA-01000 : 최대열기 커서수를 초과했습니다. > 에러가 나네요.. > 저도 겪어 봤는...
비쥬얼네트
•
2001.09.19 04:25
강.. wrote: > ORA-01000 : 최대열기 커서수를 초과했습니다. > 에러가 나네요.. > 열려있는 테이블...
초짜
•
2001.09.19 02:12
1
COMMENTS
/
0
LIKES
[당근 질문]동적생성..쩝.
aparadin
•
2001.09.19 02:49
윈도우 메세지를 발생시키고 windowproc에서 잡아채면 될것같은데.. 함검색해보세요.
김씨
•
2001.09.19 02:05
2
COMMENTS
/
0
LIKES
중복실행시에...
어떤 프로그램이 중복적으로 실행되었을때. 두번째 뜨는 프로그램은 첫번째 뜬 프로그램의 핸들값을 알아서 메세지를 주고 싶거든요. 어떻게 해야 하죠. findwindow를 쓰면 자기 자신의 핸들값을 가져 와서 ... --; 어떻게 하죠.. 급해요....
델파이사랑
•
2001.09.19 02:16
김씨 wrote: > 어떤 프로그램이 중복적으로 실행되었을때. > > 두번째 뜨는 프로그램은 첫번째 뜬 프로...
김씨
•
2001.09.19 02:44
델파이사랑 wrote: > 김씨 wrote: > > 어떤 프로그램이 중복적으로 실행되었을때. > > > > 두번째 뜨...
철
2001.09.19 02:00
0
COMMENTS
/
0
LIKES
오라클에서 odbc문제 (돌겠군!!)
델초보
•
2001.09.19 01:28
1
COMMENTS
/
0
LIKES
self/application/nil 의 차이점은?
델맹
•
2001.09.19 18:45
델초보 wrote: > 안녕하십니까? > 폼을 동적생성합니다. > Form2 := TForm2.Create(Self); > 그런데 위...
박정만
2001.09.19 01:16
0
COMMENTS
/
0
LIKES
인디소켓에서 버퍼에 쌓인 데이타 길이
서지연
2001.09.19 01:03
0
COMMENTS
/
0
LIKES
[긴급]stored procedure 호출에 관해서
poh
2001.09.19 00:48
0
COMMENTS
/
0
LIKES
NMFTP 쓸때 password없이 하는방법..
김성준(델초보)
•
2001.09.19 00:39
2
COMMENTS
/
0
LIKES
글자 자르는 로직 가려켜 줄 사람 없어요????
델파이사랑
•
2001.09.19 02:11
김성준(델초보) wrote: > 제가 자주 게시판에 글을 올리는데요...에공~~ > 너무 몰라서리 그럽니다.........
나그네
•
2001.09.19 02:03
const ps:array[1..6]of byte=(8,8,13,34,10,10); //길이가 고정되어 있다는 가정하에서 입니다. var ...
김씨
2001/09/19 02:05
Views
300
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 어떤 프로그램이 중복적으로 실행되었을때.
>
> 두번째 뜨는 프로그램은 첫번째 뜬 프로그램의 핸들값을 알아서
>
> 메세지를 주고 싶거든요. 어떻게 해야 하죠.
>
> findwindow를 쓰면 자기 자신의 핸들값을 가져 와서 ... --;
>
> 어떻게 하죠.. 급해요.. !!
===============================================================
중복실행 방지 Function입니다.
인자의 값이 True이면 showmessage('중복실행 되었습니다..!!');
로 뿌려주세요..
원하시는 답이 되었는지..???
그럼 즐코.
function DoInstanceExist(WndTitle: String): Boolean;
var
hSem: THandle;
hWndMe, hWndPrev : HWnd;
semNm, wTtl: array[0..256] of Char;
begin
Result := False;
// Pascal strings 을 Char형 배열로 복사;
StrPCopy(semNm, 'SemaphoreName');
StrPCopy(wTtl, WndTitle);
// 메모리에 Semaphore 생성
hSem := CreateSemaphore(nil, 0, 1, semNm);
// semaphore가 이미 존재하는지 검사
if ((hSem <> 0) and (GetLastError() = ERROR_ALREADY_EXISTS)) then
begin
CloseHandle(hSem);
// 이전 instance 검색
hWndMe := FindWindow(nil, wTtl);
if (hWndMe <> 0) then
begin
if IsIconic(hWndMe) then
ShowWindow(hWndMe, SW_SHOWNORMAL)
else
SetForegroundWindow(hWndMe);
end;
Result := True;
end;
end;