프로그램 A가 다른 프로그램 B를 열고 프로그램 B가 지정된 파일을 열도록하려는 경우가 있습니다. 현재 CreateProcess를 사용하고 명령 줄 인수에 파일 경로를 전달하여이 작업을 수행하려고합니다. 여기 내 코드 :파일을로드하는 프로그램을 여는 CreateProcess
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
CreateProcess("C:\\ProgramB.exe", "C:\\MyFile.txt", NULL, NULL,
FALSE, 0, NULL, NULL, &si, &pi);
내가 뭘 잘못하고 있니? 프로그램 B의 DragAndDrop이 true이고 창으로 파일을 드래그 앤 드롭하면 성공합니다 (WM_DROPFILES 메시지도 성공없이 보냈습니다). 프로그램 B는 열린 파일 대화 상자에서 파일을 열 수 있지만이 명령에 문제가 있습니다. 파일을 찾을 수 없다고 말했습니다. 명령 프롬프트에서
"C:\ProgramB.exe" "C:\MyFile.txt"
을 실행하는 의견에
코드에서 사용중인 경로가 정확한 경로입니까? 또는 파일 시스템 리디렉션이 너와 어지럽 혔습니까? 커맨드 라인 인수에 공백이 있습니까? 어떻게 오류를 감지하고 있습니까? –
@DavidHeffernan 그 사람이 정확한 경로를 사용하고 있지 않지만, 어떤 경로로든 작동하도록하고 싶습니다. (실제 경로는 "C : \\ Users \\ Paul \\ Desktop \\ MyFolder \ \ MyFile.txt "). 예, 폴더 이름에는 공백이 있으므로 명령 줄 인수에 공백이 있으므로 내 견적이 필요합니다. 프로그램 B에는 try/catch 블록이 있지만 실제로 어떤 정보도 제공하지 않습니다. 어쩌면 프로그램 B를 더 자세히 살펴야 할 것입니다. – CincinnatiProgrammer
Windows API는 예외를 발생시키지 않습니다. try/catch는 아무 것도하지 않습니다. 오류가 있는지 올바른 방법으로 확인해야합니다. 설명서에 설명 된대로 CreateProcess의 반환 값을 확인하십시오. 명령 창 cmd.exe에서 매개 변수를 전달하는 실행 파일을 호출하면 어떻게됩니까? 그게 효과가 있다면 가능하다는 것을 알게 될 것입니다. 그렇지 않으면 지금 포기하십시오. –