如何找出哪个应用程序在我的C#表单上删除了一些内容?
现在我正在做一些疯狂的猜测,比如
if (e.Data.GetDataPresent("UniformResourceLocatorW", true)) {
// URL dropped from IExplorer
}
但我真正想要的是:
if (isDroppedFrom("iexplorer")) {
// URL dropped from IExplorer
}
我该怎么做?
答案 0 :(得分:1)
据我所知,拖放结构中没有直接信息表明原始应用程序。
请参阅* Shell Clipboard Formats(MSDN)。
如果您只是想知道它是否是Internet Explorer的丢弃,那么CFSTR_UNTRUSTEDDRAGDROP的存在就是一个线索; AFAIK,只有Internet Explorer和Web浏览器控件才会将此格式放在剪贴板上。
答案 1 :(得分:-1)
好的,对于那些感兴趣的人来说,这就是我最终要做的......
// 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");
}