示例#1
0
 public void Close(EndCode code)
 {
     if(code != EndCode.Hidden) {
         pluginServer = null;
         shellBrowser = null;
     }
 }
示例#2
0
 public void Dispose() {
     if(shellBrowser != null) {
         Marshal.FinalReleaseComObject(shellBrowser);
         shellBrowser = null;
     }
     if(folderView != null) {
         Marshal.ReleaseComObject(folderView);
         folderView = null;
     }
 }
示例#3
0
 public void Dispose() {
     if(shellBrowser != null) {
         if(shared) {
             Marshal.ReleaseComObject(shellBrowser);
         }
         else {
             Marshal.FinalReleaseComObject(shellBrowser);
         }
         shellBrowser = null;
     }
 }
示例#4
0
        public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
            this.pluginServer = pluginServer;
            this.shellBrowser = shellBrowser;

            if(!pluginServer.TryGetLocalizedStrings(this, 3, out ResStrs)) {
                if(CultureInfo.CurrentCulture.Parent.Name == "ja")
                    ResStrs = Resource.strQTFolderButton_ja.Split(new char[] { ';' });
                else
                    ResStrs = Resource.strQTFolderButton.Split(new char[] { ';' });
            }
        }
示例#5
0
        public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
            this.pluginServer = pluginServer;
            this.shellBrowser = shellBrowser;

            if(!pluginServer.TryGetLocalizedStrings(this, 1, out ResStr)) {
                ResStr = new string[] { StringResources.ButtonNames[0] };
            }

            this.pluginServer.SelectionChanged += pluginServer_SelectionChanged;
            this.pluginServer.NavigationComplete += pluginServer_NavigationComplete;
        }
示例#6
0
        public void Close(EndCode code) {
            this.pluginServer = null;
            this.shellBrowser = null;

            if(this.button != null) {
                this.button.Dispose();
            }

            if(this.fvmw != null) {
                this.fvmw.Dispose();
            }
        }
示例#7
0
        public void Close(EndCode code) {
            pluginServer = null;
            shellBrowser = null;

            if(button != null) {
                button.Dispose();
            }

            if(fvmw != null) {
                fvmw.Dispose();
            }
        }
        public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
            this.pluginServer = pluginServer;

            if(!pluginServer.TryGetLocalizedStrings(this, RES_COUNT, out this.ResStrs)) {
                if(System.Globalization.CultureInfo.CurrentCulture.Parent.Name == "ja")
                    this.ResStrs = Resource.ResStrs_ja.Split(new char[] { ';' });
                else
                    this.ResStrs = Resource.ResStrs.Split(new char[] { ';' });
            }

            this.RestoreInitialSize();
        }
示例#9
0
        public static void FileOperation(FileOpActions action, IntPtr hwndExplr, IShellBrowser shellBrowser) {
            IntPtr hwnd = FileOps.fVista ? FindWindowEx(hwndExplr, IntPtr.Zero, new StringBuilder("ShellTabWindowClass"), null) : hwndExplr;

            if(FileOps.fVista)
                SendMessage(hwnd, WM_COMMAND, (IntPtr)action, IntPtr.Zero);
            else
                PostMessage(hwnd, WM_COMMAND, (IntPtr)action, IntPtr.Zero);

            // make selected icons transparent and refresh them immediately.
            // ( when NO-FULLROW-SELECT setting is ON, vista's explorer won't redraw items... )
            if(FileOps.fVista && action == FileOpActions.Cut && shellBrowser != null)
                FileOps.RefreshItems(shellBrowser);
        }
示例#10
0
 public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
     this.pluginServer = pluginServer;
     if(!this.pluginServer.TryGetLocalizedStrings(this, 4, out ResStrs)) {
         if(CultureInfo.CurrentCulture.Parent.Name == "ja") {
             ResStrs = Resource.str_ja.Split(new char[] { ';' });
         }
         else {
             ResStrs = Resource.str_en.Split(new char[] { ';' });
         }
     }
     this.pluginServer.RegisterMenu(this, MenuType.Tab, ResStrs[0], true);
     this.pluginServer.NavigationComplete += pluginServer_NavigationComplete;
     this.pluginServer.ExplorerStateChanged += pluginServer_ExplorerStateChanged;
 }
