! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

윈도우 작업 표시줄에 .NET 데스크탑 앱의 "최근 항목"을 표시하는 방법 > 온라인 스터디

본문 바로가기

ComponentOne

온라인 스터디

일반 윈도우 작업 표시줄에 .NET 데스크탑 앱의 "최근 항목"을 표시하는 방법

페이지 정보

작성자 GrapeCity 작성일 2023-08-01 11:42 조회 226회 댓글 0건

본문

윈도우 작업 표시줄에서 Microsoft 엑셀이나 워드, 파일 탐색기 등 앱의 아이콘을 우클릭하면 최근 사용했거나 열어본 파일 항목을 보여 주는데, 이러한 기능을 "점프 목록"이라고 합니다.

C1TaskbarButton 컨트롤(ComponentOne WinForms Edition의 일부)을 사용하면 코드 몇 줄 만으로도 쉽게 점프 목록을 구현할 수 있습니다. 


.NET 작업 표시줄


이번 스터디에서는 작업 표시줄 버튼의 점프 목록을 수정하여 C1WordPad 응용 프로그램에 대해 최근 저장된 모든 파일을 표시하도록 수정할 것입니다.


점프 목록에서 파일을 선택하면 작업 표시줄에서 직접 선택한 새로 로드된 파일과 함께, 응용 프로그램의 새 인스턴스가 시작됩니다.



시작하기 


먼저 C1WordPad 샘플로 시작할 것입니다.

ComponentOne Windows Control Pack(C1.Win.Win7Pack 패키지)의 일부인 C1TaskbarButton 컨트롤을 추가하겠습니다.


이번 스터디에 포함된 단계를 따라 하려면, 다음 GitHub 페이지에서 수정되지 않은 원본 C1WordPad 샘플을 다운로드해 주세요.



작업 표시줄 버튼 점프 목록에 파일 추가 


코드 두 줄만으로 .NET 응용 프로그램의 작업 표시줄 점프 목록에 파일을 추가할 수 있습니다.

// add to jumplist
c1TaskbarButton1.JumpList.Items.Add(new C1JumpPath() { Path = dlg.FileName, CustomCategory = "Recent Files" });
c1TaskbarButton1.JumpList.Apply();


WordPad 샘플이 열리면 작업 표시줄 점프 목록에 파일을 저장하고 추가할 위치를 식별해 보겠습니다. 


위의 코드는 원본 WordPad 샘플 응용 프로그램의 575행 return 바로 전 if 문의 SaveDocumentAs 메서드 안에 추가되었습니다.


dlg.FileName 변수는 사용자가 방금 파일로 저장한 내용을 기반으로 하는 문자열 변수입니다.


완전히 수정된 SaveDocumentAs 메서드(위의 두 줄만 추가됨)는 아래에서 확인할 수 있습니다.

public bool SaveDocumentAs()
{
    using (SaveFileDialog dlg = new SaveFileDialog())
    {
        dlg.FileName = _documentName;
        dlg.Filter = "Rich text file (*.rtf)|*.rtf|"
            + "Rich text file, no OLE objects (*.rtf)|*.rtf|"
            + "Plain text file, no OLE objects (*.txt)|*.txt|"
            + "Plain text file, OLE objects replaced with text (*.txt)|*.txt|"
            + "Unicode text file, no OLE objects (*.txt)|*.txt";

        if (dlg.ShowDialog() == DialogResult.OK)
        {
            _documentName = dlg.FileName;
            _rdlSaved.AddDocument(_documentName);

            // add to jumplist
            c1TaskbarButton1.JumpList.Items.Add(new C1JumpPath() { Path = dlg.FileName, CustomCategory = "Recent Files" });
            c1TaskbarButton1.JumpList.Apply();
            return SaveDocument();
        }
    }
    return false;
}


C1JumpPath Object(개체)는 작업 표시줄 버튼 점프 목록에 추가할 수 있는 파일 경로를 나타냅니다. C1JumpTaskC1JumpLink와 같은 다른 유형의 개체가 있으므로, 파일 경로에 대한 링크와 다른 기능을 추가할 수 있습니다.


여기에서 더 자세히 읽어 보세요.


지금까지 점프 목록에 파일을 추가했지만 아직 작동하지 않을 수도 있습니다.

최근 파일을 표시하려면, 응용 프로그램도 지원되는 파일 형식에 등록해야 합니다. 이어 해당 내용을 설명하겠습니다.



파일 형식에 응용 프로그램 등록 


.NET 응용 프로그램의 작업 표시줄에 최근 파일을 표시하려면 응용 프로그램을 파일 형식에 등록해야 합니다.

일반적으로 사용자의 컴퓨터에 응용 프로그램을 설치하는 동안 등록이 이뤄집니다.


