2016-07-15 2 views
0

짧은 버전 : Windows의 경우 파일 탐색기에서 여러 .txt 파일을 선택한 다음 선택한 파일 중 하나를 마우스 오른쪽 단추로 클릭하고 팝업에서 "열기"를 선택하십시오 메뉴에서 선택한 파일이 모두 열리 며 메모장의 별도 인스턴스에 각각 열립니다.파일 탐색기에서 응용 프로그램의 여러 인스턴스 열기

여러 파일을 선택하고 마우스 오른쪽 단추로 하나를 선택한 다음 열기 : -> 모든 파일이 열리 며 편집기의 각 인스턴스에서 각각 동일한 파일/편집기 동작을 원합니다.

기본적으로 클릭 투 열기 작업이 있습니다 (단일 파일의 경우 두 번 클릭하면 Google 에디터에서 파일이 열리고 오른쪽 버튼을 클릭하면 열립니다).

세부

우리는 실행 후 사용자 정의 확장자를 가진 리소스 파일을 생성하는 우리의 편집기 도구 (FuBarStudio.exe), (samplefile.fbr)

가 시작 업데이트 (FuBarStudioLauncher.exe)가

C:\path_to_my_exe\FuBarStudio.exe" -ide samplefile.fbr 

내가이 *의 .fbr r을 더블 클릭하면 있도록 설정 윈도우 레지스트리 항목이 : 명령 줄에서 실행하면 특정 리소스를 열고, 편집기를 불 수 있습니다 esource 파일을 선택하거나 마우스 오른쪽 버튼을 클릭하고 팝업 메뉴에서 열기를 선택하면 실행 프로그램이 실행되고 지정된 자원이 편집기로 전달됩니다.

관련 레지스트리 항목 :

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\.fbr] 
@="FuBar.Place" 

[HKEY_CLASSES_ROOT\.fbr\FuBar.Place] 

[HKEY_CLASSES_ROOT\.fbr\FuBar.Place\ShellNew] 

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\FuBar.Place] 
@="FuBar Place" 

[HKEY_CLASSES_ROOT\FuBar.Place\shell] 

[HKEY_CLASSES_ROOT\FuBar.Place\shell\Open] 
@="Open" 

[HKEY_CLASSES_ROOT\FuBar.Place\shell\Open\command] 
@="\"C:\\path_to_my_exe\\FuBarStudioLauncher.exe\" -ide \"%1\"" 

이 모든 단일 파일에 대한 잘 작동합니다.

하나 이상의 .fbr 파일을 선택한 다음 선택한 파일 중 하나를 마우스 오른쪽 단추로 클릭하고 "열기"를 선택하면 FuBar Studio 인스턴스 하나만 열립니다.

각 파일마다 하나씩 FuBar Studio 사본을 열고 싶습니다.

답변

0

그래서 도움이되면 유용한 답을 얻었습니다.

1) 여기 MultiSelectModel의 사용을 읽어 : https://msdn.microsoft.com/en-us/library/windows/desktop/hh127436(v=vs.85).aspx

문서 내 유형을 설정합니다.

2) 나는 중간으로 배치 스크립트를 생성, 그래서 나는 무엇을 무슨 일이 있었 더 볼 수 있습니다 :

echo "interesting things" >> logs.txt 
:

[HKEY_CLASSES_ROOT\FuBar.Place\shell\Open\command] 
@="\"C:\\path_to_my_exe\\launcher.bat\" \"%1\"" 

파일을 tmp로 필기구,이 스크립트로 주위 놀다 등 내가 실현 "에코"를 사용

timeout 10 

과 :

및 일시 중지 물건을 강제로 제한 시간을 사용하여/느리게 MultiSelectModel은 내가 여러 파일을 오른쪽 클릭 "열기"를 선택하여 문서 또는 플레이어로 설정되어 있는지 여부, 윈도우에서 사업을 수행하고 있음을 D : 선택한 파일 당 한 번

HKEY_CLASSES_ROOT\FuBar.Place\shell\Open\command 

.

Windows가 명령을 한 번 호출하여 명령에 인수로 모든 파일을 전달하도록하는 방법을 찾을 수 없습니다.

3) 내 프로그램 외에 다른 프로그램을 시험해보고 스크립트 + 타임 아웃을 사용하면 오류가있는 명령 쉘을 볼 수 있으므로 다른 특정 인스턴스가 있으면 내 프로그램 FuBarStudioLauncher.exe가 항상 실패한다는 것을 알았습니다. 달리는.

그래서 여기에 내가 가진 무엇 :

  • Windows가 입력 파일 당 <something>의 인스턴스를 실행하는 것입니다.
  • <something>은 내 FuBarStudioLauncher.exe가 될 수 없습니다. 하나가 실행 된 후 다음 N이 실패하기 때문입니다.

그래서 중요한 섹션 잠금을 수행 할 중개 스크립트가 필요합니다. - 잡아 당김 잠금. - 실행기를 실행하여 완료하십시오. - 잠금 해제. StackOverflow에 대한

만세 :

Semaphore for CMD instances working in Parallel

이 입력으로 나의 최종 제품이 사용 :

:lockedAppend 
2>nul (
    >>%~dp0launcher_script_lockfile.txt (
     REM Do any amount of processing within this block. 
     REM All stdout will safely be appended to the queue 
     REM You could even call out to a subroutine, or another batch file 

     %~dp0FuBarStudioLauncher.exe -ide "%1" 
     REM The CALL below ensures that the block exits with ERRORLEVEL 0 - success 
     (call) 
    ) 
) || goto :lockedAppend 

그것을 않았다!

관련 문제