示例#11
0
        internal event MouseLeaveHandler MouseLeave;              // SysListView Only

        internal ListViewWrapper(IShellBrowser ShellBrowser, IntPtr ExplorerHandle) {
            this.ShellBrowser = ShellBrowser;
            this.ExplorerHandle = ExplorerHandle;
            if(QTUtility.IsVista) {
                hwndEnumResult = IntPtr.Zero;
                PInvoke.EnumChildWindows(ExplorerHandle, new EnumWndProc(this.CallbackEnumChildProc_Container), IntPtr.Zero);
                ShellContainer = hwndEnumResult;
            }
            else {
                ShellContainer = ExplorerHandle;
            }
            if(ShellContainer != IntPtr.Zero) {
                ContainerController = new NativeWindowController(ShellContainer);
                ContainerController.MessageCaptured += new NativeWindowController.MessageEventHandler(ContainerController_MessageCaptured);
            }
            Initialize();
        }
示例#12
0
        public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
            // called when this plugin class instantialized.

            this.pluginServer = pluginServer;
            this.shellBrowser = shellBrowser;


            // attached events are automatically detached when plugin closes.
            this.pluginServer.TabChanged += pluginServer_TabChanged;
            this.pluginServer.TabAdded += pluginServer_TabAdded;
            this.pluginServer.TabRemoved += pluginServer_TabRemoved;
            this.pluginServer.NavigationComplete += pluginServer_NavigationComplete;
            this.pluginServer.SettingsChanged += pluginServer_SettingsChanged;
            this.pluginServer.SelectionChanged += pluginServer_SelectionChanged;

            // registering to QTTabBar menu.
            this.pluginServer.RegisterMenu(this, MenuType.Both, "SampleSplitButton Menu test", true);
        }
示例#13
0
        public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
            this.pluginServer = pluginServer;
            this.shellBrowser = shellBrowser;

            if(!this.pluginServer.TryGetLocalizedStrings(this, 7, out this.ResStrs)) {
                // if localized strings not found, falls back to default strings in assembly resource of this dll.

                // this plugin has 2 language resources in assemly, but usually there's no need to do like this.
                // it only has to have a resource of your own language.

                if(System.Globalization.CultureInfo.CurrentCulture.Parent.Name == "ja")
                    this.ResStrs = Resource.viewModes_Ja.Split(new char[] { ';' });
                else
                    this.ResStrs = Resource.viewModes.Split(new char[] { ';' });
            }

            this.pluginServer.NavigationComplete += new PluginEventHandler(pluginServer_NavigationComplete);
        }
示例#14
0
        int IShellView.CreateViewWindow([In, MarshalAs(UnmanagedType.Interface)] IShellView psvPrevious,
             [In] ref FOLDERSETTINGS pfs, [In, MarshalAs(UnmanagedType.Interface)] IShellBrowser psb, [In]  ref RECT prcView, [In, Out] ref IntPtr phWnd)
        {
            //  Store the shell browser.
            shellBrowser = psb;

            //  Resize the custom view.
            customView.Bounds = new Rectangle(prcView.left, prcView.top, prcView.Width(), prcView.Height());
            customView.Visible = true;

            //  Set the handle to the handle of the custom view.
            phWnd = customView.Handle;

            //  Set the custom view to be a child of the shell browser.
            IntPtr parentWindowHandle;
            psb.GetWindow(out parentWindowHandle);
            User32.SetParent(phWnd, parentWindowHandle);

            //  TODO: finish this function off.
            return WinError.S_OK;
        }
示例#15
0
        private static void RefreshItems(IShellBrowser shellBrowser) {
            IShellView shellView = null;
            IShellFolderView shellFolderView = null;
            try {
                if(0 == shellBrowser.QueryActiveShellView(out shellView)) {
                    shellFolderView = (IShellFolderView)shellView;

                    // no need this?
                    shellFolderView.SetClipboard(true);

                    IntPtr p;
                    int items;
                    int ui;
                    if(0 == shellFolderView.GetSelectedObjects(out p, out items)) {
                        if(p != IntPtr.Zero) {
                            if(items > 0) {
                                IntPtr[] pIDLs = new IntPtr[items];
                                Marshal.Copy(p, pIDLs, 0, items);

                                for(int i = 0; i < items; i++) {
                                    shellFolderView.RefreshObject(pIDLs[i], out ui);
                                }
                            }
                            LocalFree(p);
                        }
                    }
                }
            }
            catch {
            }
            finally {
                if(shellView != null)
                    Marshal.ReleaseComObject(shellView);

                if(shellFolderView != null)
                    Marshal.ReleaseComObject(shellFolderView);
            }
        }
