Q&A

  • WinExe 인자값에 관한질문
WinExec() 함수 안에 인자값을 응용프로그램으로 넘겨 줍니다.
그러면 응용프로그램에서 이값을 받아 들여서 새로운 작업을 해야 하는데..
그 방법을 잘모르겠네요.

예를 들어 WinExec(PChar('Application.exe,'+'Name'), SW_SHOWNORMAL) 이와 같은 방법으로 인자를 값을 넘겨 줍니다.

그렇게 되면 새로운은 응용프로그램쪽에서 이 Name을 받아야 하는데 어떻게 받아야 할지를 모르겠네요.

고수님들의 조언이나 간단한 예제를 볼 수 있도록 도와 주세요.
3  COMMENTS
  • Profile
    hahaha 2003.06.26 05:58
    ShowMessage(ParamStr(1)); //첫번째 인자값
    ShowMessage(ParamStr(2)); //두번째 인자값

    function ParamStr(Index: Integer): string;  // system.pas 에 선언되어 있음(delphi v5) v6은 확인 안 해 봤음.


  • Profile
    김남길 2003.06.26 12:14
    아래와 같이 WinExec(PChar('Application.exe'+'Name'), SW_SHOWNORMAL)을 이용하여 응용프로그램을 띄워 봤는데요 안되는데요.
    실행파일이 실행되지를 않습니다.
    위의 것을 바꿔서 WinExec(PChar('C:testtest.exe'), SW_SHOWNORMAL) 만 하게 되면 test.exe 가 실행은 됩니다.
    만약 test.exe는 실행이 되고 test.exe에 버튼을 하나 만들고 버튼을 클릭 했을 때 Name 값을 볼 수 있는 방법이 없는지요?
    위의 것을 약간 수정하면 될 것 같은데 잘 안됩니다.
    아시는 분은 답변 좀 꼭 해 주세요.


  • Profile
    Robin 2003.06.26 22:10
    저는 이렇게 해도 된다고 봅니다만..너무 무식해서리..
    음..

    1. 보내는쪽
    TUSER_INFO = packed record
        emp_no    : array [0..5]    of char;    { 입력자 사번 }
        team_code : array [0..2]    of char;    { 부서 코드 }
        the_right : array [0..1]    of char;    { 권한 }
      end;

    // 아래와 같이 보낼 데이터 채워 주시고요
    StrMove(USER_INFO.emp_no,    PChar(Trim(edtUserID.Text)), 6);
    StrMove(USER_INFO.team_code, PChar(Trim(edtTeam_code.Text)), 3);
    StrMove(USER_INFO.the_right, PChar(Trim(edtAuthority.Text)), 2);


    procedure TfrmLogin.AExecMain;
    var
      hHandle : HWND;
      DataStruct : TCOPYDATASTRUCT;
    begin
      // execute main
      WinExec('Test.exe', SW_SHOWMAXIMIZED or SW_MAXIMIZE); //같은 디렉토리에 있는 다른 실행 파일
      sleep(500);   // 적절히 조정하세요 sleep없으면 간혹 데이타 놓치더라구요.보내는쪽이 너무 빨리 보내서 다른 프로그램이 늦게 실행되면 데이타 놓칠수 있어요..
      hHandle := FIndWindow('TMainForm', 'Nex NEWS');

      // send data to other program
      DataStruct.dwData  := hHandle;
      DataStruct.cbData  := sizeof(TUSER_INFO);
      DataStruct.lpData  := @USER_INFO;
      SendMessage(hHandle, WM_COPYDATA, wParam(Application.Handle), lParam(@DataStruct));
    end;

    2. 받는쪽.
    //아래와 같이 프로시져 선언해 주시고요
    procedure WMCopyData(var msg : TWMCopyData); message WM_COPYDATA;

    procedure TMainForm.WMCopyData(var msg : TWMCopyData);
    var
      hHandle : HWND;
    begin
      { receive login information }
      CopyMemory(@USER_INFO, msg.CopyDataStruct^.lpData, sizeof(TUSER_INFO));
      msg.Result := 1;

      showmessage(USER_INFO.emp_no);
      showmessage(USER_INFO.team_code);
      showmessage(USER_INFO.the_right);

    또는 계속 사용하실 데이터 이면 Shared Memory에 저장하고 넣었다 뺐다
    를 하시면 되겠네요...

      { make shared memory }
      CreateSharedMem('LOGIN');
      shmHandle := OpenSharedMem('LOGIN');
      WriteSharedMem(shmHandle, 'USER',   USER_INFO.emp_no);
      WriteSharedMem(shmHandle, 'DEPT',   USER_INFO.team_code);
      WriteSharedMem(shmHandle, 'RIGHT',  USER_INFO.the_right);
    end;


    * 이거 되는지 확인좀 하시고 답글좀 올려주세요..저도 정말 초보라서리
    궁금하네요...
    첨으로 델코에 답을 해보네요...참나 오래살고 볼일이여.... 캬울~~~  


    • 초보
    • 2003.06.27 00:02
    • 2 COMMENTS
    • /
    • 0 LIKES
    • major
      2003.06.27 01:02
      그러시면 SQL.Clear를 For문안에 쓰시면 될것 같네여.. 그럼 즐프하세염..
    • 초보
      2003.06.27 02:06
      아하..그렇군나.. 아하..그렇구나.. 엄청 감사함당..^^
    • 박재범
    • 2003.06.26 21:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 그냥
      2003.07.09 01:49
      그냥 그렇게 보이도록하는것, 눈속임이 아닌지요. 동영상에 대해서는 자세히 모르지만 제가 보기엔 그냥 ...
    • 조승철
    • 2003.06.26 19:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 방재웅
      2003.06.27 22:02
      가능합니다. 단 리포트폼 자체가 메모리에 Create 되어 있어야 합니다. 그러면 다음과 같은 형식으로...
    • 김경록
      2003.06.26 20:10
      델파이 서적을 보면, 퀵리포트 설명 중에 Group으로 출력하는 부분을 참조하시면 될 것같은데.. 어쨌든.....
    • 김범수
    • 2003.06.26 19:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.06.26 19:53
      안녕하세요. 최용일입니다. 델파이에서는 그냥 반올림해주는 Round함수를 쓰시면 됩니다... 델파이뿐...
    • 김경훈
    • 2003.06.26 08:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.06.26 19:58
      안녕하세요. 최용일입니다. 먼저 ocx를 레지스트리에 등록하세요... regsvr32.exe ocx파일이름 그...
    • nilriri™
      2003.06.26 09:54
      샬롬~ 오라클 관련된 정보는 많이 있던데..함 검색해 보세요.. tnsnames.ora 나 oracle , net8 등등으...
    • 박준영
    • 2003.06.26 03:51
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 스머프
    • 2003.06.26 02:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2003.06.26 09:44
      샬롬~ 컴포넌트의 리드온리 속성이 언제 바뀌는 건데여? 왜 바뀌져? 머..폼이 생성될때 무슨 조건...
    • 이린우
    • 2003.06.26 02:20
    • 3 COMMENTS
    • /
    • 0 LIKES
    • hahaha
      2003.06.26 05:58
      ShowMessage(ParamStr(1)); //첫번째 인자값 ShowMessage(ParamStr(2)); //두번째 인자값 function Par...
    • 김남길
      2003.06.26 12:14
      아래와 같이 WinExec(PChar('Application.exe'+'Name'), SW_SHOWNORMAL)을 이용하여 응용프로그램을 띄워 ...
    • Robin
      2003.06.26 22:10
      저는 이렇게 해도 된다고 봅니다만..너무 무식해서리.. 음.. 1. 보내는쪽 TUSER_INFO = packed rec...
    • 김관희
    • 2003.06.26 01:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최은하
    • 2003.06.26 01:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 배건환
      2003.06.26 01:50
      아래와 같이 하면 됩니다. procedure TForm1.Button1Click(Sender: TObject); var nCount:Word; begin...
    • 초보
    • 2003.06.26 01:28
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 박서규
      2003.06.26 02:15
      Tools -> Environment options -> Autosave option에 체크를 풀고 해보시죠..
    • 초보
      2003.06.26 03:30
      다른 이유는 없을까요....? 아시는분~~~ 알려주세요~~~
    • 최용일
      2003.06.26 20:10
      안녕하세요.최용일입니다. 다른 사람소스를 인계받으셨다고 하셨는데... 설정파일을 지우시면 됩니다. ...
    • 초보
      2003.06.27 02:07
      정말정말...~~로~~ 감사합니당.. 복받으실꺼에요...
    • 권성진
    • 2003.06.26 01:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박서규
      2003.06.26 02:18
      쓰레드 내부에서 VCL을 Access하는경우 Synchronize를 이용하는경우 Main thread와의 동기화를 하는데 이를...
    • 고가람
    • 2003.06.25 23:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 배재근
      2003.06.25 23:58
      제가 보기에 폰트인 경우 윈도우 문제인 같습니다.. 해당   PC안전모드 부팅 후 재부팅하시고 다...
    • 김준영
    • 2003.06.25 23:07
    • 5 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2003.06.26 09:40
      샬롬~ 해결 하셨느지 몰겠넹... 흠... 폼에서 핫키 처리하는 이벤트에서 해당 키 눌렸을때 전역변...
    • 김준영
      2003.06.27 00:00
      두 분다 넘효넘효 감사드려요... 해결 했답니다. ^^
    • major
      2003.06.26 00:30
      다음 While은 Continue 이구요... 빠져나가는 건 Break일꺼에여.. 그럼 즐프하세염...
    • 김준영
      2003.06.26 01:04
      ㅡㅡ; 그건 당연히 알죠... 그 내용이 아니에요.
    • major
      2003.06.26 01:38
      헉 지송해여... 전 위에꺼 물어 보는 줄 알았는데요... 근데 이거 걍 Keypress로 넘겨 버리면 되지 ...
    • 남기섭
    • 2003.06.25 22:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 일그니
    • 2003.06.25 21:06
    • 0 COMMENTS
    • /
    • 0 LIKES