Q&A

  • winexec 사용시 선택한 메뉴 자동 실행이 어떻게 되는지 알려주세요
...
WinExec(PChar('test.exe'+ ' '+'p1001001'), SW_SHOW);
..
test.exe 라는 프로그램을 실행하는데 p1001001 이라는 메뉴가 있는데 이것을 프로그램실행하면서 p1001001 메뉴를 자동으로 띄우려고 하는데 어디서 이렇게 처리 되는건지를 모르겠습니다. test1.exe 라는 프로그램도 똑같이 위처럼 실행해서 test1.exe 의 메뉴중에 p2002002 라는 메뉴를 띄우려고 하는데 안되네요

아래부분에 메인메뉴 에 코딩이 되었는데 messasg를 받는것 같은데 메시지 정의한 부분이 없거든요
근데 위의 winexec 처럼 파라미터를 넘겨주고 실행하면 아래 p_MenuClick 프로시저가 실행됩니다.
근데 더 이상한것 p_MenuClick 프로시저를 주석처리해도 메뉴가 뜬다는겁니다. 아무래도 다른곳에서 메시지 처리가 이루어 지는것 같은데 찾을수거 없군요
고수님들의 조언 부탁드립니다

procedure TFMnu0701.p_MenuClick(Sender: TObject); //(var Msg: TMessage);
var
  i, j: Integer;
  lBreak: Boolean;
  Reg_Hipis : TRegistryIniFile;
  vPgmID: String;
begin
    Reg_Hipis := TRegistryIniFile.Create(cstRegIni);
    vPgmId  := Reg_Hipis.ReadString('Insa', 'PgmID',  '');  //폼
    gsSttlNo:= Reg_Hipis.ReadString('Insa', 'SttlNo', '');  //전역
    Reg_Hipis.WriteString('Insa', 'PgmID',  '');
    Reg_Hipis.WriteString('Insa', 'SttlNo', '');
    Reg_Hipis.Free;

    if  vPgmID <> '' then
    begin
      lBreak := false;
      for  i  :=  0  to  FMnu0701.MM_MainMenu.Items.Count - 1 do
      begin
           for j  :=  0  to  FMnu0701.MM_MainMenu.Items.Items[i].Count - 1 do
           begin
               if FMnu0701.MM_MainMenu.Items.Items[i].Items[j].Hint = vPgmID then
               begin
                   lBreak := true;
                   break;
               end;
           end;
           if  lBreak then  Break;
      end;

      if  lBreak then
          FMnu0701.MM_MainMenu.Items.Items[i].Items[j].Click;
    end;
end;

1  COMMENTS
  • Profile
    최용일 2006.08.31 20:26
    안녕하세요. 최용일입니다.

    파라매터 처리는 보통 프로젝트 소스나 메인폼의 Create, OnCreate, OnShow, OnActavate등에서 합니다.

    이부분을 살펴보세요...

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