하지만 지금은 사용 편의성을 위해 C1TaskBarButton 라이브러리를 사용하여 런타임 시 해당 기능을 수행할 수 있습니다.


C1WordPad 응용 프로그램의 경우, 응용 프로그램을 .txt 및 .rtf 파일 형식과 연결된 것으로 등록하려고 합니다.


C1TaskBarButton의 RegisterFileAssociations 메서드를 사용하여 런타임 시 파일 형식을 등록할 수 있습니다.


예를 들어 버튼 클릭 이벤트 시 다음 코드를 실행합니다.

private void button1_Click(object sender, EventArgs e)
{
    c1TaskbarButton1.WindowAppID = "WordPad";
    c1TaskbarButton1.RegisterFileAssociations(
        "Text Document",
        @"%systemroot%\system32\shell32.dll,284",
        string.Format("\"{0}\" \"%1\"", Application.ExecutablePath),
        new string[] { ".txt", ".rtf" });
}


실행 가능한 응용 프로그램과 연결된 파일 형식을 적절히 등록하는 데 방해가 되지 않도록 Visual Studio를 기본 Microsoft 보안 조치의 관리자로 실행해야 합니다.


WindowAppID를 설정하는 것도 RegisterFileAssociations 메서드가 적절히 작동하기 위해 필요한 첫 번째 단계입니다.


WindowAppID에 전달되는 값은 응용 프로그램 실행 파일의 이름으로, 이 경우에는 단순히 "WordPad"입니다.



파일 경로 매개 변수를 수락하도록 응용 프로그램 구성 


이제 저장된 파일을 최근 점프 목록에 추가했고, 응용 프로그램에서 전달되는 파일 형식을 수락할 수 있으므로 응용 프로그램에서 파일을 수락하고 처리할 수 있도록 허용해야 합니다.


이는 작업 표시줄 아이콘 위의 목록에서 최근 파일을 선택할 때 점프 목록이 전달하는 파일인 오버로드된 생성자 인수에 의해 처리됩니다.


Program.cs 파일 내에서 Main 진입점을 다음과 같이 변경하여 이를 수락하도록 응용 프로그램을 구성합니다.

static void Main (string[] args)
{
    Application.EnableVisualStyles ();
    Application.SetCompatibleTextRenderingDefault (false);
    if (args.Length > 0)
        Application.Run(new Form1(args[0]));
    else
        Application.Run (new Form1());
}


위의 if/else 문은 점프 목록에서 파일을 선택하기로 결정한 후 새로 전달된 인수를 수락하기 위한 트리거 역할을 합니다.


처음 프로젝트를 실행할 때는 추가 인수가 전달되지 않습니다. 따라서 첫 번째 if 문이 실패하면 else 문이 전달된 인수 없이 새 양식을 시작합니다.


다음으로 선택적 매개 변수를 허용하도록 양식의 생성자 클래스를 구성해야 합니다. C#에서는 Form1 매개 변수 내에 해당 변수 유형의 기본값으로 설정되는 변수를 만들면 됩니다.


이는 문자열을 전달하며, 문자열 변수의 기본값이 아래의 행과 같이 빈 겹따옴표로 표시되는 빈 문자열입니다.

public Form1(string filename = "")



또한 Form1 내에서 (초기 빈 WordPad로 응용 프로그램을 시작하고 싶지 않은 경우) 시작 값에 로드되도록 if/else 문을 설정해야 하며, Form1 생성자에 C1JumpList로부터 전달되는 파일인 인수를 전달하는지 확인할 수 있습니다.


이 if/else 문은 33행의 독립 실행형 로드를 다음 코드로 대체합니다.

// Load a sample text file into the editor.
if (filename == "")
    this.LoadDocument(@"Readme.rtf");
else
    this.LoadDocument(filename);


이제 응용 프로그램을 실행하고 버튼을 클릭하여 파일 형식을 등록할 수 있으며, 작업 표시줄 아이콘의 점프 목록 내에 모든 최근 파일이 표시됩니다. (이 예에서 이러한 파일은 기본적으로 프로젝트의 bin/debug/ 폴더에서 가지고 옵니다.)


이러한 파일 중 하나를 선택하면, 등록 및 응용 프로그램의 인스턴스를 호출할 때 점프 목록에서 전달되는 인수를 수락하도록 앞서 추가한 생성자 오버로드 코드가 동작합니다.


WordPad 응용 프로그램의 새 인스턴스가 이미 로드된 선택된 파일을 사용하여 실행됩니다.

.NET 작업 표시줄


작업이 완료되었습니다! 완성된 샘플을 다운로드받아서 확인해 보세요.




지금 바로 ComponentOne을 다운로드하여 직접 테스트해 보세요!

c1.png


  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.