|
임프랍니다.
저도 신기하다 싶어서 좀 더 연구해봤는데... 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에 아무런 값이 들어가지 않습니다...
: : : 이유가 뭘까요?
: : :
: : : 윈도우 문제일까요?
|