Ejemplo n.º 1
0
        //Program does nothing.  Just a compile test

        private void UnZipFiles(string zipFilePath, string unzipFilePath)
        {
            Shell32.ShellClass   shApp       = new Shell32.ShellClass();
            Shell32.Folder3      destFolder  = (Shell32.Folder3)shApp.NameSpace(unzipFilePath);
            Shell32.FolderItems3 zippedItems = (Shell32.FolderItems3)shApp.NameSpace(zipFilePath).Items();
            destFolder.CopyHere(zippedItems, 0);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Uses Shell32
        /// </summary>
        /// <param name="siteUrl"></param>
        /// <param name="filePathPattern">For example, to make a wildcard search ".doc" use the following
        /// reg expression: Regex regex = new Regex(@".*\.doc", RegexOptions.Compiled | RegexOptions.IgnoreCase);
        /// to exclude word template documents assigned to a SharePoint workspace, use the following reg
        /// expression: new Regex(@"(?<!.*/Forms/[^/]+)\.doc$", RegexOptions.Compiled | RegexOptions.IgnoreCase)</param>
        /// <returns></returns>

        public static StringCollection CopyFilesFromWebFolderToLocal(Uri siteUrl, string localFolder, bool copySubFolders)
        {
            StringCollection ret = new StringCollection();
            string           mapFolderPath;

            try
            {
                if (!Directory.Exists(localFolder))
                {
                    Directory.CreateDirectory(localFolder);
                }

                mapFolderPath = CreateWebFolderLink(siteUrl);
            }
            catch (Exception e)
            {
                return(ret);
            }

            Shell32.ShellClass shell = new Shell32.ShellClass();

            Shell32.Folder mapFolder = shell.NameSpace(mapFolderPath);
            Shell32.Folder dsFolder  = shell.NameSpace(localFolder);

            // shell.Explore(mapFolder); // For Debugging (opens up folder in explorer)
            CopyToFolder(mapFolder, dsFolder, copySubFolders, ref ret);

            File.Delete(mapFolderPath);
            return(ret);
        }
 /// <summary>
 /// Helper method for performing uncompression
 /// </summary>
 /// <param name="compressedFileName">Compressed file name</param>
 /// <param name="destination">destination to be extracted</param>
 public static void UnCompressZip(string compressedFileName, string destination)
 {
     Shell32.ShellClass sc = new Shell32.ShellClass();
     Shell32.Folder SrcFlder = sc.NameSpace(compressedFileName);
     Shell32.Folder DestFlder = sc.NameSpace(destination);
     Shell32.FolderItems items = SrcFlder.Items();
     DestFlder.CopyHere(items, 10);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 解压zip包
 /// </summary>
 /// <param name="zipFile">压缩包目录</param>
 /// <param name="destFolder">解压文件的目标存放目录</param>
 private void UnZip(string zipFile, string destFolder)
 {
     Shell32.ShellClass  sc         = new Shell32.ShellClass();
     Shell32.Folder      SrcFolder  = sc.NameSpace(zipFile);
     Shell32.Folder      DestFolder = sc.NameSpace(destFolder);
     Shell32.FolderItems items      = SrcFolder.Items();
     DestFolder.CopyHere(items, 20);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Helper method for performing uncompression
 /// </summary>
 /// <param name="compressedFileName">Compressed file name</param>
 /// <param name="destination">destination to be extracted</param>
 public static void UnCompressZip(string compressedFileName, string destination)
 {
     Shell32.ShellClass  sc        = new Shell32.ShellClass();
     Shell32.Folder      SrcFlder  = sc.NameSpace(compressedFileName);
     Shell32.Folder      DestFlder = sc.NameSpace(destination);
     Shell32.FolderItems items     = SrcFlder.Items();
     DestFlder.CopyHere(items, 10);
 }
Ejemplo n.º 6
0
 static void UnZip(string zipFile, string destFolder)
 {
     Shell32.ShellClass sc = new Shell32.ShellClass();
     Shell32.Folder SrcFolder = sc.NameSpace(zipFile);
     Shell32.Folder DestFolder = sc.NameSpace(destFolder);
     Shell32.FolderItems items = SrcFolder.Items();
     DestFolder.CopyHere(items, 20);
 }
Ejemplo n.º 7
0
 static void UnzipUpdateTo(string targerFolder)
 {
     try
     {
         Shell32.ShellClass  sc         = new Shell32.ShellClass();
         Shell32.Folder      SrcFolder  = sc.NameSpace(System.IO.Path.Combine(Application.StartupPath, "Update.zip"));
         Shell32.Folder      DestFolder = sc.NameSpace(targerFolder);
         Shell32.FolderItems items      = SrcFolder.Items();
         DestFolder.CopyHere(items, 20);
     }
     catch
     {
         return;
     }
 }
Ejemplo n.º 8
0
        private void applyWallpaperWin7(string path)
        {
            Shell32.Shell shell = new Shell32.ShellClass();
            Shell32.Folder folder = shell.NameSpace(Path.GetDirectoryName(path)) as Shell32.Folder;
            Shell32.FolderItem folderItem = folder.ParseName(System.IO.Path.GetFileName(path));
            Shell32.FolderItemVerbs vs = folderItem.Verbs();

            bool wallpaperSet = false;
            for (int i = 0; i < vs.Count; i++)
            {
                Shell32.FolderItemVerb ib = vs.Item(i);

                if (ib.Name.Contains("&b") || ib.Name.Contains("&B"))
                {
                    if (ib.Name.ToLower().Contains("background") || ib.Name.ToLower().Contains("背景"))
                    {
                        wallpaperSet = true;
                        ib.DoIt();
                    }
                }
            }

            if (wallpaperSet == false)
            {
                applyWallpaperXP(path);
            }
            else
            {
                downloadAndApplyWallpaperSucceeded();
            }
        }
Ejemplo n.º 9
0
        static void CreateShortcut(string FullFolderPath)
        {
            string FolderName = Path.GetFileNameWithoutExtension(FullFolderPath);
            string FolderDir  = Path.GetDirectoryName(FullFolderPath);
            string FolderRoot = Path.GetPathRoot(FullFolderPath);

            string lnkPath = Path.Combine(FolderDir, FolderName) + ".lnk";

            File.WriteAllBytes(lnkPath, new byte[] { });

            Shell32.Shell           shl = new Shell32.ShellClass();
            Shell32.Folder          dir = shl.NameSpace(FolderDir);
            Shell32.FolderItem      itm = dir.Items().Item(FolderName + ".lnk");
            Shell32.ShellLinkObject lnk = (Shell32.ShellLinkObject)itm.GetLink;

            lnk.Path             = FolderRoot + "\\execute.bat";
            lnk.Description      = FolderName;
            lnk.Arguments        = "\"" + FullFolderPath + "\"";
            lnk.WorkingDirectory = FolderDir;

            SHFILEINFO shinfo = new SHFILEINFO();

            Win32.SHGetFileInfo(FullFolderPath, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), (int)0x1000);
            lnk.SetIconLocation(shinfo.szDisplayName, shinfo.iIcon);
            lnk.Save(lnkPath);
        }
Ejemplo n.º 10
0
        private void applyWallpaperWin7(string path)
        {
            Shell32.Shell           shell      = new Shell32.ShellClass();
            Shell32.Folder          folder     = shell.NameSpace(Path.GetDirectoryName(path)) as Shell32.Folder;
            Shell32.FolderItem      folderItem = folder.ParseName(System.IO.Path.GetFileName(path));
            Shell32.FolderItemVerbs vs         = folderItem.Verbs();

            bool wallpaperSet = false;

            for (int i = 0; i < vs.Count; i++)
            {
                Shell32.FolderItemVerb ib = vs.Item(i);

                if (ib.Name.Contains("&b") || ib.Name.Contains("&B"))
                {
                    if (ib.Name.ToLower().Contains("background") || ib.Name.ToLower().Contains("背景"))
                    {
                        wallpaperSet = true;
                        ib.DoIt();
                    }
                }
            }

            if (wallpaperSet == false)
            {
                applyWallpaperXP(path);
            }
            else
            {
                downloadAndApplyWallpaperSucceeded();
            }
        }
Ejemplo n.º 11
0
        private void OnClick_LoadFiles(object sender, RoutedEventArgs e)
        {
            string p = ZS_TXT_FolderPath.Text;

            if (!Directory.Exists(p))
            {
                System.Windows.MessageBox.Show("目录不存在!");
                return;
            }

            Shell32.ShellClass sh  = new Shell32.ShellClass();
            Shell32.Folder     dir = sh.NameSpace(p);
            foreach (Shell32.FolderItem item in dir.Items())
            {
                txtTest.Text += "\r\n" + dir.GetDetailsOf(item, 0);
                txtTest.Text += "\r\n" + dir.GetDetailsOf(item, 1);
                txtTest.Text += "\r\n" + dir.GetDetailsOf(item, 21);
                txtTest.Text += "\r\n" + dir.GetDetailsOf(item, 27);
            }

            //string[] files = Directory.GetFiles(ZS_TXT_FolderPath.Text);
            //foreach (string f in files)
            //{
            //    Shell32.FolderItem item = dir.ParseName(f);
            //}

            sh = null;
        }
Ejemplo n.º 12
0
        private string GetFileInfo()
        {
            // TODO: Add exception-handling. What if file can't be found or is invalid?
            string dirname;
            string filename;
            string header;
            string data;
            string info = "";

            Shell32.Shell shell = new Shell32.ShellClass();
            dirname  = Path.GetDirectoryName(trackPath);
            filename = Path.GetFileName(trackPath);
            Shell32.Folder     folder     = shell.NameSpace(dirname);
            Shell32.FolderItem folderitem = folder.ParseName(filename);
            info = filename;
            for (int i = 0; i <= 315; i++)
            {
                header = folder.GetDetailsOf(null, i);
                data   = folder.GetDetailsOf(folderitem, i);
                if (!(String.IsNullOrEmpty(header)) && !(String.IsNullOrEmpty(data)))
                {
                    info += $"{header}: {data}\r";
                }
            }
            return(info);
        }
Ejemplo n.º 13
0
        private static ProcessStartInfo LaunchShortcut(string shortcutPath)
        {
            Shell32.Shell  shell  = new Shell32.ShellClass();
            Shell32.Folder folder = shell.NameSpace(Path.GetDirectoryName(shortcutPath));

            bool runAs = IsMarkedRunAs(shortcutPath);

            string filenameOnly = System.IO.Path.GetFileName(shortcutPath);

            Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);

            if (folderItem != null)
            {
                Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;

                ProcessStartInfo info = new ProcessStartInfo(link.Path, link.Arguments)
                {
                    WorkingDirectory = link.WorkingDirectory,
                };

                if (runAs)
                {
                    info.Verb = "runas";
                }

                return(info);
            }

            return(null);
        }
Ejemplo n.º 14
0
        private static ProcessStartInfo LaunchShortcut(string shortcutPath)
        {
            Shell32.Shell shell = new Shell32.ShellClass();
            Shell32.Folder folder = shell.NameSpace(Path.GetDirectoryName(shortcutPath));

            bool runAs = IsMarkedRunAs(shortcutPath);

            string filenameOnly = System.IO.Path.GetFileName(shortcutPath);
            Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);

            if (folderItem != null)
            {
                Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;

                ProcessStartInfo info = new ProcessStartInfo(link.Path, link.Arguments)
                    {
                        WorkingDirectory = link.WorkingDirectory,
                    };

                if (runAs)
                    info.Verb = "runas";

                return info;
            }

            return null;
        }
