2015-01-24 6 views
1

으로 변경하는지 확인하십시오. 파일 탐색기에서 누른 공간을 수신하는 C# 프로그램을 프로그래밍하고 있습니다. 공간을 누르면 WPF 창에서 선택한 파일을 보여주는 WPF 창을 만듭니다.사용자가 파일 탐색기에서 파일 이름을 Moment C#

유일한 문제는 다른 사람이 파일 이름을 편집하고 파일 이름의 공백을 위해 공백을 누르면이 파일 미리보기가 호출된다는 것입니다.

사용자가 현재 파일 이름을 바꾸는 중 감지하는 방법이 있습니까?


추가 정보 :

나는 F2를 수신 할 수 있다는 것을 알고 있지만, 마우스 왼쪽 버튼으로 또는 파일 선택을 마우스 오른쪽 버튼으로 클릭하여 두 번 클릭하여 파일 이름 바꾸기 시작하는 방법도있다 이름 바꾸기. 그래서 이것은 좋은 해결책이 될 수 없습니다.

기술 정보 (필요한 경우) :

나는 전경에있는 창은 탐색기 창인지 확인합니다 GetForegroundWindow를 사용합니다. 그런 다음 전경의 탐색기 프로세스에서 누른 키를 수신하기 위해 후크를 사용합니다.

내가 SHDOCVW 및 shell32를

    Shell32.FolderItems selectedItems = ((Shell32.IShellFolderViewDual2) window.Document).SelectedItems(); 
+0

그냥 명확하게 피타을하지되었습니다 많은 사건이 있었다, 당신은 유사한 Windows 파일 미리보기 기능을 구축을 위해 노력하고 있습니다 Mac OS X의 Finder를 사용하면 파일을 선택하는 동안 공간을 눌러 미리보기 창이 팝업됩니다. –

+0

예, 정확히 수행 할 작업/ – user2974830

+0

탐색기에 이미 Alt + P로 토글 된 미리보기 창이 있습니다. 바로 가기의 동작을 수정합니까? –

답변

0

파일 탐색 향상 Windows 탐색기에서 현재 존재하는 행동을 방해하는 위험을 감수해서는 안된다. 따라서

:

Ctrl 키Ctrl 키 + 공간은 파일 이름 바꾸기 작업하는 동안 트리거되지 않습니다 플러스 응용 프로그램 것 같은 새 명령을 사용하여 + 공간

표준을 사용하여 작업은 Windows OS 사용자 명령 (약간의 향미료 사용)으로 구워졌습니다. 사람들이 '추가 정보'에 대한 자사의 천연 명령을 사용하기 때문에

  • Ctrl 키 + 공간은/"나 좀 도와"우리 dev에의에 대한 인텔리 명령입니다.

매우 특별한 파일 미리보기를 보내 주시면 감사하겠습니다.지난 20 년에이 기쁨 :(
http://support.microsoft.com/kb/983097
http://support.microsoft.com/kb/2257542

+0

헤이 @ 제레미, 나는 이것에 대해서도 생각하고 있었지만, 처음에는 공간으로는 정말로 불가능한 지 알고 싶었다. 다른 솔루션이 없다면 Ctrl + Space를 구현하는 것처럼 보입니다. 파일 미리보기가 너무 좋지 않기를 바랍니다. 끝내면 소스 코드를 게시 할 것입니다. Microsoft Office 문서 미리보기에 문제가 있습니다. 감사합니다. 감사합니다. – user2974830

+0

필자의 마지막 직장에서 Excel 미리보기로 인해 많은 문제가있었습니다. 과거에는 그렇게 해왔 던 많은 유틸리티가있었습니다. 내가 왜 뛰어 들었는지, 나는 당신의 프로젝트가 성공하기를 바란다. (나는이 주제에 대한 당신의 질문을 따를 것이다.) 이것이 당신의 첫 번째 현상금이기 때문에 답변 틱 마크 밑에있는 현상금을 확인하는 것을 잊어서는 안됩니다. 건배 –

0

는, 파일 이름 변경을 감지 FileSystemWatcher.Changed 이벤트를 확인하려면 사용하는 선택 항목을 얻으려면. 다음은 MSDN에서 가져온 예제 코드입니다. MSDN FileSystemWatcher Example

약간 수정 된 코드가 있습니다. 코드를 확인했습니다. 파일의 이름이 변경된 시점 및시기를 알려줍니다.

using System; 
using System.IO; 
using System.Security.Permissions; 

namespace FileWatcher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Run(); 
     } 

     [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] 
     public static void Run() 
     { 
      // Create a new FileSystemWatcher and set its properties. 
      FileSystemWatcher watcher = new FileSystemWatcher(); 

      watcher.Path = @"c:\temp"; //Specify the directory name where file resides 

      /* Watch for changes in LastAccess and LastWrite times, and 
       the renaming of files or directories. */ 

      watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
       | NotifyFilters.FileName | NotifyFilters.DirectoryName; 

      // Only watch text files. 
      watcher.Filter = "*.txt"; 

      // Add event handlers. 
      watcher.Changed += new FileSystemEventHandler(OnChanged); 
      watcher.Created += new FileSystemEventHandler(OnChanged); 
      watcher.Deleted += new FileSystemEventHandler(OnChanged); 
      watcher.Renamed += new RenamedEventHandler(OnRenamed); 

      // Begin watching. 
      watcher.EnableRaisingEvents = true; 

      // Wait for the user to quit the program. 
      Console.WriteLine("Press \'q\' to quit the sample."); 
      while (Console.Read() != 'q') ; 
     } 

     // Define the event handlers. 
     private static void OnChanged(object source, FileSystemEventArgs e) 
     { 
      // Specify what is done when a file is changed, created, or deleted. 
      Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType); 
     } 

     private static void OnRenamed(object source, RenamedEventArgs e) 
     { 
      // Specify what is done when a file is renamed. 
      Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath); 
     } 
    } 
} 
+0

'Renamed'이벤트가 발생 했습니까? 내가 읽는 방식은 파일이 바뀌었을 때 OP가 그것을 포획하기를 원한다는 것입니다. –

+0

AFAIK, 파일 이름이 바뀐 후에 만 ​​이름이 바뀐 이벤트가 발생합니다. 파일 이름을 바꿀 때 발생하지 않습니다. 동일하게 확인하려면 코드를 사용하십시오. – Vinkal

+0

안녕하세요, @ 코더, 시도해 주셔서 감사하지만 이름이 바뀐 이벤트는 파일 이름이 바뀐 후에 발생하므로 내 문제에는 적용되지 않습니다. – user2974830