Q&A

  • 실행중인 프로그램 list 구하기..


두개 이상 실행시키는 것을 막기 위해



제가 짠 프로그램이 이미 실행중이면 실행되지 않게 하려 합니다..



어떻게 하면 가능할까요..



좀 갈쳐 주세요..실행중인 리스트 구하는 API를 어디서 본것 같은데..



쓸려구 찾으니깐 못찾겠네요..



도와주세요~ ^^

2  COMMENTS
  • Profile
    장은석 2000.03.14 15:57
    한승수 wrote:

    >

    > 두개 이상 실행시키는 것을 막기 위해

    >

    > 제가 짠 프로그램이 이미 실행중이면 실행되지 않게 하려 합니다..

    >

    > 어떻게 하면 가능할까요..

    >

    > 좀 갈쳐 주세요..실행중인 리스트 구하는 API를 어디서 본것 같은데..

    >

    > 쓸려구 찾으니깐 못찾겠네요..

    >

    > 도와주세요~ ^^



    ------------------------------------------------------------------------



    실행중인 윈도우 리스트를 가져온다 함은 Ctrl+Alt+Del 키 눌렀을때

    보여지는 리스트 처럼 윈도우텍스트 그러니까 윈도우캡션을 가져오는 것이므로

    별로 권장할게 못되는군요.. (왜 그러는지는 아시겠죠?)



    질문하신 내용을 보니 같은 폼이 두개 이상 뜨는 것을 막는게 아니라

    같은 프로그램이 두개 이상 실행되는것을 막으려고 하시는거죠?

    *.dpr 소스에다 아래 코드를 기입하세요..



    Application.Initialize;

    begin

    CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0,1024, 'SharedExists' );

    if GetLastError=ERROR_ALREADY_EXISTS then //같은 프로그램이 실행상태인지 확인

    begin

    showmessage('프로그램이 실행중일껄?');

    halt; // 같은프로그램이 실행되어 있을땐 종료하라.

    end;

    end;



  • Profile
    blueSky 2000.03.13 23:55
    한승수 wrote:

    >

    > 두개 이상 실행시키는 것을 막기 위해

    >

    > 제가 짠 프로그램이 이미 실행중이면 실행되지 않게 하려 합니다..

    >

    > 어떻게 하면 가능할까요..

    >

    > 좀 갈쳐 주세요..실행중인 리스트 구하는 API를 어디서 본것 같은데..

    >

    > 쓸려구 찾으니깐 못찾겠네요..

    >

    > 도와주세요~ ^^





    아래의 소스는 전체 리스트를 구하는 것입니다.



    **** 실행중인 Application List알아내기 ***



    function EnumWinProc(Wnd: HWND; frm: TForm1) : Boolean;

    Export;{$IFDEF Win32}stdCall;{$ENDIF}

    var

    WinText : Array[0..255] of Char;

    begin

    GetWindowText(Wnd, WinText, 255);

    Result := True;

    if (StrPas(WinText) <> '') then

    frm.ListBox1.Items.Add(StrPas(WinText));

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    EnumWindows(@EnumwinProc, Longint(self));

    end;



    원하시는 답변이 이것이 아닌것 같아 하나 더 올립니다.



    중복 실행 방지



    var

    PrevInstHandle : THandle;

    WindowName : String;

    begin



    Application.Initialize;

    Application.Title := 'AAA';



    WindowName := 'AAA';



    PrevInstHandle := FindWindow('TApplication',PChar(WindowName));



    SetWindowText(PrevInstHandle,'fdj@#%#$#FG');



    PrevInstHandle := FindWindow('TApplication',PChar(WindowName));



    if PrevInstHandle <> 0 Then

    Begin



    Application.MessageBox('프로그램이 이미 실행중입니다','확 인',

    mb_OK+mb_DefButton1+mb_IconInformation);

    if IsIconic(PrevInstHandle) Then

    ShowWindow(PrevInstHandle,SW_RESTORE)

    else

    BringWindowToTop(PrevInstHandle);

    Halt;

    end;



    Application.Title := 'AAA';









    • 왕초짜
    • 2000.03.13 23:26
    • 8 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.03.14 00:17
      왕초짜 wrote: > 안녕하세요... > 궁금한게 있어서 질문드립니다. > 에디트박스 3개로 년, 월, 일을 입...
    • 왕초짜
      2000.03.14 01:03
      MyDate:=EncodeDate(strtoint(ed1.Text),strtoint(ed2.Text ),strtoint(ed3.Text) ); 요렇게 하니까 년...
    • parkisu
      2000.03.14 09:46
      왕초짜 wrote: > MyDate:=EncodeDate(strtoint(ed1.Text),strtoint(ed2.Text ),strtoint(ed3.Text) ); > ...
    • 박성훈
      2000.03.14 00:16
      왕초짜 wrote: > 안녕하세요... > 궁금한게 있어서 질문드립니다. > 에디트박스 3개로 년, 월, 일을 입...
    • 최용일
      2000.03.14 00:13
      다음과 같이 FormatDateTime함수를 이용하세요 FormatDateTime('yyyymmdd', StrToDate(Box1.Text+'-'+...
    • 왕초짜
      2000.03.14 00:57
      최용일 wrote: > 다음과 같이 FormatDateTime함수를 이용하세요 > > FormatDateTime('yyyymmdd', Str...
    • 최용일
      2000.03.14 01:17
      당연히 에러가 날수밖에 없습니다. FormatDateTime은 TDate형을 돌려주는게 아니라 날짜의 문자열을 돌려...
    • • • •
    • 젠키
      2000.03.13 23:42
      철이 wrote: > delphi에서 엑세스 디비를 연결하여 사용하였습니다.... > 프로그램이 실행되거나, 디비가...
    • 철이
      2000.03.14 18:34
      젠키 wrote: > 철이 wrote: > > delphi에서 엑세스 디비를 연결하여 사용하였습니다.... > > 프로그램이...
    • 근수
      2000.03.25 07:16
      박성훈 wrote: > 2000-02-02 02:50:00과 2000-03-03 14:10:00의 차이를 구한다음 이것을 시간으로 표시하...
    • 최용일
      2000.03.14 00:58
      TimeStamp를 이용하시면 간단히 구하실 수 있습니다. var Time1, Time2, pTime: TTimeStamp; begin ...
    • 박성훈
      2000.03.14 00:23
      박성훈 wrote: > 2000-02-02 02:50:00과 2000-03-03 14:10:00의 차이를 구한다음 이것을 시간으로 표시하...
    • 송정환
    • 2000.03.13 22:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.13 23:59
      텍스트(.txt)파일로 저장하는 방법처럼 하시면 됩니다. 단지 그 사이사이에 HTML태그를 넣어서 저장하시...
    • 한승수
    • 2000.03.13 22:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장은석
      2000.03.14 15:57
      한승수 wrote: > > 두개 이상 실행시키는 것을 막기 위해 > > 제가 짠 프로그램이 이미 실행중이...
    • blueSky
      2000.03.13 23:55
      한승수 wrote: > > 두개 이상 실행시키는 것을 막기 위해 > > 제가 짠 프로그램이 이미 실행중이...
    • toto1052
    • 2000.03.13 22:02
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 착한악마
      2000.03.14 07:24
      리포트 옵션에 있는 기능이거든요... 리포트 세팅에서 컬럼수를 조정해 보세요....그럼 될겁니다...( 코딩...
    • 하얀까마귀
      2000.03.13 22:19
      안녕하세요 하얀까마귀 입니다... 불행히도 없어요....(
    • 종이학
      2000.03.13 21:00
      Go100 wrote: > 어떤 폼에서 조회를 하면서 DbGrid 숫자 필드에 > (1,000,000,000) 이처럼 3자리에 컴마...
    • 하얀까마귀
      2000.03.13 20:55
      안녕하세요 하얀까마귀 입니다. 처음 질문은 그냥 불러 올때 소트를 하시구요... order by 하시면 됩니...
    • blueSky
      2000.03.13 19:11
      김경한 wrote: > > 급합니다. > > 시간이 만약 16:45 초라면,, (16 분 45 초) > > 에디트 박스...
    • 김경한
      2000.03.13 19:25
      blueSky wrote: > 김경한 wrote: > > > > 급합니다. > > > > 시간이 만약 16:45 초라면,, (16 분 ...
    • 강인규
      2000.03.13 21:59
      위의 분이 답변주신것이 맞습니다. 초에서 'ss'를 해주면 01초가 되지요. 아마도 문자형으로 디비에 저...
    • 박성훈
    • 2000.03.13 18:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.13 20:41
      저의 답변을 이해를 못하신것 같군요... 저는 OS(explorer.exe)차원에서 이야기한 것인데... 그럼 두번째 ...
    • 박상길
    • 2000.03.13 18:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.03.14 23:54
      박상길 wrote: > Windows CE 에서 델파이 지원이 가능한지 알고 싶습니다....... 안녕하세요 하얀까마...
    • 안대규
    • 2000.03.13 18:35
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2000.03.13 18:56
      안대규 wrote: > 안녕하세요~~~ > 궁금중이 있어 이렇게 글을 올립니다. > 델파이에서 제공하는 vcl디렉...
    • 초보
    • 2000.03.13 17:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장은석
      2000.03.14 10:15
      초보 wrote: > 레지스트리의 rootkey: HKEY_LOCAL_MACHINE 에서 > 'SOFTWAREMicrosoftWindowsCurrentVers...
    • 초보
      2000.03.15 01:08
      제 질문을 바로 이해해 주시고 답변 주시니 고마습니다. 덕분에 성공했습니다.
    • 최용일
      2000.03.13 21:22
      SetWindowHookEx와 같은 API함수를 이용하여 시스템전체의 메세지나 이벤트를 장악하시면 됩니다. 쉽게 말...
    • 조규춘
      2000.03.13 21:16
      고수는 아니지만 그냥 한번 올려 봅니다. 아래의 소스는 ctrl + alt + del을 눌렀을때 내가 만든 프로그...
    • 최용일
      2000.03.13 23:47
      레지스트리에 핫키를 등록하시어 사용하시면 됩니다. 그럼 폼이 활성화되었건 비활성화 되었건간에 상관없...
    • 때밀이
    • 2000.03.13 10:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 종이학
      2000.03.13 20:56
      때밀이 wrote: > test1과 test2에서 다음과 같이 비교하려 합니다. > > select a.* from test1 a, > ...