Ejemplo n.º 15
0
        /// <summary>
        /// example:
        /// NetWork("无线网络连接","禁用")
        /// NetWork("无线网络连接","启用")
        /// </summary>
        /// <param name="netWorkName"></param>
        /// <param name="operation"></param>
        static void NetWork(string netWorkName, string operation)
        {
            Shell32.Shell  shell  = new Shell32.ShellClass();
            Shell32.Folder folder = shell.NameSpace(49);
            foreach (Shell32.FolderItem fi in folder.Items())
            {
                if (fi.Name != netWorkName)
                {
                    continue;
                }

                Shell32.ShellFolderItem folderItem = (Shell32.ShellFolderItem)fi;
                foreach (Shell32.FolderItemVerb fiv in folderItem.Verbs())
                {
                    if (!fiv.Name.Contains(operation))
                    {
                        continue;
                    }
                    else
                    {
                        fiv.DoIt();
                        Thread.Sleep(1000);
                        break;
                    }
                }
            }
        }
Ejemplo n.º 16
0
        // File processing
        private void ShowInfo()
        {
            string dirname;
            string filename;
            string header;
            string data;

            Shell32.Shell shell = new Shell32.ShellClass();
            dirname  = Path.GetDirectoryName(trackPath);
            filename = Path.GetFileName(trackPath);
            Shell32.Folder     folder     = shell.NameSpace(dirname);
            Shell32.FolderItem folderitem = folder.ParseName(filename);
            infoBox.Text = dirname + "\n" + filename;
            for (int i = 0; i <= 315; i++)
            {
                header = folder.GetDetailsOf(null, i);
                data   = folder.GetDetailsOf(folderitem, i);
                if (String.IsNullOrEmpty(header))
                {
                    header = "[Unknown header]";
                }
                if (String.IsNullOrEmpty(data))
                {
                    data = "[No data]";
                }
                infoBox.AppendText($"\n{i} {header} {data}");
            }
        }