示例#16
0
 public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser)
 {
     this.pluginServer = pluginServer;
     MigemoLoader.ReadSettings();
 }
示例#17
0
        public static void InitShellBrowserHook(IShellBrowser shellBrowser) {
            lock(typeof(HookLibManager)) {
                if(fShellBrowserIsHooked || hHookLib == IntPtr.Zero) return;
                IntPtr pFunc = PInvoke.GetProcAddress(hHookLib, "InitShellBrowserHook");
                if(pFunc == IntPtr.Zero) return;
                InitShellBrowserHookDelegate initShellBrowserHook = (InitShellBrowserHookDelegate)
                        Marshal.GetDelegateForFunctionPointer(pFunc, typeof(InitShellBrowserHookDelegate));
                IntPtr pShellBrowser = Marshal.GetComInterfaceForObject(shellBrowser, typeof(IShellBrowser));
                if(pShellBrowser == IntPtr.Zero) return;
                int retcode = -1;
                try {
                    retcode = initShellBrowserHook(pShellBrowser);
                }
                catch(Exception e) {
                    QTUtility2.MakeErrorLog(e, "");
                }
                finally {
                    Marshal.Release(pShellBrowser);
                }
                if(retcode != 0) {
                    QTUtility2.MakeErrorLog(null, "InitShellBrowserHook failed: " + retcode);

                    // TODO: Localize this
                    MessageForm.Show(IntPtr.Zero,
                            "Error:  Unable to initialize QTTabBar hook library.  " +
                            "Some features might not be functional.  " +
                            "You may need to reinstall the applicaiton.",
                            "Error", MessageBoxIcon.Hand, 30000, false, true);
                }
                else {
                    fShellBrowserIsHooked = true;
                }
            }
        }
示例#18
0
 public void Close(EndCode code) {
     this.pluginServer = null;
     this.shellBrowser = null;
 }
示例#19
0
 private bool GetFolderView() {
     IntPtr pUnk = PInvoke.SendMessage(GetProgmanHWnd(), 0x407, IntPtr.Zero, IntPtr.Zero);
     if(pUnk != IntPtr.Zero) {
         try {
             IShellView view;
             this.shellBrowser = (IShellBrowser)Marshal.GetObjectForIUnknown(pUnk);
             if(this.shellBrowser.QueryActiveShellView(out view) == 0) {
                 this.folderView = view as IFolderView;
                 if(this.folderView != null) {
                     return true;
                 }
             }
         }
         catch {
         }
         finally {
             Marshal.Release(pUnk);
         }
     }
     return false;
 }
示例#20
0
 public ShellBrowserEx(IShellBrowser shellBrowser)
 {
     this.shellBrowser = shellBrowser;
     OnNavigateComplete();
 }
 public ShellBrowserEx(IShellBrowser shellBrowser)
 {
     this.shellBrowser = shellBrowser;
     OnNavigateComplete();
 }
示例#22
0
 public void Close(EndCode code) {
     pluginServer = null;
     shellBrowser = null;
 }
示例#23
0
 public static IntPtr ShellGetPath(IShellBrowser shellBrowser) {
     IShellView ppshv = null;
     IPersistFolder2 ppv = null;
     try {
         if(shellBrowser.QueryActiveShellView(out ppshv) == 0) {
             Guid riid = ExplorerGUIDs.IID_IPersistFolder2;
             IFolderView view2 = (IFolderView)ppshv;
             if(view2.GetFolder(ref riid, out ppv) == 0) {
                 IntPtr ptr;
                 ppv.GetCurFolder(out ptr);
                 return ptr;
             }
         }
     }
     catch {
     }
     finally {
         if(ppshv != null) {
             Marshal.ReleaseComObject(ppshv);
         }
         if(ppv != null) {
             Marshal.ReleaseComObject(ppv);
         }
     }
     return IntPtr.Zero;
 }
示例#24
0
 public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
     this.pluginServer = pluginServer;
     this.shellBrowser = shellBrowser;
 }
示例#25
0
 public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser)
 {
     this.pluginServer = pluginServer;
     this.shellBrowser = shellBrowser;
 }
