2009-07-21 5 views
3

C# 폼에서 어떤 응용 프로그램이 일부 응용 프로그램을 삭제했는지 어떻게 알 수 있습니까?끌어서 놓기를 생성 한 응용 프로그램의 이름을 얻는 방법

는 지금은

if (e.Data.GetDataPresent("UniformResourceLocatorW", true)) { 
    // URL dropped from IExplorer 
} 

같은 일부 야생 추측을하고 있어요하지만 난 정말 무엇을 찾고 있어요입니다 같은 :

if (isDroppedFrom("iexplorer")) { 
    // URL dropped from IExplorer 
} 

내가 어떻게 할 수 있습니까?

+0

좋은 사람이 반대를 알고 있다면 질문, 또한, (방법에서 드래그 된 항목의 드롭 위치를 얻을 수 있습니다 만든 응용 프로그램)도 공유 할 수 있습니다 :-) – ThePower

+1

그 반대의 경우 사용자가 마우스를 놓은 위치를 감지 한 다음 윈도우 핸들 대 PID 로직을 사용하여이를 파악할 수있을 것 같습니다 . 해킹이 될 수도 있지만 문제가 더 쉽습니다. – EricLaw

+0

html 항목의 경우 SourceURL "item"에서 찾을 수 있습니다. String pastedHtml = (string) e.Data.GetData (DataFormats.Html); 버전 : 1.0 StartHTML : 000000182 EndHTML : 000008325 StartFragment : 000008144 EndFragment : 000008205 StartSelection : 000008144 EndSelection : 000008205 SourceURL : HTTP :! //www.msn.com/ Renaud

답변

-1

OK ...

// Firefox // 
if (e.Data.GetDataPresent("text/x-moz-url", true)) { 
    HandleFirefoxUrl(e); 
} else if (e.Data.GetDataPresent("text/_moz_htmlcontext", true)) { 
    HandleFirefoxSnippet(e); 

// Internet Explorer // 
} else if (e.Data.GetDataPresent("UntrustedDragDrop", false)) { 
    HandleIELink(e); 
} else if (e.Data.GetDataPresent("UniformResourceLocatorW", false)) { 
    HandleIEPage(e); 

} else if (e.Data.GetDataPresent(DataFormats.FileDrop, true)) { //FILES 
    Array droppedFiles = (Array)e.Data.GetData(DataFormats.FileDrop); 
    HandleFiles(droppedFiles); 

} else if (e.Data.GetDataPresent(DataFormats.Bitmap, true)) { // BITMAP 
    Bitmap image = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap); 
    HandleBitmap(image); 

} else if (e.Data.GetDataPresent(DataFormats.Html, true)) { // HTML 
    String pastedHtml = (string)e.Data.GetData(DataFormats.Html); 
    HandleHtml(pastedHtml); 

} else if (e.Data.GetDataPresent(DataFormats.CommaSeparatedValue, true)) { // CSV 
    MemoryStream memstr = (MemoryStream)e.Data.GetData("Csv"); 
    StreamReader streamreader = new StreamReader(memstr); 
    String pastedCSV = streamreader.ReadToEnd(); 
    HandleCSV(pastedCSV); 

    // } else if (e.Data.GetDataPresent(DataFormats.Tiff, true)) { 
    // } else if (e.Data.GetDataPresent(DataFormats.WaveAudio, true)) { 

} else if (e.Data.GetDataPresent(DataFormats.Text, true)) { //TEXT 
    String droppedText = e.Data.GetData(DataFormats.Text).ToString(); 
    HandleText(droppedText); 

[else if .....] 

} else { // UNKNOWN 
    Debug.WriteLine("unknown dropped format"); 
} 
1

내가 아는 한, 원래 응용 프로그램을 나타내는 끌어서 놓기 구조에는 직접 정보가 없습니다.

* Shell Clipboard Formats (MSDN)을 참조하십시오.

Internet   탐색기의 드롭 인 지 알아내는 데 관심이있는 경우 CFSTR_UNTRUSTEDDRAGDROP가 있다는 사실이 단서입니다. AFAIK, 인터넷 전용   탐색기 및 웹 브라우저 컨트롤은 클립 보드에이 형식을 적용합니다. 이것이 내가 관심이있는 사람들을 위해, 일을 결국 무엇

+0

에릭에게 감사합니다. 여전히, 나는 모든 주요 애플 리케이션 유형 (즉, 단어, 엑셀, 이메일, ...) btw를 차별화해야합니다. 그래서 지금은 UniformResourceLocatorW와 같은 힌트를 스니핑하여 자신의 길을 만들고 있습니다. 그러나 좀 더 일반적이고 견고한 접근법을 기대하고 있습니다 ... – Renaud

관련 문제