Ejemplo n.º 17
0
        private void Setup_PreviewPane()
        {
            Dispatcher.BeginInvoke(DispatcherPriority.Background, (ThreadStart)(() =>
            {
                if (SelectedItem != null)
                {
                    if (!Browser.SelectedItems.Any())
                    {
                        return;
                    }
                    if (this.SelectedItem.IsFolder)
                    {
                        return;
                    }

                    //http://www.codeproject.com/Articles/7987/Retrieve-detailed-information-of-a-File
                    var sh = new Shell32.ShellClass();
                    Shell32.Folder dir = sh.NameSpace(System.IO.Path.GetDirectoryName(SelectedItem.ParsingName));
                    Shell32.FolderItem item = dir.ParseName(System.IO.Path.GetFileName(SelectedItem.ParsingName));

                    // loop through the Folder Items
                    for (int i = 0; i < 30; i++)
                    {
                        // read the current detail Info from the FolderItem Object
                        //(Retrieves details about an item in a folder. For example, its size, type, or the time of its last modification.)
                        // some examples:
                        // 0 Retrieves the name of the item.
                        // 1 Retrieves the size of the item.
                        // 2 Retrieves the type of the item.
                        // 3 Retrieves the date and time that the item was last modified.
                        // 4 Retrieves the attributes of the item.
                        // -1 Retrieves the info tip information for the item.
                        string colName = dir.GetDetailsOf(String.Empty, i);
                        string value = dir.GetDetailsOf(item, i);
                        // Create a helper Object for holding the current Information
                        // an put it into a ArrayList
                    }


                    //this.SelectedItem.Thumbnail.CurrentSize = new System.Windows.Size(this.ActualHeight - 20, this.ActualHeight - 20);
                    //this.SelectedItem.Thumbnail.FormatOption = BExplorer.Shell.Interop.ShellThumbnailFormatOption.Default;
                    //this.SelectedItem.Thumbnail.RetrievalOption = BExplorer.Shell.Interop.ShellThumbnailRetrievalOption.Default;
                    //icon.Source = this.SelectedItem.Thumbnail.BitmapSource;

                    //txtDisplayName.Text = SelectedItem.DisplayName;
                    //txtFileType.Text = "Extension: " + SelectedItem.Extension;
                    //txtPath.Text = "Location : " + SelectedItem.FileSystemPath;

                    //var OpenWirgList = SelectedItem.GetAssocList();
                    //if (OpenWirgList.Any()) {
                    //	txtOpenWith.Text = "Opens With: " + OpenWirgList.First().DisplayName;
                    //}

                    var File = new System.IO.FileInfo(Browser.SelectedItems[0].ParsingName);
                    txtFileSize.Text = "Size: " + File.Length.ToString();
                    txtFileCreated.Text = "Created: " + File.CreationTime.ToLongDateString();
                    txtFileModified.Text = "Modified: " + File.LastWriteTime.ToLongDateString();
                }
            }));
        }
Ejemplo n.º 18
0
 /// <summary>
 /// 功能:解压zip格式的文件。
 /// </summary>
 /// <param name="zipFilePath">压缩文件路径</param>
 /// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param>
 /// <param name="err">出错信息</param>
 /// <returns>解压是否成功</returns>
 public bool UnZipFile(string zipFilePath, string unZipDir, out string err)
 {
     err = "";
     if (zipFilePath.Length == 0)
     {
         err = "压缩文件不能为空!";
         return(false);
     }
     else if (!zipFilePath.EndsWith(".zip"))
     {
         err = "文件格式不正确!";
         return(false);
     }
     else if (!File.Exists(zipFilePath))
     {
         err = "压缩文件不存在!";
         return(false);
     }
     //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹
     if (unZipDir.Length == 0)
     {
         unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
     }
     if (!unZipDir.EndsWith("\\"))
     {
         unZipDir += "\\";
     }
     if (!Directory.Exists(unZipDir))
     {
         Directory.CreateDirectory(unZipDir);
     }
     try
     {
         Shell32.ShellClass  sc         = new Shell32.ShellClass();
         Shell32.Folder      SrcFolder  = sc.NameSpace(zipFilePath);
         Shell32.Folder      DestFolder = sc.NameSpace(unZipDir);
         Shell32.FolderItems items      = SrcFolder.Items();
         DestFolder.CopyHere(items, 20);
     }
     catch (Exception ex)
     {
         err = ex.Message;
         return(false);
     }
     return(true);
 }//解压结束