示例#26
0
 public ShellBrowserEx(IShellBrowser shellBrowser, bool shared = false)
 {
     this.shellBrowser = shellBrowser;
     this.shared       = shared;
 }
示例#27
0
 public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
 }
示例#28
0
 /** do not init shell brownser hook. */
 public static void InitShellBrowserHook(IShellBrowser shellBrowser)
 {
 }
        public static IShellView QueryActiveShellView(this IShellBrowser shellBrowser)
        {
            shellBrowser.QueryActiveShellView(out var ppshv);

            return(ppshv);
        }
示例#30
0
 public override void CloseDW(uint dwReserved) {
     if(iContextMenu2 != null) {
         Marshal.ReleaseComObject(iContextMenu2);
         iContextMenu2 = null;
     }
     if(this.folderView != null) {
         Marshal.ReleaseComObject(this.folderView);
         this.folderView = null;
     }
     if(this.shellBrowser != null) {
         Marshal.ReleaseComObject(this.shellBrowser);
         this.shellBrowser = null;
     }
     DisposeInvoker method = new DisposeInvoker(this.InvokeDispose);
     if(this.thumbnailTooltip != null) {
         this.thumbnailTooltip.Invoke(method, new object[] { this.thumbnailTooltip });
         this.thumbnailTooltip = null;
     }
     if(this.subDirTip != null) {
         this.subDirTip.Invoke(method, new object[] { this.subDirTip });
         this.subDirTip = null;
     }
     if(this.hashForm != null) {
         this.hashForm.Invoke(method, new object[] { this.hashForm });
         this.hashForm = null;
     }
     if(this.hHook_MsgDesktop != IntPtr.Zero) {
         PInvoke.UnhookWindowsHookEx(this.hHook_MsgDesktop);
         this.hHook_MsgDesktop = IntPtr.Zero;
     }
     if(this.hHook_MsgShell_TrayWnd != IntPtr.Zero) {
         PInvoke.UnhookWindowsHookEx(this.hHook_MsgShell_TrayWnd);
         this.hHook_MsgShell_TrayWnd = IntPtr.Zero;
     }
     if(this.hHook_KeyDesktop != IntPtr.Zero) {
         PInvoke.UnhookWindowsHookEx(this.hHook_KeyDesktop);
         this.hHook_KeyDesktop = IntPtr.Zero;
     }
     if(this.shellViewController != null) {
         this.shellViewController.ReleaseHandle();
         this.shellViewController = null;
     }
     base.CloseDW(dwReserved);
 }
示例#31
0
        int IServiceProvider.QueryService(ref Guid guidService, ref Guid riid, out IShellBrowser ppvObject)
        {
            var shellBrowserGuid = typeof (IShellBrowser).GUID;

            /*if (riid == Shell32.IID_IShellBrowser)
            {
                ppvObject = this;
                return WinError.S_OK;
            }*/

            ppvObject = null;
            return WinError.E_NOINTERFACE;
        }
示例#32
0
 public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
     this.pluginServer = pluginServer;
     MigemoLoader.ReadSettings();
 }
