2011年11月23日 星期三

[Other] 討厭 Facebook 每次有精彩的 要先按 讚 才能看嗎?叫你怎麼直接看..

實在是 太討厭 每次都要 按 讚  才能看圖片了。

針對網址是下列清單 的網站,都有效
太多太多  反正版型都長差不多...自己試試

(爆笑貼圖) http://explodephoto.lookforu.net/ 
(爆笑酷圖) http://coolphoto.withhopes.com/
(愛情遊戲) http://lovegame.dunucry.com/
(精彩視頻) http://wellvideo.upgradelord.com/
(動新聞)    http://donewspaper.lastfriend.net/
(短片分享站) http://videoshare.love2funnyshare.com/
(愛情合約) http://lovecontract.ilovefunnyshare.com/


步驟1:(我不用按讚也能看)  <--- 對我按滑鼠 右鍵 加入到我的最愛
步驟2:進入 爆笑酷X 後,點擊 剛剛加入的  我的最愛.
步驟3:會跳出小視窗,直接按 X

原本的畫面

變成


[Excel] C# OleDB 連線 Excel 資料檢視 (自訂檢視 欄位、條件)

 本篇是 簡介 以 OleDb 來連線至 Excel 檔案 ,並取得資料


點我下載 範例 使用(Source Code)

主要動作:
1.)以 OleDB 連線
2.)取得 分頁表 名稱
3.)SQL 語法取得資料
4.)綁定至 UI

2011年11月22日 星期二

[C#] 將 Dictionary 內資料 綁定至 ComboBox


將容器 Dictionary 內資料,綁定至 ComboBox 內

//宣告變數
            private Dictionary<string, string> Lang = new Dictionary<string, string>();

//使用
            //先清空,然後增加資料
            Lang.Clear();
            Lang.Add("zh-CHT","Chinese (Traditional)");
            Lang.Add("en", "English");
            Lang.Add("ja","Japanese");

            //資料綁定
            cmbT.DataSource = new BindingSource(Lang, null);
            cmbT.DisplayMember = "value";
            cmbT.ValueMember = "key";
            cmbT.SelectedIndex = 0;




[C#] 運用微軟API 線上翻譯

因為之前 Google 線上翻譯 API 常常無法連線,所以使用 Microsoft TransLate API
來進行翻譯,採用 SOAP 方式來實做,能自動判斷要翻譯的文字 是哪一國語言
,再搭配 熱鍵 的註冊 使用,很方便。


按我下載測試使用


//申請開發者ID
請至 Bing API  這裡 登入帳號密碼,點選 開發人員 --> 點選 Add 新增  Application
填入各項 必要資訊後,會拿到1組 Application ID (把這個ID紀錄起來)

//MSDN參考資料
這裡 有提供相關 使用方式。

//建立專案, 並加入 Web 參考(Web Service)

//使用
string res = Km.Translate("剛剛申請的AppID", "要翻譯的文字", "來源文字語系", "要翻譯的語系", "text/html", "general");

一行就搞定,試試看吧!

目前功能:
1.)會自動判斷 要翻譯的文字語系。
2.)支援熱鍵 Ctrl + Q ,將要翻譯的文字反白選擇後,按熱鍵會自動翻譯。
3.)翻譯結果 僅支援 繁體中文、英文、日文

2011年11月18日 星期五

