C# 快速計算資料夾容量

以往計算資料夾容量,需要使用迴圈計算檔案容量,然後在加起來,例如:

        private static void CalculateDirectorySize(string DirRoute, ref long totalSize)
        {
            foreach (string Route in Directory.EnumerateDirectories(DirRoute)) CalculateDirectorySize(Route, ref totalSize);
            foreach (FileInfo file in new DirectoryInfo(DirRoute).EnumerateFiles()) totalSize += file.Length;
        }

雖然可以計算,不過效率不太好,改用內建的 Scripting.FileSystemObject,速度會快上許多:

        private static long CalculateDirectorySize(string DirRoute)
        {
            try
            {
                Type tp = Type.GetTypeFromProgID("Scripting.FileSystemObject");
                object fso = Activator.CreateInstance(tp);
                object fd = tp.InvokeMember("GetFolder", BindingFlags.InvokeMethod, null, fso, new object[] { DirRoute });
                long ret = Convert.ToInt64(tp.InvokeMember("Size", BindingFlags.GetProperty, null, fd, null));
                Marshal.ReleaseComObject(fso);
                return ret;
            }
            catch
            {
                return 0;
            }
        }

  2014-10-06      ez      .NET
MikroTik RouterOS Wireless (WiFi) 設定 解決斷線問題

說實話 MikroTik RouterOS Wireless 真的超難用,會發生斷線問題,不然就是頻率超過台灣範圍!

用一般AP來搭配其實是比較好的解決方案,而且也較為經濟和方便操作!

如果真的要用 MikroTik RouterOS 的 Wireless,以下提供一些我的設定方式參考。

※台灣(美國、加拿大)頻率只有1~11,MikroTik 支援 1~14,其他國家或許不會有問題。

首先開啟Wireless設定頁面,設定Name方便辨識使用


  2014-10-02      ez      Mikrotik RouterOS
Excel 2010 允許開多個視窗

Excel 後期的版本,開啟檔案都會在同一個視窗內,造成多螢幕也無用處,無法同時觀看多個Excel!

只要透過以下Reg,就可以重新啟動多視窗功能。

首先先把以下檔案儲存成xxx.reg檔名,然後點選檔案註冊。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open_in_New_Excel_Instance]
@="在新視窗開啟(&W)"
[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open_in_New_Excel_Instance\command]
@="\"C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE\" \"%1\""
[HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open_in_New_Excel_Instance]
@="在新視窗開啟(&W)"
[HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open_in_New_Excel_Instance\command]
@="\"C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE\" \"%1\""

註冊完畢後,使用滑鼠右鍵 "在新視窗開啟(W)",就可以多個視窗瀏覽Excel了!


  2014-10-03      ez      Office
HP DV6-6006tx 更換網卡 sp55068 破解 網卡 白名單

因為筆記型電腦網卡壞掉了,所以只好從網路買一片網卡回來!

這次的主角為 HP DV6-6006tx 筆記型電腦,內建的網卡為 Intel® Centrino® Wireless-N 1000,支援 2.4G 802.11 b/g/n 300 Mbps,既然都壞了就找了一片較好的 Intel® Dual Band Wireless-AC 7260,支援 2.4G 5G 802.11 ac/a/b/g/n 300/867 Mbps。

http://ark.intel.com/zh-tw/products/59480/Intel-Centrino-Wireless-N-1000-Single-Band

http://ark.intel.com/zh-tw/products/75439/Intel-Dual-Band-Wireless-AC-7260?q=Wireless-ac%207260

收到 Intel® Dual Band Wireless-AC 7260 後,立刻換上新網卡,接下來才是悲慘的開始!

開機後立即跳出不支援網卡 Error 702訊息!

Wireless Module not supported Has The system detected a Wireless module installed in the system is not supported and disabled it WLAN Module ID (702) For more information, please visit: www.hp.com \ go \ TechCenter \ startup


  2014-10-02      ez      開箱
.Net C# 關閉Process中的程式 利用taskkill及tskill

 
利用Windows內建的taskkill及tskill指令關閉程式,只需將軟體名稱帶入function即可。

例如

Taskkill("notepad.exe");

Taskkill("notepad*");

        /// <summary>
        /// 關閉軟體
        /// </summary>
        /// <param name="ProcessName"></param>
        private void Taskkill(string ProcessName)
        {
            try
            {
                using (Process P = new Process())
                {
                    P.StartInfo = new ProcessStartInfo()
                    {
                        FileName = "taskkill",
                        CreateNoWindow = true,
                        WindowStyle = ProcessWindowStyle.Hidden,
                        Arguments = "/F /IM \"" + ProcessName + "\""
                    };
                    P.Start();
                    P.WaitForExit(60000);
                }
            }
            catch
            {
                using (Process P = new Process())
                {
                    P.StartInfo = new ProcessStartInfo()
                    {
                        FileName = "tskill",
                        CreateNoWindow = true,
                        WindowStyle = ProcessWindowStyle.Hidden,
                        Arguments = "\"" + ProcessName + "\" /A /V"
                    };
                    P.Start();
                    P.WaitForExit(60000);
                }
            }
        }

  2014-10-02      ez      .NET