示例#33
0
        /// <summary>
        /// Open folder and select an item.
        /// </summary>
        /// <remarks>
        /// SHParseDisplayName will not always find the correct folder. If the user has a folder open that is rooted in their user folder (e.g. the desktop, Dropbox/Mega/Nextcloud folder),
        /// this won't match the folder reference returned by SHParseDisplayName if given the actual path of the same folder. This will result in opening a duplicate folder.
        /// So instead, we iterate through open folder windows for a path match first, then use the old method if one is not found.
        /// </remarks>
        /// <param name="filePath">Full path to a file to highlight in Windows Explorer</param>
        public static void OpenFolderAndSelectItem(string filePath)
        {
            var  folderPath = Path.GetDirectoryName(filePath);
            bool opened     = false;

            var shellWindowsType = Type.GetTypeFromCLSID(SID_ShellWindows);
            var shellWindows     = (dynamic)Activator.CreateInstance(shellWindowsType);

            try {
                foreach (IServiceProvider sp in shellWindows)
                {
                    var pidl       = IntPtr.Zero;
                    var nativeFile = IntPtr.Zero;

                    try {
                        sp.QueryService(SID_STopLevelBrowser, typeof(IShellBrowser).GUID, out object sb);
                        IShellBrowser shellBrowser = (IShellBrowser)sb;

                        shellBrowser.QueryActiveShellView(out object sv);
                        IFolderView fv = sv as IFolderView;

                        if (fv != null)
                        {
                            // only folder implementation support this (IE windows do not for example)
                            fv.GetFolder(typeof(IPersistFolder2).GUID, out object pf);
                            IPersistFolder2 persistFolder = (IPersistFolder2)pf;

                            // get current folder pidl
                            persistFolder.GetCurFolder(out pidl);

                            var path = new StringBuilder(1024);
                            if (SHGetPathFromIDList(pidl, path))
                            {
                                if (string.Equals(path.ToString(), folderPath, StringComparison.InvariantCultureIgnoreCase))
                                {
                                    SHParseDisplayName(Path.Combine(folderPath, filePath), IntPtr.Zero, out nativeFile, 0, out _);

                                    IntPtr[] fileArray;
                                    if (nativeFile == IntPtr.Zero)
                                    {
                                        // Open the folder without the file selected if we can't find the file
                                        fileArray = new IntPtr[0];
                                    }
                                    else
                                    {
                                        fileArray = new IntPtr[] { nativeFile };
                                    }

                                    SHOpenFolderAndSelectItems(pidl, (uint)fileArray.Length, fileArray, 0);
                                    opened = true;

                                    break;
                                }
                            }
                        }
                    }
                    finally {
                        if (nativeFile != IntPtr.Zero)
                        {
                            Marshal.FreeCoTaskMem(nativeFile);
                        }

                        if (pidl != IntPtr.Zero)
                        {
                            Marshal.FreeCoTaskMem(pidl);
                        }

                        Marshal.ReleaseComObject(sp);
                    }
                }
            }
            finally {
                Marshal.FinalReleaseComObject(shellWindows);
            }

            if (!opened)
            {
                IntPtr nativeFolder;
                uint   psfgaoOut;
                SHParseDisplayName(folderPath, IntPtr.Zero, out nativeFolder, 0, out psfgaoOut);

                if (nativeFolder == IntPtr.Zero)
                {
                    // Log error, can't find folder
                    return;
                }

                IntPtr nativeFile;
                SHParseDisplayName(Path.Combine(folderPath, filePath), IntPtr.Zero, out nativeFile, 0, out psfgaoOut);

                IntPtr[] fileArray;
                if (nativeFile == IntPtr.Zero)
                {
                    // Open the folder without the file selected if we can't find the file
                    fileArray = new IntPtr[0];
                }
                else
                {
                    fileArray = new IntPtr[] { nativeFile };
                }

                SHOpenFolderAndSelectItems(nativeFolder, (uint)fileArray.Length, fileArray, 0);

                Marshal.FreeCoTaskMem(nativeFolder);
                if (nativeFile != IntPtr.Zero)
                {
                    Marshal.FreeCoTaskMem(nativeFile);
                }
            }
        }
示例#34
0
        public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
            this.pluginServer = pluginServer;

            if(!pluginServer.TryGetLocalizedStrings(this, 1, out this.ResStr)) {
                this.ResStr = new string[] { StringResources.ButtonNames[7] };
            }

            this.pluginServer.SelectionChanged += new PluginEventHandler(pluginServer_SelectionChanged);
            this.pluginServer.NavigationComplete += new PluginEventHandler(pluginServer_NavigationComplete);
        }
示例#35
0
 public void Close(EndCode code)
 {
     pluginServer = null;
     shellBrowser = null;
 }
示例#36
0
 protected override void OnExplorerAttached() {
     this.ExplorerHandle = (IntPtr)base.Explorer.HWND;
     if(QTUtility.CheckConfig(Settings.NoWindowResizing)) {
         PInvoke.SetWindowLongPtr(this.ExplorerHandle, -16, PInvoke.Ptr_OP_AND(PInvoke.GetWindowLongPtr(this.ExplorerHandle, -16), 0xfffbffff));
     }
     try {
         object obj2;
         object obj3;
         _IServiceProvider bandObjectSite = (_IServiceProvider)base.BandObjectSite;
         Guid guid = ExplorerGUIDs.IID_IShellBrowser;
         Guid riid = ExplorerGUIDs.IID_IUnknown;
         bandObjectSite.QueryService(ref guid, ref riid, out obj2);
         this.ShellBrowser = (IShellBrowser)obj2;
         Guid guid3 = ExplorerGUIDs.IID_ITravelLogStg;
         Guid guid4 = ExplorerGUIDs.IID_ITravelLogStg;
         bandObjectSite.QueryService(ref guid3, ref guid4, out obj3);
         this.TravelLog = (ITravelLogStg)obj3;
     }
     catch(COMException exception) {
         QTUtility2.MakeErrorLog(exception, null);
     }
     base.Explorer.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(this.Explorer_BeforeNavigate2);
     base.Explorer.NavigateComplete2 += new DWebBrowserEvents2_NavigateComplete2EventHandler(this.Explorer_NavigateComplete2);
     base.Explorer.DownloadBegin += new SHDocVw.DWebBrowserEvents2_DownloadBeginEventHandler(this.Explorer_DownloadBegin);
 }
