zoukankan      html  css  js  c++  java
  • 扩展WebBrowser控件,使其支持拖放文件

        public partial class UserControl1 : WebBrowser
        {
            private const int WmDropfiles = 0x233;
    
            [DllImport("shell32.dll")]
            private static extern uint DragQueryFile(IntPtr hDrop, uint iFile, StringBuilder lpszFile, uint cch);
    
            [DllImport("shell32.dll")]
            private static extern void DragAcceptFiles(IntPtr hWnd, bool fAccept);
    
            protected override void OnHandleCreated(EventArgs e)
            {
                base.OnHandleCreated(e);
    
                //指示接受文件拖放操作
                if (!DesignMode)
                {
                    DragAcceptFiles(Handle, true);
                }
            }
    
            protected override void WndProc(ref Message m)
            {
                if (m.Msg == WmDropfiles)
                {
                    #region 解析消息
                    //获取拖放的文件数量
                    var count = DragQueryFile(m.WParam, 0xffffffff, null, 0);
                    //解析所有播放的文件路径
                    var filePaths = new string[count];
                    for (uint i = 0; i < count; i++)
                    {
                        var sb = new StringBuilder();
                        DragQueryFile(m.WParam, i, sb, 1024);
                        filePaths[i] = sb.ToString();
                    }
                    #endregion
    
                    //是否继续触发之后的消息处理
                    var isCancel = false;
    
                    #region 触发自定义文件拖放事件
                    if (DragFile != null)
                    {
                        var args = new DragFileEventArgs(filePaths);
                        DragFile(this, args);
                        isCancel = args.IsCancel;
                    }
                    #endregion
    
                    if (isCancel) return;
                }
                base.WndProc(ref m);
            }
    
            public event EventHandler<DragFileEventArgs> DragFile;
    
            public class DragFileEventArgs : EventArgs
            {
                private readonly string[] _filePaths;
                public bool IsCancel { get; set; }
    
                public DragFileEventArgs(string[] filePaths)
                {
                    _filePaths = filePaths;
                }
    
                public string[] FilePaths
                {
                    get { return _filePaths; }
                }
            }
        }
    

      

  • 相关阅读:
    一、ThinkPHP的介绍
    一、ThinkPHP的介绍
    perl 爬虫两个技巧
    perl 爬虫两个技巧
    perl 爬取上市公司业绩预告
    perl lwp get uft-8和gbk
    perl lwp get uft-8和gbk
    perl 爬取同花顺数据
    perl 爬取同花顺数据
    php 接口示例
  • 原文地址:https://www.cnblogs.com/beta2013/p/3522482.html
Copyright © 2011-2022 走看看