[C#] 讓電腦說話 Speech SDK

在製造現場作業 工作站裡,每個作業操作流程 都會產生 通知訊息
例如: OK  、NG、混料 、作業No 錯誤 .. 等等

先前的作法是,依據 各個訊息 錄製對應的 Wav 檔案來播放
目前嘗試使用 SDK 來自動播放語音。

若安裝 基本SDK 只能播放 英文語音,若要 念中文 則需要額外安裝 LangPack


//引用
using SpeechLib;

//使用
        private void button1_Click(object sender, EventArgs e)
        {
            SpeechVoiceSpeakFlags SP = SpeechVoiceSpeakFlags.SVSFlagsAsync;
            SpVoice Voice = new SpVoice();
            Voice.AllowAudioOutputFormatChangesOnNextSet = true;
            Voice.Rate = -3; // 速度 +- 100
            Voice.Volume = 100; //音量 0~100
            Voice.Speak("Good Job", SP);  //念出 Good Job
        }



下載 範例 Source Code  檔案




Quick links

The links in this section correspond to files available for this download.
Download the files appropriate for you.
File NameSize
msttss22L.exe1.0 MBDownload
sapi.chm2.0 MBDownload
Sp5TTIntXP.exe3.0 MBDownload
SpeechSDK51.exe67.0 MBDownload
SpeechSDK51LangPack.exe81.0 MBDownload
SpeechSDK51MSM.exe131.0 MBDownload

Important File Download Details
  • If you want to download sample code, documentation, SAPI, and the U.S. English Speech engines for development purposes, download the Speech SDK 5.1 file (SpeechSDK51.exe).

  • If you want to use the Japanese and Simplified Chinese engines for development purposes, download the Speech SDK 5.1 Language Pack file (SpeechSDK51LangPack.exe) in addition to the Speech SDK 5.1 file.

  • If you want to redistribute the Speech API and/or the Speech engines to integrate and ship as a part of your product, download the Speech 5.1 SDK Redistributables file (SpeechSDK51MSM.exe).

  • If you want to get only the Mike and Mary voices redistributable for Windows XP, download Mike and Mary redistributables (Sp5TTIntXP.exe).

  • If you only want the documentation, download the Documentation file (sapi.chm).

2011年11月17日 星期四

[Other] 快速將文章分享 到 Google+ 或 Facebook

因為社群的崛起,很多人都開始經營自己的 社群專頁 或 粉絲群

我也不例外,也因此 常常看到好文章的時候,又想分享給 好朋友們的時候

就可以利用下列這兩個書籤。


分享至Google+             分享至Facebook



使用方法:

Firefox 的用戶 --  直接將 連結網址 拖曳 到你的書籤 工具列上。
IE 的用戶       --   對連結網址 按滑鼠右鍵 ,選擇 加到我的最愛(如下圖)。


[ASSCESS] OleDb 控制 ASSCESS 新增、修改、刪除 資料

本篇是 簡介 以 OleDb 來連線至 ASSCESS (mdb)檔案 ,並取得資料

範例檔案 按我 下載


//引用
using System.Data.OleDb;

//變數宣告
private static System.Data.OleDb.OleDbConnection oleConn = null;

//連線的方法
        private static void ConnectAsscessDB()
        {
            oleConn =  new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source="+AsscessDB_Full_path+ ";Jet OleDb:DataBase Password=green");
            if (oleConn.State == ConnectionState.Closed)
            {
                oleConn.Open();
            }
        }

//釋放連線
        private static void DisConnectAsscessDB()
        {
            if (oleConn.State == ConnectionState.Open)
            {
                oleConn.Close();
                oleConn.Dispose();
            }
        }

//返回 Datatable 的方法
        public static DataTable GetDateTable(string sqlstr)
        {
            DataTable dt = new DataTable("BOM");
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                ConnectAsscessDB();
                OleDbCommand comm = new OleDbCommand();
                comm.Connection = oleConn;
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(dt);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                DisConnectAsscessDB();
            }
            return dt;
        }

//使用的方法
            DataTable d = new DataTable();
            d.Clear();
            d = GetDateTable(sql命令);

//2011-11-23 追加 將取回 DataTable 綁定至 Data dataGridView1
            dataGridView1.DataSource = dt;
            dataGridView1.Update();

//2011-11-23 追加 若   dataGridView1 做 新增、修改、刪除 後要將資料回填 Asscess
//注意 新增不需要PK , 但是 修改、刪除 需要 PK (例如 Excel 當作資料來源時,要特別注意)
            OleDbCommandBuilder builder = new OleDbCommandBuilder(odp);
            if (dt.GetChanges() != null)
            {
                //MessageBox.Show(dt.GetChanges().Rows.Count.ToString());
                odp.Update(dt);
                dt.AcceptChanges();
             }

2011年11月16日 星期三