示例#37
0
 public override void CloseDW(uint dwReserved) {
     try {
         if(this.thumbnailTooltip != null) {
             this.thumbnailTooltip.Dispose();
             this.thumbnailTooltip = null;
         }
         if(this.subDirTip != null) {
             this.subDirTip.Dispose();
             this.subDirTip = null;
         }
         if(this.subDirTip_Tab != null) {
             this.subDirTip_Tab.Dispose();
             this.subDirTip_Tab = null;
         }
         if(this.IsShown) {
             if(this.pluginManager != null) {
                 this.pluginManager.Close(false);
                 this.pluginManager = null;
             }
             if(this.hHook_Key != IntPtr.Zero) {
                 PInvoke.UnhookWindowsHookEx(this.hHook_Key);
                 this.hHook_Key = IntPtr.Zero;
             }
             if(this.hHook_Mouse != IntPtr.Zero) {
                 PInvoke.UnhookWindowsHookEx(this.hHook_Mouse);
                 this.hHook_Mouse = IntPtr.Zero;
             }
             if(this.hHook_Msg != IntPtr.Zero) {
                 PInvoke.UnhookWindowsHookEx(this.hHook_Msg);
                 this.hHook_Msg = IntPtr.Zero;
             }
             if(this.explorerController != null) {
                 this.explorerController.ReleaseHandle();
                 this.explorerController = null;
             }
             if(this.shellViewController != null) {
                 this.shellViewController.ReleaseHandle();
                 this.shellViewController = null;
             }
             if(this.rebarController != null) {
                 this.rebarController.ReleaseHandle();
                 this.rebarController = null;
             }
             if(QTUtility.IsVista && (this.travelBtnController != null)) {
                 this.travelBtnController.ReleaseHandle();
                 this.travelBtnController = null;
             }
             if(dicNotifyIcon != null) {
                 dicNotifyIcon.Remove(this.ExplorerHandle);
             }
             if((hwndNotifyIconParent == this.ExplorerHandle) && (notifyIcon != null)) {
                 notifyIcon.Dispose();
                 notifyIcon = null;
                 contextMenuNotifyIcon.Dispose();
                 contextMenuNotifyIcon = null;
                 hwndNotifyIconParent = IntPtr.Zero;
                 if(dicNotifyIcon.Count > 0) {
                     foreach(IntPtr ptr in dicNotifyIcon.Keys) {
                         IntPtr tabBarHandle = QTUtility.instanceManager.GetTabBarHandle(ptr);
                         if(1 == ((int)QTUtility2.SendCOPYDATASTRUCT(tabBarHandle, (IntPtr)0x30, "createNI", IntPtr.Zero))) {
                             break;
                         }
                     }
                 }
             }
             using(RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Software\Quizo\QTTabBar")) {
                 if(!QTUtility.CheckConfig(Settings.NoHistory)) {
                     foreach(QTabItem item in this.tabControl1.TabPages) {
                         AddToHistory(item);
                     }
                     QTUtility.SaveRecentlyClosed(key);
                 }
                 if(!QTUtility.CheckConfig(Settings.NoRecentFiles) && QTUtility.CheckConfig(Settings.AllRecentFiles)) {
                     QTUtility.SaveRecentFiles(key);
                 }
                 List<string> list = new List<string>();
                 foreach(QTabItem item2 in this.tabControl1.TabPages) {
                     if(item2.TabLocked) {
                         list.Add(item2.CurrentPath);
                     }
                 }
                 QTUtility2.WriteRegBinary<string>(list.ToArray(), "TabsLocked", key);
                 string str = string.Empty;
                 foreach(string str2 in QTUtility.StartUpGroupList) {
                     str = str + str2 + ";";
                 }
                 str = str.TrimEnd(QTUtility.SEPARATOR_CHAR);
                 key.SetValue("StartUpGroups", str);
                 if(QTUtility.instanceManager.RemoveInstance(this.ExplorerHandle, this)) {
                     QTUtility.instanceManager.NextInstanceExists();
                     QTUtility2.WriteRegHandle("Handle", key, QTUtility.instanceManager.CurrentHandle);
                 }
                 if(QTUtility.CheckConfig(Settings.SaveTransparency)) {
                     if(0x80000 != ((int)PInvoke.Ptr_OP_AND(PInvoke.GetWindowLongPtr(this.ExplorerHandle, -20), 0x80000))) {
                         QTUtility.WindowAlpha = 0xff;
                     }
                     else {
                         byte num;
                         int num2;
                         int num3;
                         if(PInvoke.GetLayeredWindowAttributes(this.ExplorerHandle, out num2, out num, out num3)) {
                             QTUtility.WindowAlpha = num;
                         }
                         else {
                             QTUtility.WindowAlpha = 0xff;
                         }
                     }
                     key.SetValue("WindowAlpha", QTUtility.WindowAlpha);
                 }
                 IDLWrapper.SaveCache(key);
             }
             if((md5Form != null) && !md5Form.InvokeRequired) {
                 md5Form.SaveMD5FormStat();
                 md5Form.Dispose();
                 md5Form = null;
             }
             this.Cursor = Cursors.Default;
             if((this.curTabDrag != null) && (this.curTabDrag != Cursors.Default)) {
                 PInvoke.DestroyIcon(this.curTabDrag.Handle);
                 GC.SuppressFinalize(this.curTabDrag);
                 this.curTabDrag = null;
             }
             if((this.curTabCloning != null) && (this.curTabCloning != Cursors.Default)) {
                 PInvoke.DestroyIcon(this.curTabCloning.Handle);
                 GC.SuppressFinalize(this.curTabCloning);
                 this.curTabCloning = null;
             }
             if(this.dropTargetWrapper != null) {
                 this.dropTargetWrapper.Dispose();
                 this.dropTargetWrapper = null;
             }
             if((optionsDialog != null) && this.fOptionDialogCreated) {
                 this.fOptionDialogCreated = false;
                 try {
                     optionsDialog.Invoke(new MethodInvoker(this.odCallback_Close));
                 }
                 catch(Exception exception) {
                     QTUtility2.MakeErrorLog(exception, "optionDialogDisposing");
                 }
             }
             if(this.tabSwitcher != null) {
                 this.tabSwitcher.Dispose();
                 this.tabSwitcher = null;
             }
         }
         QTUtility.InstancesCount--;
         if(this.TravelLog != null) {
             Marshal.FinalReleaseComObject(this.TravelLog);
             this.TravelLog = null;
         }
         if(this.iContextMenu2 != null) {
             Marshal.FinalReleaseComObject(this.iContextMenu2);
             this.iContextMenu2 = null;
         }
         if(this.ShellBrowser != null) {
             Marshal.FinalReleaseComObject(this.ShellBrowser);
             this.ShellBrowser = null;
         }
         foreach(ITravelLogEntry entry in this.LogEntryDic.Values) {
             if(entry != null) {
                 Marshal.FinalReleaseComObject(entry);
             }
         }
         this.LogEntryDic.Clear();
         if(this.bmpRebar != null) {
             this.bmpRebar.Dispose();
             this.bmpRebar = null;
         }
         if(this.textureBrushRebar != null) {
             this.textureBrushRebar.Dispose();
             this.textureBrushRebar = null;
         }
         base.fFinalRelease = true;
         base.CloseDW(dwReserved);
     }
     catch(Exception exception2) {
         QTUtility2.MakeErrorLog(exception2, "tabbar closing");
     }
 }
示例#38
0
        public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser) {
            this.pluginServer = pluginServer;

            if(!pluginServer.TryGetLocalizedStrings(this, 1, out ResStr)) {
                ResStr = new string[] { StringResources.ButtonNames[8] };
            }
        }
示例#39
0
 public void Open(IPluginServer pluginServer, IShellBrowser shellBrowser)
 {
 }