Q&A

  • 같은 프로그램이 하나만 실행되게 하고/실행중인 프로그램에 지시를 내리는 법?
어떤 특정파일 형식을 읽어서 처리하는 MDI 프로그램이 있습니다. 도스창에서
  Test.exe filename
이런식으로 실행시키는데요, 이미 Test.exe a.txt 이렇게 프로그램을 실행시켜서 a.txt 을 처리하는 MDIChild폼을 만들고 나서 다시 Test.exe b.txt를 하면 새로운 프로그램이 실행되는 것이 아니라 이전에 실행시킨 프로그램에서 a.txt를 처리하는 MDIChild폼이 생기게 하려고 합니다.

일단 첫 번째 문제는 "이전에 실행된 프로그램이 있는지를 알아내는 것"이고요,
두 번째 문제는 "어떻게 이전에 실행된 프로그램에 지시를 할 것인가"인가 입니다.

어떻게 해야 저렇게 할 수 있을까요?
다소 복잡한 질문이네요.ㅠㅠ 고수님들중에 아시는 분이 답변을 해 주신다면 정말 감사하겠습니다.
모두 좋은 주말 되세요~

4  COMMENTS
  • Profile
    최용일 2005.08.27 07:08
    안녕하세요. 최용일입니다.

    뮤텍스(mutex)등을 이용해서 먼저 프로그램이 중복실행이 안되도록 만드시구요.
    이건 질답란이나 팁란 검색해보시면 많이 있습니다.

    이렇게 중복실행 방지를 하시면 프로그램이 떠있는지 안떠있는지는 알 수가 있습니다.

    프로그램이 이미 먼저 떠 있을때는 떠있는 프로그램의 메인폼이나 기타 윈도우메세지를 받을 수 있는 컨트롤의 핸들을 찾아서 파일이름을 메세지에 담아서 넘겨주시는것이 가장 고전적이고 표준적인 방법입니다.
    윈도우 핸들 찾는것은 FindWindow, FindWindowEx를 이용하시면 됩니다.

    메세지는 WM_COPYDATA를 SendMessage로 보내시면 됩니다.

    윈도우 핸들 찾는것이 힘들다면... BroadcastSystemMessage 를 이용해서 주고받는 방법도 있습니다.

    질답란 찾아보시면 예제들 많이 있습니다.

    ^^ 항상 즐코하세요...

  • Profile
    임형준 2005.08.30 19:03
    WM_COPYDATA메세지를 폼에서 받아서 처리를 해야 할 것 같은데요, 오브젝트 인스펙터를 보면 폼에서 WM_COPYDATA에 대한 핸들러는 보이질 않습니다. 제가 잘은 모르지만 WndProc같은 곳에서 처리를 해야 할 것 같은데요, 그런데 WndProc이라는 함수/프로시져도 보이질 않네요.ㅠㅠ

    제가 델파이와 API에 대한 초보적인 지식밖에 없다보니...어떻게 해결해야 할 지 모르겠습니다.
  • Profile
    최용일 2005.08.30 23:14
    안녕하세요. 최용일입니다.

    아래와 같이 하세요...

    <!--CodeS-->
    type
    TForm1 = class(TForm)
    private
       { Private declarations }
    public
       procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    { TForm1 }

    procedure TForm1.WMCopyData(var Message: TWMCopyData);
    begin
       // 여기에서 메세지 처리
    end;
    <!--CodeE-->
    ^^ 항상 즐코하세요...

  • Profile
    임형준 2005.08.29 22:27
    ~
    • nilriri™
      2005.08.29 23:14
      외부 프로그램을 실행시키실때 Createprocess 를 사용하여 실행 시키신후 린턴값으로 반환되는 헨들값을 ...
    • 이은주
      2005.08.30 02:59
      답변 감사합니다. 그런대... 본 프로그램이 뜨기 전에 이미 Apache 가 여러개 떠 있는 경우에는 그 놈...
    • TeamB
      2005.08.30 04:11
      아마 데몬을 제어하실려고 하시나 본데.. 아파치나 MySQL의 경우 데몬이 백그라운드로 돌아갑니다.. ...
    • 이은주
      2008.08.25 17:00
      뒤늦게 봤군요. 감사합니다. 델파이에서 제어가 가능하다는 말씀이신 것 같은데 솔직히 어찌 해야 되는...
    • 이승현
    • 2005.08.29 00:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.08.29 19:06
      안녕하세요. 최용일입니다. bpl도 없이 그냥 dcu파일만 있는것은 따로 컴포넌트 등록하는 파일을 만들어...
    • 양훈철
    • 2005.08.28 04:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.08.29 19:09
      안녕하세요. 최용일입니다. 델파이에 있는 인스톨쉴드 평가판은 한글이 지원안되는것으로 알고 있구요.....
    • 윤경미
    • 2005.08.27 19:17
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박홍재
      2005.08.28 13:01
      MS SQL로 작업중이신가 아니면 공부중이신가 차근차근 질문이 올라오시네요... 아무튼 일절하고 일단 접속...
    • 윤경미
      2005.08.29 18:31
      답변 감사드립니다~ㅠ 제가 델파이에서 사용하는 컴포넌트가 tquery를 이용해서 sql 테이블의 내용을 불...
    • 박홍재
      2005.08.30 11:06
      프로그램에서 Table이나 Query를 이용해야 할 경우 TDatabase 를 하나 설정한 후 TQuery나 TTable의 Databa...
    • 임형준
    • 2005.08.27 04:48
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.08.27 07:08
      안녕하세요. 최용일입니다. 뮤텍스(mutex)등을 이용해서 먼저 프로그램이 중복실행이 안되도록 만드시구...
    • 임형준
      2005.08.30 19:03
      WM_COPYDATA메세지를 폼에서 받아서 처리를 해야 할 것 같은데요, 오브젝트 인스펙터를 보면 폼에서 WM_CO...
    • 최용일
      2005.08.30 23:14
      안녕하세요. 최용일입니다. 아래와 같이 하세요... <!--CodeS--> type TForm1 = class(TFor...
    • 임형준
      2005.08.29 22:27
      ~
    • 이중철
      2005.08.27 03:34
    • 델파이신참
      2005.08.27 03:42
      답변감사합니다. 근데 델파이 5에서는 지원안하나요?? 도움말에도 안나오고 Math선언해주고 해도 Error...
    • 최용일
      2005.08.27 06:57
      안녕하세요. 최용일입니다. 델파이 6이상에서만 지원할겁니다. 델파이 5에는 없어요... 아래는 델파...
    • 윤경미
    • 2005.08.27 01:57
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 박홍재
      2005.08.27 12:17
      현재 어디에서 접속을 하시는 건지 모르겠지만 BDE에서 접속시 SQL에 대한 접속 설정이 이미 되어 있는 ...
    • 윤경미
      2005.08.27 18:59
      아닙니다~~ 답변 정말 감사드립니다~~ 많은 도움이 됐어요~~^^ 근데 BDE의 Configuration을 보면 driver...
    • 박홍재
      2005.08.28 13:06
      MS SQL의 경우 Native 연결을 해보지 않아서 모르겠지만 예전에 들은 바로는 무척 까다롭다구 알구 있구요....
    • 꼬미사랑
      2005.08.30 20:05
      갠적으로 ODBC보다는 native 연결이 리소스를 적게먹어서 좋은데.. 좀 짜증이 나더군요... native가 clos...
    • 임형준
    • 2005.08.27 00:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 민스맘
      2005.08.27 01:16
      Project Options -> Application 에 보시면 아이콘 변경하는 부분이 있구요.... 아이콘은 아...
    • 황성욱
      2005.08.27 02:35
      마우스 다운 이벤트에서 처리하면 안될까요? procedure TForm1.StringGrid1MouseDown(Sender: TObject; &...
    • 사람과사람
      2005.08.27 09:02
      정말 감사드립니다.. 이런 방법이 있었네요.. MouseToCell(x, Y, ACol, ARow)  이 메쏘드를 ...
    • 윤경미
    • 2005.08.26 22:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 왕초보
      2005.08.27 00:04
      LoginPrompt를 true로 하고 커넥션할때 id, password를 넣으면됩니다.
    • nilriri™
      2005.08.27 01:07
      프리뷰화면을 띄울때 어찌 띄웠길래 메인 폼이 사라졌는데.. 프리뷰는 버젓이 살아 있을수 있는걸까요? ...
    • 프로글래머
      2005.08.26 18:32
      이 질문을 여러군데에서 여러번 보았는데 뾰족한 답이 없네요 ? 질문을 보면 도대체 왜 그렇게 하려 하...
    • TeamB
      2005.08.26 10:09
      델마당에 답글을 달았습니다만.... user 와 host 도 싱글쿼터로 감싸줘야 합니다. 그럼...
    • 박홍재
      2005.08.30 17:38
      동일한 Package를 계속해서 호출 할 시에 가끔씩 Error 가 발생을 한다면 글쎄요. 주석보다도 일단 서버의...
    • 꼬미사랑
      2005.08.30 20:02
      Package 사용후 Connection에 대한 close 동작을 하지 않은게 아닌가요? 현재 ADO에 Ora9.1사용해서 플젝...
    • 김상균
    • 2005.08.26 04:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박홍재
      2005.08.27 12:23
      애구 밑에서 답변을 달아드렸는데요. 지금 쿼리문의 문제는 조회절에서 두개의 Field를 합쳐서 조회했다는 ...
    • TeamB
      2005.08.26 10:20
      흠 밑에 글에 답글을 달고 봤더니 같은 질문이 또 올라와 있군요... 자세한것은 그 답글을 참고 하시...
    • 윤경미
    • 2005.08.26 03:41
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 이희승
      2005.08.26 14:13
    • 윤경미
      2005.08.26 18:18
    • 유응철
      2005.08.26 18:45
    • 윤경미
      2005.08.26 19:05
    • 박종석
      2005.08.26 23:44
    • 윤경미
      2005.08.27 00:48
    • 박홍재
      2005.08.27 12:36
    • 서해근
    • 2005.08.26 02:46
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김종화
      2005.08.27 02:48
      for i:=0 to ComponentCount - 1 do begin    if Components[i] is TCheckBox then TCheckBox(C...
    • 이승민
      2005.08.26 23:20
      방법은 여러가지 있겠네요. 그중 하나가 FindComponent 를 사용하여 하실수 있습니다. FindComponent 로 ...
    • 최용일
      2005.08.26 08:37
      안녕하세요. 최용일입니다. 간단하게, 리스트(TList)하나 만들어서 거기에 체크박스들 다 넣으세요. ...
    • 최용일
      2005.08.26 08:36
      안녕하세요. 최용일입니다. 직접 컴포넌트들을 제작을 하셔야 겠네요... 델파이 소스나 자료실 등에 ...