[TOOLS] 混淆工具 Xenocode Postbuild 2009 for .Net

首先是 版本













選擇要混淆的檔案 選取 Add 來增加檔案













混淆設定
-1.勾選第1項
-2.ILDASM 不勾選(防毒軟體會誤判為病毒)
-3.Control Level 選 4
-4.Select String 內 選 "Select All" 做字串混淆

[C#] KMAudioDown MU空間 MP3 下載 [0.0.0.5]

針對 MU 免空 ,將近期MP3 壓縮檔 下載。

MP3 僅為試聽使用,請下載後刪除。
請購買正版音樂光碟。

檔案下載後請解壓縮後,執行。 (檔案下載)

Ps. 若無法執行檔案,請安裝 .Net Framework 2.0 環境 (下載)


--版本更新 0.0.0.5 --
1.免空改版對應,請自行等候讀秒,點選普通下載
--版本更新 0.0.0.4 --
1.變更連結方式
--版本更新 0.0.0.3 --
1.修正正確網址
--版本更新 0.0.0.2 --
1.修復無效字串
2.追加 檢測新版本連結



[外掛] FaceBook WebGame 熱血海盜王 研究

老實說 這個  Web Game 我自己覺得不耐玩,所以研究項目不多

寫了個 自動抓俘虜 的介面,連結網址在下方。

Ps. 若無法執行檔案,請安裝 .Net Framework 2.0 環境 (下載)

想要 自動抓俘虜 的時候 在兩個欄位 填入 島嶼編號的範圍 
例如填上  1   以及   100  ,那就會自動打 島嶼編號1 ~ 100 的玩家 

按我下載




//2011-11-30 更新
因為免費放置空間 07.hd 改版檔案遭移除,變更 放置空間

[TOOLS] Windbg 分析 Dump 檔案

這是要解析 Dump File 的工具

首先開啟 windbg 工具 (Windbg 工具下載),載入 "Open Crash Dump",
然後 載入符號表( 符號表下載 )
在下方的輸入方框 輸入 "!analyze -v"   可以得到相關資訊。




另外,也可以下載 BlueScreenView 工具,也可以很簡易的觀看 Crash Root Cause
BlueScreenView 工具下載


2011年11月14日 星期一

[C#] 製程能力指標 Cpk 計算

在做統計的時候都會使用到.

這裡是採用新式計算方式, 判斷 CpkU 、CpkL 取數值比較小的
Math.Abs(Math.Min(CpkU, CpkL));

其中 CpkU、CpkL 的公式如下:
CpkU=(USL-平均值) / 3*標準差
CPkL=(平均值-LSL) / 3*標準差

其中 USL、LSL 定義:
USL:規格上限
LSL:規格下限
Source Code 下載

2011年11月11日 星期五

[C#] UNC 網路芳鄰連接 含帳號密碼 [使用WindowsIdentity方法]

之前有寫過 UNC 連接,但是是採用 CMD 模式 請見

[C#] UNC 網路芳鄰連接 含帳號密碼


這一次因為是要在 IIS 上執行,所以改採用 WindowsIdentity 來作業.

按我下載 SourceCode

//首先
using System.Security.Permissions;
using System.Runtime.InteropServices;
using System.Security.Principal;

//追加 namespace 上方
[assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum, UnmanagedCode = true)]
[assembly: PermissionSetAttribute(SecurityAction.RequestMinimum, Name = "FullTrust")]

//Dll
        [DllImport("advapi32.dll", SetLastError = true)]
        public static extern bool LogonUser(
           string lpszUsername,
           string lpszDomain,
           string lpszPassword,
           int dwLogonType,
           int dwLogonProvider,
           ref IntPtr phToken);
      
        [DllImport("kernel32.dll")]
        public extern static bool CloseHandle(IntPtr hToken);


  public class Connect_Net
    {
        public string Server_IP
        {
            get;
            set;
        }
        public string UserNmae
        {
            get;
            set;
        }
        public string Password
        {
            get;
            set;
        }
    }



         private void button1_Click(object sender, EventArgs e)
        {
            Connect_Net z = new Connect_Net();
            z.UserNmae = "ftpuser";
            z.Password= "ftpuser";
            z.Server_IP = "172.23.108.157";

            string IPath = @"\\" + z.Server_IP + @"\ftp";
            const int LOGON32_PROVIDER_DEFAULT = 0;
            const int LOGON32_LOGON_NEW_CREDENTIALS = 9;
            IntPtr tokenHandle = new IntPtr(0);
            tokenHandle = IntPtr.Zero;
            bool returnValue = LogonUser(z.UserNmae, z.Server_IP, z.Password,
            LOGON32_LOGON_NEW_CREDENTIALS,
            LOGON32_PROVIDER_DEFAULT,
            ref tokenHandle);
            WindowsIdentity w = new WindowsIdentity(tokenHandle);
            System.Security.Principal.WindowsImpersonationContext kk =  w.Impersonate();
            if (false == returnValue)
            {
                return;
            }
        
            DirectoryInfo dir = new DirectoryInfo(IPath);
            FileInfo[] inf = dir.GetFiles();
            for (int i = 0; i < inf.Length; i++)
            {
                Console.WriteLine(inf[i].Name);
                //檔案取回
                System.IO.File.Copy("\\\\"+z.Server_IP+"\\ftp\\"+inf[i].Name, "C:\\"+inf[i].Name+".jpg");
            }
            kk.Undo();
        }

2011年11月10日 星期四

[Other] 另類數學計算方式

網路上看到一種有意思的 數學計算乘法方式

數學乘法計算 99*98=9702 
有看懂嗎?

2011年11月9日 星期三

[C#] JSON 序列化及反序列化 筆記

今天有使用到 先作個 Demo 筆記

下記範例下載

1.) 需要加入參考
System.ServiceModel.Web
System.Runtime.Serialization

2.) 先建立對象
 public class Pz
    {
        public string EMP_ID { get; set; }
        public string NAME { get; set; }
        public int Age { get; set; }
    }

3.) 做序列化
            Pz Q = new Pz();
            Q.Age = 10;
            Q.EMP_ID = "12345";
            Q.NAME = "king";
            DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(Pz));
            using (MemoryStream ms = new MemoryStream())
            {
                ds.WriteObject(ms, Q);
                output = Encoding.UTF8.GetString(ms.ToArray());
                MessageBox.Show("這是序列化:" + output);
            }

           