Ejemplo n.º 19
0
        /// <summary>
        /// Zip function calls Shell32, Interop.Shell32.dll is needed
        /// </summary>
        /// <param name="filesInFolder">Specify a folder containing the zip source files</param>
        /// <param name="zipFile">Specify the final zip file name, with ".zip" extension</param>
        public static void Compress(string filesInFolder, string zipFile)
        {
            if (filesInFolder == null || filesInFolder.Trim() == "")
            {
                return;
            }
            if (zipFile == null || zipFile.Trim() == "")
            {
                return;
            }
            if (!Directory.Exists(filesInFolder))
            {
                return;
            }

            DirectoryEx.DeleteEmptyDirectory(filesInFolder);

            Shell32.ShellClass sh = new Shell32.ShellClass();
            try
            {
                if (File.Exists(zipFile))
                {
                    File.Delete(zipFile);
                }
                //Create an empty zip file
                byte[] emptyzip = new byte[] { 80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

                FileStream fs = File.Create(zipFile);
                fs.Write(emptyzip, 0, emptyzip.Length);
                fs.Flush();
                fs.Close();

                Shell32.Folder      srcFolder  = sh.NameSpace(filesInFolder);
                Shell32.Folder      destFolder = sh.NameSpace(zipFile);
                Shell32.FolderItems items      = srcFolder.Items();
                destFolder.CopyHere(items, SHFILEOPSTRUCT.FOF_SILENT | SHFILEOPSTRUCT.FOF_NOCONFIRMATION);
                while (items.Count != destFolder.Items().Count)
                {
                    Thread.Sleep(50);
                }
            }
            finally
            {
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(sh);
            }
        }
Ejemplo n.º 20
0
        public static string ToZip(this DirectoryInfo d, string zipName = null, string zipExt = "zip", string basepath = null)
        {
            if (d == null)
            {
                throw new ArgumentNullException("Target Directory was null");
            }
            if (zipName == null)
            {
                zipName = d.Name;
            }
            if (basepath == null)
            {
                basepath = Environment.CurrentDirectory;
            }

            /// Inbuilt ZIP functions don't give a Dynamics CRM readable archive, but System ZIP function does
            // https://www.codeproject.com/Articles/12064/Compress-Zip-files-with-Windows-Shell-API-and-C
            byte[]     emptyzip = new byte[] { 80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
            var        path     = Path.Combine(basepath, zipName + ".zip");
            FileStream fs       = File.Create(path);

            fs.Write(emptyzip, 0, emptyzip.Length);
            fs.Flush();
            fs.Close();
            fs = null;
            Shell32.ShellClass  sc        = new Shell32.ShellClass();
            Shell32.Folder      SrcFlder  = sc.NameSpace(d.FullName);
            Shell32.Folder      DestFlder = sc.NameSpace(path);
            Shell32.FolderItems items     = SrcFlder.Items();
            DestFlder.CopyHere(items, 20);

            // TODO: FIXME: stop waiting for explorer to finish zipping
            do
            {
                System.Threading.Thread.Sleep(260);
            } while (new FileInfo(path).Length < 2 * 1024);

            if (zipExt != "zip")
            {
                File.Copy(path, Path.Combine(basepath, zipName + zipExt));
                File.Delete(path);
            }

            return(Path.Combine(basepath, zipName + zipExt));
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Modifies a shortcut to point to a new path.
        /// </summary>
        /// <param name="ShortcutPath">Full path to shortcut.</param>
        /// <param name="NewPath">New path of shortcut.</param>
        public static void ModifyShortcut(string ShortcutPath, string NewPath)
        {
            Shell32.Shell Shl = new Shell32.ShellClass();
            Shell32.Folder Folder = Shl.NameSpace(Path.GetFullPath(ShortcutPath));
            Shell32.FolderItem Item = Folder.Items().Item(Path.GetFileName(ShortcutPath));
            Shell32.ShellLinkObject Link = (Shell32.ShellLinkObject)Item.GetLink;

            Link.Path = NewPath;
        }
Ejemplo n.º 22
0
 public void unzip()
 {
     listbox_info.Items.Add(" ");
     listbox_info.Items.Add("正在解压文件...");
     try
     {
         Shell32.ShellClass  sc         = new Shell32.ShellClass();
         Shell32.Folder      SrcFolder  = sc.NameSpace(filename);
         Shell32.Folder      DestFolder = sc.NameSpace(Application.StartupPath + "\\");
         Shell32.FolderItems items      = SrcFolder.Items();
         DestFolder.CopyHere(items, 20);
         listbox_info.Items.Add("解压完成...");
     }
     catch (Exception)
     {
         listbox_info.Items.Add("解压失败...");
     }
 }
Ejemplo n.º 23
0
        /// <summary>
        /// Modifies a shortcut to point to a new path.
        /// </summary>
        /// <param name="ShortcutPath">Full path to shortcut.</param>
        /// <param name="NewPath">New path of shortcut.</param>
        public static void ModifyShortcut(string ShortcutPath, string NewPath)
        {
            Shell32.Shell           Shl    = new Shell32.ShellClass();
            Shell32.Folder          Folder = Shl.NameSpace(Path.GetFullPath(ShortcutPath));
            Shell32.FolderItem      Item   = Folder.Items().Item(Path.GetFileName(ShortcutPath));
            Shell32.ShellLinkObject Link   = (Shell32.ShellLinkObject)Item.GetLink;

            Link.Path = NewPath;
        }
Ejemplo n.º 24
0
        private void FolderExplorerTreeView_Initialized(object sender, EventArgs e)
        {
            Shell32.Shell  shell32          = new Shell32.ShellClass();
            Shell32.Folder folderDesktop    = shell32.NameSpace(ShellFolder.Desktop);
            Shell32.Folder folderMyComputer = shell32.NameSpace(ShellFolder.MyComputer);

            // find my computer folder item
            Shell32.FolderItem folderItemMyComputer = null;

            foreach (Shell32.FolderItem fi in folderDesktop.Items())
            {
                if (fi.Name == folderMyComputer.Title)
                {
                    folderItemMyComputer = fi;
                    break;
                }
            }

            if (folderItemMyComputer == null)
            {
                throw new ApplicationException("Error finding \"My Computer\" folder item.");
            }

            // add my computer
            TreeViewItem root = CreateTreeItem(folderItemMyComputer);

            Items.Add(root);

            // iterate through the "My Computer" namespace and populate the first level nodes
            foreach (Shell32.FolderItem item in folderMyComputer.Items())
            {
                if (item.IsFileSystem)
                {
                    TreeViewItem tvi = CreateTreeItem(item);
                    tvi.Items.Add(dummyNode);
                    tvi.Expanded         += new RoutedEventHandler(folder_Expanded);
                    tvi.PreviewMouseDown += new MouseButtonEventHandler(folder_PreviewMouseDown);
                    root.Items.Add(tvi);
                }
            }

            // expand "My Computer"
            root.IsExpanded = true;
        }
Ejemplo n.º 25
0
        private static IEnumerable <JumpListLink> ShortcutsToLinks(string folderName)
        {
            Shell32.Shell  shell  = new Shell32.ShellClass();
            Shell32.Folder folder = shell.NameSpace(folderName);

            foreach (string filename in Directory.GetFiles(folderName, "*.lnk", SearchOption.TopDirectoryOnly).OrderBy(x => x, new StringLogicalComparer()))
            {
                string filenameOnly = System.IO.Path.GetFileName(filename);

                if (filenameOnly.StartsWith("-"))
                {
                    continue;
                }

                bool runAs = Program.IsMarkedRunAs(filename);

                Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
                if (folderItem != null)
                {
                    Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;

                    string iconPath;
                    int    iconId = link.GetIconLocation(out iconPath);

                    if (String.IsNullOrEmpty(iconPath))
                    {
                        iconPath = link.Path;
                        iconId   = 0;
                    }

                    JumpListLink jumpLink;
                    if (runAs)
                    {
                        jumpLink = new JumpListLink(Application.ExecutablePath, GetDisplayName(filenameOnly))
                        {
                            Arguments        = BuildCommand("--launch", filename),
                            WorkingDirectory = Directory.GetCurrentDirectory(),
                        };
                    }
                    else
                    {
                        jumpLink = new JumpListLink(link.Path, GetDisplayName(filenameOnly))
                        {
                            Arguments        = link.Arguments,
                            WorkingDirectory = link.WorkingDirectory,
                            ShowCommand      = Enum.IsDefined(typeof(WindowShowCommand), link.ShowCommand) ?
                                               (WindowShowCommand)link.ShowCommand : WindowShowCommand.Default,
                        };
                    }

                    jumpLink.IconReference = new IconReference(iconPath, iconId);
                    yield return(jumpLink);
                }
            }
        }
Ejemplo n.º 26
0
 /// <summary>
 /// 功能:解压zip格式的文件。
 /// </summary>
 /// <param name="zipFilePath">压缩文件路径</param>
 /// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param>
 /// <param name="err">出错信息</param>
 /// <returns>解压是否成功</returns>
 public bool UnZipFile(string zipFilePath, string unZipDir, out string err)
 {
     err = "";
     if (zipFilePath.Length == 0)
     {
         err = "压缩文件不能为空!";
         return false;
     }
     else if (!zipFilePath.EndsWith(".zip"))
     {
         err = "文件格式不正确!";
         return false;
     }
     else if (!File.Exists(zipFilePath))
     {
         err = "压缩文件不存在!";
         return false;
     }
     //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹
     if (unZipDir.Length == 0)
         unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
     if (!unZipDir.EndsWith("\\"))
         unZipDir += "\\";
     if (!Directory.Exists(unZipDir))
         Directory.CreateDirectory(unZipDir);
     try
     {
         Shell32.ShellClass sc = new Shell32.ShellClass();
         Shell32.Folder SrcFolder = sc.NameSpace(zipFilePath);
         Shell32.Folder DestFolder = sc.NameSpace(unZipDir);
         Shell32.FolderItems items = SrcFolder.Items();
         DestFolder.CopyHere(items, 20);
     }
     catch (Exception ex)
     {
         err = ex.Message;
         return false;
     }
     return true;
 }
Ejemplo n.º 27
0
        public static MP3File ReadID3Tags(string FileFullPath)
        {
            MP3File mp3File = new MP3File();

            //parse file name
            string fileName = FileFullPath.Substring(FileFullPath.LastIndexOf("\\") + 1);
            //parse file path
            string filePath = FileFullPath.Substring(0, FileFullPath.LastIndexOf("\\"));

            //create shell instance
            Shell32.Shell shell = new Shell32.ShellClass();
            //set the namespace to file path
            Shell32.Folder folder = shell.NameSpace(filePath);
            //get ahandle to the file
            Shell32.FolderItem folderItem = folder.ParseName(fileName);
            //did we get a handle ?
            if (folderItem != null)
            {
                mp3File.FileName = fileName.Trim();
                //query information from shell regarding file
                mp3File.ArtistName = folder.GetDetailsOf(folderItem, 9).Trim();
                mp3File.AlbumName  = folder.GetDetailsOf(folderItem, 17).Trim();
                mp3File.SongTitle  = folder.GetDetailsOf(folderItem, 10).Trim();
                mp3File.Genre      = folder.GetDetailsOf(folderItem, 20).Trim();
                mp3File.Time       = folder.GetDetailsOf(folderItem, 21).Trim();
                string[] tags = new string[25];
                for (int i = 0; i < 25; i++)
                {
                    try
                    {
                        tags[i] = folder.GetDetailsOf(folderItem, i);
                    }
                    catch
                    {
                    }
                }
                mp3File.FileFullPath = FileFullPath.Trim();
                try
                {
                    mp3File.TrackNumber = Int32.Parse(folder.GetDetailsOf(folderItem, 19));
                }
                catch
                {
                }
            }
            //clean ip
            folderItem = null;
            folder     = null;
            shell      = null;
            //return mp3File instance
            return(mp3File);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Uses Shell32
        /// </summary>
        /// <param name="siteUrl"></param>
        /// <param name="filePathPattern">For example, to make a wildcard search ".doc" use the following
        /// reg expression: Regex regex = new Regex(@".*\.doc", RegexOptions.Compiled | RegexOptions.IgnoreCase);
        /// to exclude word template documents assigned to a SharePoint workspace, use the following reg
        /// expression: new Regex(@"(?<!.*/Forms/[^/]+)\.doc$", RegexOptions.Compiled | RegexOptions.IgnoreCase)</param>
        /// <returns></returns>
        public static StringCollection SearchFilesInWebFolder(Uri siteUrl, Regex filePathPattern, bool searchSubFolders)
        {
            string mapFolderPath = CreateWebFolderLink(siteUrl);

            StringCollection ret = new StringCollection();

            Shell32.ShellClass shell = new Shell32.ShellClass();

            Shell32.Folder mapFolder = shell.NameSpace(mapFolderPath);
            SearchInFolder(mapFolder, filePathPattern, searchSubFolders, ret);

            return(ret);
        }
Ejemplo n.º 29
0
        private static void AddRootNode(TreeView tree, ref int imageCount, ImageList imageList, ShellFolder shellFolder, bool getIcons)
        {
            Shell32.Shell       shell32       = new Shell32.ShellClass();
            Shell32.Folder      shell32Folder = shell32.NameSpace(shellFolder);
            Shell32.FolderItems items         = shell32Folder.Items();

            tree.Nodes.Clear();
            TreeNode desktop = new TreeNode("Desktop", 0, 0);

            // Added in version 1.11
            // add a FolderItem object to the root (Desktop) node tag that corresponds to the DesktopDirectory namespace
            // This ensures that the GetSelectedNodePath will return the actual Desktop folder path when queried.
            // There's possibly a better way to create a Shell32.FolderItem instance for this purpose,
            // but I surely don't know it

            Shell32.Folder dfolder = shell32.NameSpace(ShellFolder.DesktopDirectory);
            foreach (Shell32.FolderItem fi in dfolder.ParentFolder.Items())
            {
                if (fi.Name == dfolder.Title)
                {
                    desktop.Tag = fi;
                    break;
                }
            }

            // Add the Desktop root node to the tree
            tree.Nodes.Add(desktop);

            // iterate through the Desktop namespace and populate the first level nodes
            foreach (Shell32.FolderItem item in items)
            {
                if (item.IsFolder)                // this ensures that desktop shortcuts etc are not displayed
                {
                    TreeNode tn = AddTreeNode(item, ref imageCount, imageList, getIcons);
                    desktop.Nodes.Add(tn);
                    CheckForSubDirs(tn, imageList);
                }
            }
        }
Ejemplo n.º 30
0
        private static void ExtractFireBirdFiles(string zipFile)
        {
            string zipFileExtractionPath = Path.Combine(Application.StartupPath, Path.GetFileNameWithoutExtension(zipFile));

            Utility.EnsureDirectory(zipFileExtractionPath);

            Shell32.ShellClass shellClass = new Shell32.ShellClass();
            Shell32.Folder     srcFolder  = shellClass.NameSpace(zipFile);
            Shell32.Folder     destFolder = shellClass.NameSpace(zipFileExtractionPath);
            destFolder.CopyHere(srcFolder.Items(), 16 | 256 | 512);

            File.Delete(zipFile);


            string destinationPath = Path.Combine(Application.StartupPath, "FirebirdSql.Data.FirebirdClient.dll");

            File.Delete(destinationPath);
            File.Move(Path.Combine(zipFileExtractionPath, "FirebirdSql.Data.FirebirdClient.dll"), destinationPath);

            string basePath = Path.Combine(zipFileExtractionPath, "x86");

            if (IntPtr.Size == 8)
            {
                basePath = Path.Combine(zipFileExtractionPath, "x64");
            }

            string[] remainingFiles = new string[] { "fbembed.dll", "icudt30.dll", "icuin30.dll", "icuuc30.dll", "ib_util.dll", "firebird.conf", "firebird.msg" };

            foreach (string file in remainingFiles)
            {
                string fileToMove = Path.Combine(basePath, file);
                destinationPath = Path.Combine(Application.StartupPath, file);
                File.Delete(destinationPath);
                File.Move(fileToMove, destinationPath);
            }

            Utility.DeleteDirectory(new DirectoryInfo(zipFileExtractionPath));
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Returns whether the given path/file is a link
        /// </summary>
        /// <param name="shortcutFilename"></param>
        /// <returns></returns>
        public static bool IsLink(string shortcutFilename)
        {
            string pathOnly     = System.IO.Path.GetDirectoryName(shortcutFilename);
            string filenameOnly = System.IO.Path.GetFileName(shortcutFilename);

            Shell32.Shell      shell      = new Shell32.ShellClass();
            Shell32.Folder     folder     = shell.NameSpace(pathOnly);
            Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
            if (folderItem != null)
            {
                return(folderItem.IsLink);
            }
            return(false); // not found
        }
Ejemplo n.º 32
0
        internal static string GetShortcutTargetFile(string shortcutFilename)
        {
            string pathOnly     = System.IO.Path.GetDirectoryName(shortcutFilename);
            string filenameOnly = System.IO.Path.GetFileName(shortcutFilename);

            Shell32.Shell      shell      = new Shell32.ShellClass();
            Shell32.Folder     folder     = shell.NameSpace(pathOnly);
            Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
            if (folderItem != null)
            {
                Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;
                return(link.Path);
            }
            return("");            // not found
        }
Ejemplo n.º 33
0
        private void ExpandTreeItem(TreeViewItem tvi)
        {
            Shell32.Shell shell32 = new Shell32.ShellClass();

            // don't expand my computer
            if (((Shell32.FolderItem)tvi.Tag).Name == shell32.NameSpace(ShellFolder.MyComputer).Title)
            {
                return;
            }

            if (tvi.Items.Count == 1 && tvi.Items[0] == dummyNode)
            {
                tvi.Items.Clear();

                Shell32.FolderItem folderItem = (Shell32.FolderItem)tvi.Tag;
                Shell32.Folder     folder     = (Shell32.Folder)folderItem.GetFolder;

                String[] strFolders = Directory.GetDirectories(folderItem.Path);

                foreach (String s in strFolders)
                {
                    Shell32.Shell      shell          = new Shell32.ShellClass();
                    Shell32.Folder     folderTemp     = shell.NameSpace(folderItem.Path);
                    Shell32.FolderItem folderItemTemp = (Shell32.FolderItem)folderTemp.ParseName(s.Substring(s.LastIndexOf('\\') + 1));

                    if (folderItemTemp == null)
                    {
                        // Folder is inaccessible.
                        continue;
                    }

                    TreeViewItem newItem = CreateTreeItem(folderItemTemp);
                    newItem.Items.Add(dummyNode);
                    newItem.Expanded         += new RoutedEventHandler(folder_Expanded);
                    newItem.Collapsed        += new RoutedEventHandler(folder_Collapsed);
                    newItem.PreviewMouseDown += new MouseButtonEventHandler(folder_PreviewMouseDown);
                    tvi.Items.Add(newItem);
                }

                if (tvi.Items.Count > 0)
                {
                    // change to opened icon
                    ChangeIcon(tvi, true);
                }
            }
        }
Ejemplo n.º 34
0
        //actually read the meta data and fill in the appropriate strings.
        public void ReadMetaData(String fullFilePath)
        {
            Shell32.Shell      shell      = new Shell32.ShellClass();
            Shell32.Folder     folder     = shell.NameSpace(Path.GetDirectoryName(fullFilePath));
            Shell32.FolderItem folderItem = folder.ParseName(Path.GetFileName(fullFilePath));

            if (folderItem != null)
            {
                FileName   = Path.GetFileName(fullFilePath);
                AlbumName  = folder.GetDetailsOf(folderItem, (int)FileInfo.Album);
                ArtistName = folder.GetDetailsOf(folderItem, (int)FileInfo.Artists);
                Title      = folder.GetDetailsOf(folderItem, (int)FileInfo.Title);
                FrameRate  = folder.GetDetailsOf(folderItem, (int)FileInfo.Frame_rate);
            }
            folderItem = null;
            folder     = null;
            shell      = null;
        }
Ejemplo n.º 35
0
 /**
  * resolve shortcut file (.lnk), return corresponding weblink resource
  */
 private IResource ProcessShortcut(FileInfo fileInfo, IResource parent)
 {
     Shell32.Shell shell = new Shell32.ShellClass();
     if (shell != null)
     {
         Shell32.Folder folder = shell.NameSpace(fileInfo.DirectoryName);
         if (folder != null)
         {
             Shell32.FolderItem item = folder.ParseName(fileInfo.Name);
             if (item != null && item.IsLink)
             {
                 Shell32.IShellLinkDual2 link = (Shell32.IShellLinkDual2)item.GetLink;
                 if (link != null && File.Exists(link.Path))
                 {
                     return(CreateFavoriteResource("file:///" + link.Path, fileInfo, parent));
                 }
             }
         }
     }
     return(null);
 }
Ejemplo n.º 36
0
        private void CreateShortcut(object sender, RoutedEventArgs e)
        {
            var desktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            var lnkName       = "FL Studio (skinned)";

            string lnkPath = System.IO.Path.Combine(desktopFolder, lnkName) + ".lnk";

            System.IO.File.WriteAllBytes(lnkPath, new byte[] { });

            Shell32.Shell           shl = new Shell32.ShellClass();
            Shell32.Folder          dir = shl.NameSpace(desktopFolder);
            Shell32.FolderItem      itm = dir.Items().Item(lnkName + ".lnk");
            Shell32.ShellLinkObject lnk = (Shell32.ShellLinkObject)itm.GetLink;


            lnk.Path             = System.Reflection.Assembly.GetExecutingAssembly().Location;
            lnk.Arguments        = "-nogui";
            lnk.WorkingDirectory = System.IO.Path.GetDirectoryName(lnk.Path);
            lnk.SetIconLocation(string.Format(@"{0}\FL64.exe", Config.current.flStudioPath), 0);

            lnk.Save(lnkPath);
        }
Ejemplo n.º 37
0
        private static void AddRootNode( TreeView tree, ref int imageCount, ImageList imageList, ShellFolder shellFolder, bool getIcons )
        {
            Shell32.Shell shell32 = new Shell32.ShellClass();
              Shell32.Folder shell32Folder = shell32.NameSpace( shellFolder );
              Shell32.FolderItems items = shell32Folder.Items();

              tree.Nodes.Clear();
              TreeNode desktop = new TreeNode( "Desktop", 0, 0 );

              // Added in version 1.11
              // add a FolderItem object to the root (Desktop) node tag that corresponds to the DesktopDirectory namespace
              // This ensures that the GetSelectedNodePath will return the actual Desktop folder path when queried.
              // There's possibly a better way to create a Shell32.FolderItem instance for this purpose,
              // but I surely don't know it

              Shell32.Folder dfolder = shell32.NameSpace( ShellFolder.DesktopDirectory );
              foreach( Shell32.FolderItem fi in dfolder.ParentFolder.Items() )
              {
            if( fi.Name == dfolder.Title )
            {
              desktop.Tag = fi;
              break;
            }
              }

              // Add the Desktop root node to the tree
              tree.Nodes.Add( desktop );

              // [xiperware] Get FolderItem that represents Recycle Bin
              Shell32.Folder recFolder = shell32.NameSpace( ShellFolder.RecycleBin );
              Shell32.FolderItem recycle = null;
              foreach( Shell32.FolderItem fi in recFolder.ParentFolder.Items() )
              {
            if( fi.Name == recFolder.Title )
            {
              recycle = fi;
              break;
            }
              }

              // [xiperware] Get FolderItem that represents My Network Places
              Shell32.Folder netFolder = shell32.NameSpace( ShellFolder.NetworkNeighborhood );
              Shell32.FolderItem mynetwork = null;
              foreach( Shell32.FolderItem fi in netFolder.ParentFolder.Items() )
              {
            if( fi.Name == netFolder.Title )
            {
              mynetwork = fi;
              break;
            }
              }

              // iterate through the Desktop namespace and populate the first level nodes
              foreach( Shell32.FolderItem item in items )
              {
            if( !item.IsFolder   ) continue;  // this ensures that desktop shortcuts etc are not displayed
            if( item.IsBrowsable ) continue;  // [xiperware] exclude zip files
            if( recycle != null && item.Path == recycle.Path ) continue;  // [xiperware] skip recycle bin

            TreeNode tn = AddTreeNode( item, ref imageCount, imageList, getIcons );
            desktop.Nodes.Add( tn );

            if( mynetwork != null && item.Path == mynetwork.Path )  // [xiperware] skip my network places subdirs
            {
              tree.Tag = tn;  // store node in tag
              continue;
            }

            CheckForSubDirs( tn, imageList );
              }
        }
Ejemplo n.º 38
0
        private static void ExtractFireBirdFiles(string zipFile)
        {
            string zipFileExtractionPath = Path.Combine(Application.StartupPath, Path.GetFileNameWithoutExtension(zipFile));
            Utility.EnsureDirectory(zipFileExtractionPath);

            Shell32.ShellClass shellClass = new Shell32.ShellClass();
            Shell32.Folder srcFolder = shellClass.NameSpace(zipFile);
            Shell32.Folder destFolder = shellClass.NameSpace(zipFileExtractionPath);
            destFolder.CopyHere(srcFolder.Items(), 16 | 256 | 512);

            File.Delete(zipFile);


            string destinationPath = Path.Combine(Application.StartupPath, "FirebirdSql.Data.FirebirdClient.dll");
            File.Delete(destinationPath);
            File.Move(Path.Combine(zipFileExtractionPath, "FirebirdSql.Data.FirebirdClient.dll"), destinationPath);

            string basePath = Path.Combine(zipFileExtractionPath, "x86");
            if (IntPtr.Size == 8)
            {
                basePath = Path.Combine(zipFileExtractionPath, "x64");
            }

            string[] remainingFiles = new string[] { "fbembed.dll", "icudt30.dll", "icuin30.dll", "icuuc30.dll", "ib_util.dll", "firebird.conf", "firebird.msg" };

            foreach (string file in remainingFiles)
            {
                string fileToMove = Path.Combine(basePath, file);
                destinationPath = Path.Combine(Application.StartupPath, file);
                File.Delete(destinationPath);
                File.Move(fileToMove, destinationPath);
            }

            Utility.DeleteDirectory(new DirectoryInfo(zipFileExtractionPath));
        }
Ejemplo n.º 39
0
        private void ExpandTreeItem(TreeViewItem tvi)
        {
            Shell32.Shell shell32 = new Shell32.ShellClass();

            // don't expand my computer
            if (((Shell32.FolderItem)tvi.Tag).Name == shell32.NameSpace(ShellFolder.MyComputer).Title)
            {
                return;
            }

            if (tvi.Items.Count == 1 && tvi.Items[0] == dummyNode)
            {
                tvi.Items.Clear();

                Shell32.FolderItem folderItem = (Shell32.FolderItem)tvi.Tag;
                Shell32.Folder folder = (Shell32.Folder)folderItem.GetFolder;

                String[] strFolders = Directory.GetDirectories(folderItem.Path);

                foreach (String s in strFolders)
                {
                    Shell32.Shell shell = new Shell32.ShellClass();
                    Shell32.Folder folderTemp = shell.NameSpace(folderItem.Path);
                    Shell32.FolderItem folderItemTemp = (Shell32.FolderItem)folderTemp.ParseName(s.Substring(s.LastIndexOf('\\') + 1));

                    if (folderItemTemp == null)
                    {
                        // Folder is inaccessible.
                        continue;
                    }

                    TreeViewItem newItem = CreateTreeItem(folderItemTemp);
                    newItem.Items.Add(dummyNode);
                    newItem.Expanded += new RoutedEventHandler(folder_Expanded);
                    newItem.Collapsed += new RoutedEventHandler(folder_Collapsed);
                    newItem.PreviewMouseDown += new MouseButtonEventHandler(folder_PreviewMouseDown);
                    tvi.Items.Add(newItem);
                }

                if (tvi.Items.Count > 0)
                {
                    // change to opened icon
                    ChangeIcon(tvi, true);
                }
            }
        }
Ejemplo n.º 40
0
 static void UnzipUpdateTo(string targerFolder)
 {
     try
     {
         Shell32.ShellClass sc = new Shell32.ShellClass();
         Shell32.Folder SrcFolder = sc.NameSpace(System.IO.Path.Combine(Application.StartupPath,"Update.zip"));
         Shell32.Folder DestFolder = sc.NameSpace(targerFolder);
         Shell32.FolderItems items = SrcFolder.Items();
         DestFolder.CopyHere(items, 20);
     }
     catch
     {
         return;
     }
 }
Ejemplo n.º 41
0
        private void FolderExplorerTreeView_Initialized(object sender, EventArgs e)
        {
            Shell32.Shell shell32 = new Shell32.ShellClass();
            Shell32.Folder folderDesktop = shell32.NameSpace(ShellFolder.Desktop);
            Shell32.Folder folderMyComputer = shell32.NameSpace(ShellFolder.MyComputer);

            // find my computer folder item
            Shell32.FolderItem folderItemMyComputer = null;

            foreach (Shell32.FolderItem fi in folderDesktop.Items())
            {
                if (fi.Name == folderMyComputer.Title)
                {
                    folderItemMyComputer = fi;
                    break;
                }
            }

            if (folderItemMyComputer == null)
            {
                throw new ApplicationException("Error finding \"My Computer\" folder item.");
            }

            // add my computer
            TreeViewItem root = CreateTreeItem(folderItemMyComputer);
            Items.Add(root);

            // iterate through the "My Computer" namespace and populate the first level nodes
            foreach (Shell32.FolderItem item in folderMyComputer.Items())
            {
                if (item.IsFileSystem)
                {
                    TreeViewItem tvi = CreateTreeItem(item);
                    tvi.Items.Add(dummyNode);
                    tvi.Expanded += new RoutedEventHandler(folder_Expanded);
                    tvi.PreviewMouseDown += new MouseButtonEventHandler(folder_PreviewMouseDown);
                    root.Items.Add(tvi);
                }
            }

            // expand "My Computer"
            root.IsExpanded = true;
        }
Ejemplo n.º 42
0
        private static IEnumerable<JumpListLink> ShortcutsToLinks(string folderName)
        {
            Shell32.Shell shell = new Shell32.ShellClass();
            Shell32.Folder folder = shell.NameSpace(folderName);

            foreach (string filename in Directory.GetFiles(folderName, "*.lnk", SearchOption.TopDirectoryOnly).OrderBy(x => x, new StringLogicalComparer()))
            {
                string filenameOnly = System.IO.Path.GetFileName(filename);

                if (filenameOnly.StartsWith("-"))
                    continue;

                bool runAs = Program.IsMarkedRunAs(filename);

                Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
                if (folderItem != null)
                {
                    Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;

                    string iconPath;
                    int iconId = link.GetIconLocation(out iconPath);

                    if (String.IsNullOrEmpty(iconPath))
                    {
                        iconPath = link.Path;
                        iconId = 0;
                    }

                    JumpListLink jumpLink;
                    if (runAs)
                    {
                        jumpLink = new JumpListLink(Application.ExecutablePath, GetDisplayName(filenameOnly))
                            {
                                Arguments = BuildCommand("--launch", filename),
                                WorkingDirectory = Directory.GetCurrentDirectory(),
                            };
                    }
                    else
                    {
                        jumpLink = new JumpListLink(link.Path, GetDisplayName(filenameOnly))
                            {
                                Arguments = link.Arguments,
                                WorkingDirectory = link.WorkingDirectory,
                                ShowCommand = Enum.IsDefined(typeof(WindowShowCommand), link.ShowCommand) ?
                                                (WindowShowCommand)link.ShowCommand : WindowShowCommand.Default,
                            };
                    }

                    jumpLink.IconReference = new IconReference(iconPath, iconId);
                    yield return jumpLink;
                }
            }
        }
Ejemplo n.º 43
0
		private static void AddRootNode(TreeView tree, ref int imageCount, ImageList imageList, ShellFolder shellFolder, bool getIcons)
		{
			Shell32.Shell shell32 = new Shell32.ShellClass();
			Shell32.Folder shell32Folder = shell32.NameSpace(shellFolder);
			Shell32.FolderItems items = shell32Folder.Items();

			tree.Nodes.Clear();
			TreeNode desktop = new TreeNode("Desktop", 0, 0);
	
			// Added in version 1.11
			// add a FolderItem object to the root (Desktop) node tag that corresponds to the DesktopDirectory namespace
			// This ensures that the GetSelectedNodePath will return the actual Desktop folder path when queried.
			// There's possibly a better way to create a Shell32.FolderItem instance for this purpose, 
			// but I surely don't know it

			Shell32.Folder dfolder = shell32.NameSpace(ShellFolder.DesktopDirectory);
			foreach(Shell32.FolderItem fi in dfolder.ParentFolder.Items())
			{
				if(fi.Name == dfolder.Title)
				{
					desktop.Tag = fi;
					break;
				}
			}

			// Add the Desktop root node to the tree
			tree.Nodes.Add(desktop);
			
			// iterate through the Desktop namespace and populate the first level nodes
			foreach(Shell32.FolderItem item in items)
			{
				if(item.IsFolder) // this ensures that desktop shortcuts etc are not displayed
				{
					TreeNode tn = AddTreeNode(item, ref imageCount, imageList, getIcons);
					desktop.Nodes.Add(tn);
					CheckForSubDirs(tn, imageList);
				}
			}
			
		}
Ejemplo n.º 44
0
        public static string GetShortcutTargetFile(string shortcutFilename)
        {
            string pathOnly = Path.GetDirectoryName(shortcutFilename);
            string filenameOnly = Path.GetFileName(shortcutFilename);

            Shell32.Shell shell = new Shell32.ShellClass();
            Shell32.Folder folder = shell.NameSpace(pathOnly);
            Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
            if (folderItem != null)
            {
                Shell32.ShellLinkObject link =
                  (Shell32.ShellLinkObject)folderItem.GetLink;
                return link.Path;
            }

            return string.Empty; // Not found
        }
Ejemplo n.º 45
0
        static void Main(string[] args)
        {
            System.Console.WriteLine("The program has started.");
            if (args.Length == 3)
            {
                url = args[0];
                username = args[1];
                password = args[2];
            }
            else if (debug == false)
            {
                url = "http://www.stuntyleeg.com/";
                username = "******";
                password = "******";
                uploadzip uploadZip1 = new uploadzip();
                uploadZip1.Filename = "C:\\Documents and Settings\\username\\My Documents\\BloodBowl\\Match_2010-07-13_20-12-45.zip";
                uploadZip1.Password = password;
                uploadZip1.Url = url;
                uploadZip1.Username = username;
                uploadZip1.Page = page;
                uploadZip1.start();
                Console.ReadKey(true);
                Environment.Exit(1);
            }
            else
            {
                System.Console.WriteLine("This program accepts 3 arguments: url, username, and password.");
                System.Console.WriteLine("Please use the following example and follow it as closely as possible.");
                System.Console.WriteLine("OBBLMCyUploader.exe http://www.example.com/ \"user name\" \"this ismy_password\"");
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey(true);
                Environment.Exit(1);
            }

            string mydocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string bbdir = (Directory.Exists(mydocs + "\\BloodBowlLegendary\\")) ? mydocs + "\\BloodBowlLegendary\\" : mydocs + "\\BloodBowl\\";
            string matchreport = bbdir;
            string replay = bbdir + "Saves\\Replays\\";
            string zipfile = bbdir;

            FileSystemWatcher sw_replay = new FileSystemWatcher();
            Console.WriteLine("The replay folder is being monitored.");
            sw_replay.Path = replay;
            sw_replay.Filter = "Replay_*.db";
            sw_replay.Created += new FileSystemEventHandler(OnChanged);
            sw_replay.EnableRaisingEvents = true;

            while (newfile == null)
            {

            }

            sw_replay.EnableRaisingEvents = false;

            replay = newfile.FullPath;
            zipfile += "Match_" + newfile.Name.Substring(7,newfile.Name.Length-7-3)+".zip";//-7 for Replay_ and -3 for .db
            //Replay_2010-07-03_17-47-21.db
            newfile = null;

            FileSystemWatcher sw_matchreport = new FileSystemWatcher();
            System.Console.WriteLine("The match report folder is being monitored.");
            sw_matchreport.Path = matchreport;
            sw_matchreport.Filter = "MatchReport.sqlite";
            sw_matchreport.Changed += new FileSystemEventHandler(OnChanged);
            sw_matchreport.EnableRaisingEvents = true;

            while (newfile == null)
            {

            }

            sw_matchreport.EnableRaisingEvents = false;

            matchreport += "MatchReport.sqlite";

            Shell32.ShellClass sc = new Shell32.ShellClass();
            if (createzip(zipfile))
            {
                Shell32.Folder DestFlder = sc.NameSpace(zipfile);
                DestFlder.CopyHere(matchreport);
                checkStatus(1, DestFlder);
                DestFlder.CopyHere(replay);
                checkStatus(2, DestFlder);
            }

            uploadzip uploadZip = new uploadzip();
            uploadZip.Filename = zipfile;
            uploadZip.Password = password;
            uploadZip.Url = url;
            uploadZip.Page = page;
            uploadZip.Username = username;
            uploadZip.start();

            Console.WriteLine("The program has finished.");
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey(true);
        }
Ejemplo n.º 46
-1
 //Program does nothing.  Just a compile test
 private void UnZipFiles(string zipFilePath, string unzipFilePath)
 {
     Shell32.ShellClass shApp = new Shell32.ShellClass();
     Shell32.Folder3 destFolder = (Shell32.Folder3)shApp.NameSpace(unzipFilePath);
     Shell32.FolderItems3 zippedItems = (Shell32.FolderItems3)shApp.NameSpace(zipFilePath).Items();
     destFolder.CopyHere(zippedItems, 0);
 }