Старый код перетаскивания больше не работает в Windows 7 - PullRequest
3 голосов
/ 11 апреля 2011

У меня есть некоторый код, который позволяет мне перетаскивать гиперссылку с веб-страницы на форму окна, и он разделяет URL и заголовок и помещает их в два разных текстовых поля.

Это работает наWindows XP нормально, но на Windows 7 больше не работает.Я не уверен, в чем заключается разница.

object data = e.Data.GetData("UniformResourceLocator");

данные всегда будут нулевыми, но когда я использую

 string[] fmts = e.Data.GetFormats();

, один из fmts всегда будет UniformResourceLocator вместе со связкойиз других, которые я никогда не могу получить какие-либо данные.Если у кого-то есть ресурсы, чтобы указать на меня, или что-то еще, я был бы очень признателен, это действительно сбивает меня с толку.

Спасибо.

ОБНОВЛЕНИЕ: добавлен код метода, который работал

  string hyperLinkUrl = null;
        string hyperLinkText = null;

            hyperLinkUrl = e.Data.GetData(typeof(string)) as string;
            // some browser deliver url and text
            // in UniformResourceLocator (Firebird)
            string[] tokens = null;
            if (hyperLinkUrl != null)
            {
               tokens = hyperLinkUrl.Split('\n');
            }
            if (tokens != null && tokens.Length > 1)
            {
                hyperLinkUrl = tokens[0];
                hyperLinkText = tokens[1];
            }
            // we have to read FILEGROUPDESCRIPTOR to get the text (IE)
            else
            {             

                System.IO.Stream ioStream =
                (System.IO.Stream)e.Data.GetData("FileGroupDescriptor");
                byte[] contents = new Byte[512];
                try
                {
                    ioStream.Read(contents, 0, 512);
                }
                catch (Exception x)
                {

                }    
                ioStream.Close();
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                //The magic number 76 is the size of that part of the
                //FILEGROUPDESCRIPTOR structure before
                // the filename starts - cribbed
                //from another usenet post.
                for (int i = 76; contents[i] != 0; i++)
                {
                    sb.Append((char)contents[i]);
                }
                if (!sb.ToString(sb.Length - 4, 4).ToLower().Equals(".url"))
                {
                    throw new Exception("filename does not end in '.url'");
                }
                hyperLinkText = sb.ToString(0, sb.Length - 4);
            }
            tbLinkTitle.Text = hyperLinkText;
            tbLinkAddress.Text = hyperLinkUrl;

1 Ответ

4 голосов
/ 12 апреля 2011

перетащите гиперссылку с веб-страницы

Эта страница не будет в веб-браузере, работающем с низкой целостностью (например, в режиме IE Protected), не так ли?Перетаскивание не работает на всех уровнях целостности.

Что произойдет, если вы используете icacls, чтобы установить низкий уровень целостности исполняемого файлатакже?Если перетаскивание начинает работать, это была проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...