|
한가지 적지 않은것이 있군요....
AnsiString Name = ExtractFilePath(ParamStr(0))+"Main.Exe 111 222 333";
WinExec(Name.c_str(), SW_SHOWNORMAL);
위와같이 특정 프로그램을 실행 시킨다음에...
Main.exe에서
AnsiString Param1, Param2, Param3;
Param1 = ParamStr(1);
Param2 = ParamStr(2);
Param3 = ParamStr(3);
이라고 하면
Param1 에는 "" 아무값도 안들어가 있고
Param2 에는 222
Param3 에는 333
이 들어가있더군요... 신기하지요?
로그인을 하면 로그인에서 WinExec로 메인 프로그램을 실행시키는데 직접 메인 프로그램을 실행시키지 못하게 하기 위해서 파라메터를 쓰는데 Param1값을 읽지 못하는 경우가 있어서 메인 프로그램이 실행이 안된다고 자꾸 연락이 오는군요...
프로그램은 C:\Program Files\Example과같은 식으로 깔려 있어서 260문자는 넘지 않습니다.
박지훈.임프 님이 쓰신 글 :
: 임프랍니다.
:
: 저도 신기하다 싶어서 좀 더 연구해봤는데... ParamStr()로 파라미터를 넘겨받을 때, 제대로 넘어오지 못할
: 한가지 가능성이 있습니다. 넘겨받는 실행파일과 파라미터의 전체 패스가 260 문자가 넘을 때입니다.
: 예를 들어 실행파일이 있는 디렉토리의 전체 패스가 무쟈게 길어져서 결과적으로 실행파일과 파라미터의 전체
: 길이가 260문자가 넘어가게 되면 Win95/98 계열에서 문제가 발생할 가능성이 있습니다.
:
: 이것은 실제로 그런 경우를 보았다는 것이 아니라, 제 추측입니다.
: 만약 해당 실행파일을 c:\ 등 짧은 패스의 디렉토리에서 실행했을 때 문제가 발생하지 않는다면 이 때문일
: 테고, 만약 그래도 계속 문제가 발생한다면 다른 문제겠지요.
:
: 만약 그래도 계속 문제가 발생한다면, 두가지 시도해볼 수 있는 가능성은 있습니다.
: 일단... GetCommandLine() 함수를 직접 호출하는 것입니다. 이 함수는 ParamStr() 함수가 내부적으로 호출
: 하는 Win32 API 함수입니다. 이 함수를 써도 문제가 계속 발생한다면 OS 자체의 문제라고밖에 볼 수가 없구요.
: 만약 그래도! 안된다면!! 프로젝트 소스에서 바로 WinMain() 함수의 lpCmdLine 파라미터로 읽어들여보세요.
: 그래도 안된다면?? 방법이 없겠지요. ^^;;
:
: 그럼 이만...
:
:
: 김성호 님이 쓰신 글 :
: : OS의 구분은 특별히 없습니다...제가 직접 확인한 것은 Win98에서구요...다른 PC는 잘 모르겠습니다.
: : 특정 프로그램을 수천명이 쓰다보니...희안한 경우가 다 생기는군요...
: :
: : 박지훈.임프 님이 쓰신 글 :
: : : 임프랍니다.
: : :
: : : 특정 피시에서 안된다고 하셨는데, 일단 저로서는 실행파일의 인자가 ParamStr로 넘어오지 않는 경우는
: : : 보지 못했습니다. 말씀하신 특정 피시의 OS나 사양같은 정보를 올려주시면 참고가 되겠군요.
: : :
: : : 그럼 이만...
: : :
: : :
: : : 김성호 님이 쓰신 글 :
: : : : AnsiString Name = ExtractFilePath(ParamStr(0))+"Main.Exe 1111";
: : : : WinExec(Name.c_str(), SW_SHOWNORMAL);
: : : :
: : : :
: : : : 위와같이 특정 프로그램을 실행 시킨다음에...
: : : :
: : : : Main.exe에서
: : : :
: : : : AnsiString Param = ParamStr(1);
: : : : 이라고 했을때.... 일반적으로 Param의 값에 1111이 들어오는데....
: : : :
: : : : 가끔...특정PC에서 Param에 아무런 값이 들어가지 않습니다...
: : : : 이유가 뭘까요?
: : : :
: : : : 윈도우 문제일까요?
|