4.) 反序列化
             if (output.Length == 0)
            {
                return;
            }
            DataContractJsonSerializer outDs = new DataContractJsonSerializer(typeof(Pz));
            using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)))
            {
                Pz QQ = outDs.ReadObject(outMs) as Pz;
                MessageBox.Show(QQ.Age + "," + QQ.EMP_ID + "," + QQ.NAME);
            }

2011年11月8日 星期二

[Excel] 簡化複製/選擇性 貼上 的速度

有些人的工作內容,可能會一直在 Excel 上做 複製/貼上 的作業,
當然 如果只是簡單的 Ctrl+C , Ctrl+V 沒什麼好介紹的,
由於工作單位內部 有人提出希望能夠 簡化(或加快) 複製/選擇性貼上 的作業。

本來想要自己寫 KeyBoard Hook 來做的,只是想到要客製化 那麼多需求就軟了
所以找阿找阿,找到這一款 可以符合需求,使用上也很簡單。

Hotkeyz 官網
有免安裝可以直接下載  官網免安裝下載
或是 已寫好的  直接下載 
使用效果:直接按下熱鍵(F3)複製   達到 選擇性貼上(F4) 的效果


Step1:選擇新增


Step2:在 Command 頁面
Desciption(可以辨識的名字), Command(Remap), Hotkey(直接設定要使用的熱鍵)


Step3:在 參數頁面 打上 [CONTROLD][C][CONTROLU]  然後按 OK 即可.

Step4:選擇性貼上的頁面


Step5:選擇性貼上 頁面的 參數
[ALTD][E][ALTU]
[S]
[V]
[ENTER]



最後記得在 主頁面上 按 [SAVE] 保存
聰明的看官 其實應該看出來了 。。這是不是很方便呢?