2014-04-29 1 views
2

사용자 지정 파일 확장명이 설정된 Windows 양식 응용 프로그램이 있습니다. 내 파일에 데이터를 저장할 수 있으며 Windows에서 저장된 파일을 두 번 클릭하면 응용 프로그램이 시작됩니다.Windows Forms 응용 프로그램에서 사용자 지정 파일 형식으로 저장된 데이터 액세스

그러나 데이터를 읽기 위해 내가 클릭 한 파일의 이름을 가져올 수 없었습니다. 모든 argue [0] 내가 argue [1] 다음 매개 변수 (아마 내가 뭘 찾고있어 파일 이름을 클릭)하지만 args.Length 될 exe (내가 보는) args 말해야하는 것 같다 직접 exe 파일을 열거 나 exe 파일을 실행하는 텍스트 파일을 클릭하든 관계없이 항상 단지 1입니다. 클릭 한 파일 이름이 없습니다.

편집 (해결 : ish) : 마침내보다 구체적인 문제가 해결되었습니다. 내 응용 프로그램은 ClickOnce와 함께 배포되었으며 Windows 양식 응용 프로그램 속성을 통해 모든 파일 연결을 설정했습니다. 저장된 사용자 지정 파일의 속성을 마우스 오른쪽 단추로 클릭하면 속성 이름이 아니라 "OpenOnce Application Deployment Support Library"로 표시됩니다. 내 .exe에서 기본값이 열리도록 변경하면 마술처럼 올바른 arg 값 (exe, 클릭 한 파일 이름)이 나타납니다.

+0

[내 애플리케이션으로 파일을 여는 방법은 무엇입니까?] (http://stackoverflow.com/questions/4908955/how-do-i-open-a-file-with-my-application) – Mehraban

+0

아마도 인자 중 하나에 파일 경로가 있어야합니다. .exe 이름 만 사용 하시겠습니까? – Kilazur

+0

저장 한 파일의 크기가 크게 크지 않으면 [File.ReadAllText()] (http://msdn.microsoft.com/en-us/library/ms143368(v=vs.110).aspx)를 사용하는 것이 더 쉽습니다.) 또는 [File.ReadAllLines()] (http://msdn.microsoft.com/en-us/library/s2tte0y1 (v = vs.110) .aspx)에서 "StreamReader"를 사용하십시오. 그건 그렇고, 거기에 여분의 보풀이 없도록 질문을 편집해야합니다. 당신의 질문을 적절하게 설명하기 위해 부셔보십시오. – mason

답변

1

ClickOnce 응용 프로그램의 명령 줄 인수에 직접 액세스 할 수 없습니다.

System.Runtime.Hosting.ActivationArguments args = AppDomain.CurrentDomain.SetupInformation.ActivationArguments; 
if (args.ActivationData != null) 
{ 
    foreach (string commandLineFile in AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData) 
    { 
     MessageBox.Show(string.Format("Command Line File: {0}", commandLineFile)); 
    } 
} 

이 나에게 내가 클릭 파일 이름을 준 : 그들에 도착하기 위해, 나는 here에서 약간 수정, 다음을 사용했다. 우리.