2018年1月28日 星期日

signalr ==> Create Hub Proxy 代理伺服器


https://dotblogs.com.tw/supershowwei/2016/05/20/151052

// Create Hub Proxy
   var broadcastHub = $.connection.broadcastHub;


https://tw.answers.yahoo.com/question/index?qid=20071225000015KK09712

最佳解答:  代理伺服器的原理其實很簡單啦!就是以類似代理人的角度去取得使用者所需要的資料就是了!但是由於他的功用,使得我們可以透過代理伺服器來額外的達成防火牆的功能!此外,也可以藉由代理伺服器 ( Proxy ) 來達成節省頻寬的目的,以及加快內部網路的 WWW 存取速度!總之, Proxy 對於大型的企業來說,實在是一個很不錯的東西啊!

什麼是代理伺服器

在真實世界中,我們或許會幫忙家人去辦理一些雜務吧!舉個例子來說,例如繳費或者是申辦提款卡等等的,那麼由於你並不是『申請者本人』而是『代理人』的角色,因此有時候會需要秀出一些證件就是了。那麼在網路上面的代理伺服器是怎麼回事呢?他就是 Proxy Server 囉!他最主要的功能就如同我們上面提的真實世界一樣, Proxy 會幫 Client 端的用戶去向目的地取得用戶端所需要的資料。所以,當 Client 端指定代理伺服器之後,您的所有相關要求( 例如 WWW 的要求 )就會通過代理伺服器去捉取囉!整個代理伺服器與用戶端的相關性可以由下圖約略看出一個端倪:
http://linux.vbird.org/linux_server/0420squid/0420squid_proxy1.jpg

在內部的電腦都是透過 Proxy 來向 Internet 求取資料的,這就是所謂的『代理伺服器』啦!當然,上面的架構僅只是一個案例,還有相當多的非 Intranet 的 Proxy 架構,亦即是你的 PC 與 Proxy 均在 Internet 上面,但是您一樣可以透過這個 Proxy 來幫您達到代理人身份的目的呢!
 
在 Proxy 與 Client 的相關性當中,您必需要瞭解的是:您向外部要求的資料事實上都是 Proxy 幫你取得的!怎麼說呢?舉個例子來說,假如我在我的瀏覽器 ( 假設是 Netscape 好了 )設定了我們學校的代理伺服器主機 proxy.ncku.edu.tw 做為我的 Proxy 好了,再假設我的 IP 是 140.116.44.125 ,那麼當我想要取得奇摩網站的新聞資訊時,事實上,都是 proxy.ncku.edu.tw 幫我去取得的,所以在奇摩的網站上面看到向他要求資料的人是誰呢?呵呵!當然就是 proxy.ncku.edu.tw 而不是我 140.116.44.125 囉!這樣可以瞭解 Proxy 的功能了嗎?
 
除了這點功能之外, Proxy 還有一個很棒的額外功能喔,那就是防火牆的功能!怎麼說呢?看一下上面的圖示,您可以發現一件事情,那就是 Client 端的個人電腦要連上 Internet 一定要經過 Proxy 伺服器,並且,如果有人想要入侵你的系統時,由於你的 proxy 在最外部啊,所以攻擊者就會攻擊錯方向,如此一來,不就比較安全!此外,由於整個 Intranet 對外都是經過 proxy ,也就是『單點對外』的情況,這種狀態底下要來管理防火牆也是比較簡單的喔!



proxy server可稱為代理伺服器 
亦可稱為快取伺服器 
用途是當用戶要連線倒某一網站時 
通常要是預覽器或程式無設定Proxy Server時 
是直接連線這個網站 
這種方式人少的化速度就快 
人多的連線一多頻寬就下降容易塞車 
代理伺服器的用途就為了解決這個問題 
要是有設定Proxy Server位置的話 
伺服器會比對有無最近跟你一樣要連線者連上這個網站的內容 
有的話就直接把內容比對差後的結果給你 
若無的話伺福器會先幫你連線取得內容並儲存在給使用者 
再容易塞車或連線國外的網站上設定Proxy Server通常會對連線速度有點幫助 
而各大ISP業者的設定並不一樣 
舉中華電信為例為Proxy hinet.net port80 
自己的使用的經驗有無設定對於連線到國外網站確實有一定的幫助 
不過也由於這種先取得網站內並容儲存的方式 
先前的Proxy Server有著作權的侵權問題 
後來的法令才明定這種方式才免除這種疑慮 

2018年1月27日 星期六

常見jQuery的三種不同架構 $(function(), (function($), $.fn.myFunctionName

常見jQuery的三種不同架構 $(function(), (function($), $.fn.myFunctionName


第一種
$(function(){
// Document is ready
});
其作用和 $(document).ready()一樣 ,用意在DOM載入後執行ready()方法。
第二種
(function($) {
// Here “$" is a jQuery reference
})(jQuery)
基本上是()(para)匿名方法(anonymous function),傳承jQuery的函式庫,jQuery plugins都是用這樣的架構。
第三種
$.fn.myFunctionName = function(){
// script codes
}
自己定義function

课时1:SignalR之前的那些实时通讯介绍

课时1:SignalR之前的那些实时通讯介绍

http://v.xue.taobao.com/learn.htm?spm=a211ha.10565794.0.0.23a3b07bhH39r0&courseId=74595&chapterId=2966537&sectionId=2966537

打造即時互動網站(Real-time web) 的秘訣 –ASP.NET SignalR 入門(台北場) [00:54:22] 作者: GiGi Huang    2014-07-15
https://msdev.cc/Video/C9Detail?id=451f22c4-c1ee-4e12-98ef-3b96bad2cbd9



[C#] 利用 SignalR 讓電腦版與行動裝置網頁,可以互相連動並傳遞即時訊息


http://sweeteason.pixnet.net/blog/post/43607932-%5Bc%23%5D-%E5%88%A9%E7%94%A8-signalr-%E8%AE%93%E9%9B%BB%E8%85%A6%E7%89%88%E8%88%87%E8%A1%8C%E5%8B%95%E8%A3%9D%E7%BD%AE%E7%B6%B2%E9%A0%81%EF%BC%8C%E5%8F%AF

Techdays2014 MVP Geek- 利用SignalR打造即時通訊
https://msdev.cc/Video/C9Detail?id=16464baa-8878-417e-b8ac-45fbb3c77574

打造即時互動網站(Real-time web) 的秘訣 –ASP.NET SignalR 入門(高雄/台中場)2015
https://channel9.msdn.com/Series/-Responsive-Web-Design/-Real-time-web-ASP-NET-SignalR-Kaohsiung-Taichung

使用 ASP.NET SignalR 建置即時擴展的網站服務
https://channel9.msdn.com/Events/TechDays/Techdays-Taiwan-2013/DEV304


SignalR 系列

https://ithelp.ithome.com.tw/users/20103426/ironman/1050

在錯誤中學習ASP.NET MVC 系列

https://ithelp.ithome.com.tw/users/20091626/ironman/893


jQuery 教學 - 基礎篇

jQuery 教學 - 基礎篇


http://jsgears.com/thread-63-1-1.html

2018年1月24日 星期三

2018年1月16日 星期二

[C#](note)跳出迴圈之return、break、continue的用法

[C#](note)跳出迴圈之return、break、continue的用法


https://dotblogs.com.tw/mis0800/2015/05/16/151316

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace pt1
{
    static class Program
    {
        /// <summary>
        /// 應用程式的主要進入點。
        /// </summary>
        [STAThread]
        static void Main(string[] args1)
        {
            string[] args = { "w" };
            if (args1.Length != 0)
                args = args1;

            if (args.Length > 0 && args[0] == "w") //這裡進入主程
            {

                #region 主程式

                //用來判斷程式是否已執行
                bool isAppRunning = false;
                Mutex mutex = new System.Threading.Mutex(true, Process.GetCurrentProcess().ProcessName, out isAppRunning);

                //已執行則不鳥
                if (!isAppRunning)
                {
                    //MessageBox.Show("Not work!");
                    //AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
                    ////加入關閉後自動執行的function
                    //Environment.Exit(Environment.ExitCode);
                    ////關閉 觸發CurrentDomain_ProcessExit

                    //《return》直接跳出結束那個函式,不會繼續執行迴圈外的程式
                 
                   return;
                }
     
                MessageBox.Show("return跳出1");
                try
                {
                    MessageBox.Show("return跳出2");
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                    //加入下列這段不然會跳出try,在Main內跑迴圈
                    Environment.Exit(Environment.ExitCode);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
                try
                {
                    Application.Restart();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }

                #endregion
            }

            else //執行程式優先執行AutoUpgrade
            {
                MessageBox.Show("AutoUpgrade");
            }
         
          //  MessageBox.Show("return跳出3");
        }
    }
}

c# Mutex 探究

http://arthurmvc.blogspot.tw/2013/09/netlock.html

Mutex(bool, string, out bool): 第三個輸入參數用來指示是否取得同步鎖,是實務中較常用到的。

 //isAppRunning = false表示已執行,沒有拿到權仗,若拿到權杖則為true
 //blLock = false表示已執行,沒有拿到權仗,若拿到權杖則為true
bool blLock;
Mutex mutex = new Mutex( true, @"Global\MyAPP", out blLock);
try {
   if(blLock)
      //工作
   else
      //等待同步鎖
}
finally {
    mutex.ReleaseMutex();
}

範例

namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //label1.Text= System.AppDomain.CurrentDomain.BaseDirectory; label1.Text = Process.GetCurrentProcess().ProcessName; } private void button2_Click(object sender, EventArgs e) { bool flag = false; System.Threading.Mutex mutex = new System.Threading.Mutex(true, Process.GetCurrentProcess().ProcessName, out flag); //第一個參數:true--給調用執行緒賦予互斥體的初始所屬權 //第一個參數:互斥體的名稱 //第三個參數:返回值,如果調用執行緒已被授予互斥體的初始所屬權,則返回true //flag為true表示取得第一次啟動權,也就是同步鎖
if (flag) { label2.Text = "啟動"; } else { label2.Text = "另一隻已在跑"; System.Threading.Thread.Sleep(5000);//執行緒掛起5秒鐘 //請勿使用this.close(); 會有錯誤發生 Environment.Exit(Environment.ExitCode);//退出程式 } } private void button3_Click(object sender, EventArgs e) { bool flag = false; System.Threading.Mutex mutex = new System.Threading.Mutex(true, Process.GetCurrentProcess().ProcessName, out flag); //第一個參數:true--給調用執行緒賦予互斥體的初始所屬權 //第一個參數:互斥體的名稱 //第三個參數:返回值,如果調用執行緒已被授予互斥體的初始所屬權,則返回true //flag為true表示取得第一次啟動權,也就是同步鎖
if (flag) { label2.Text = "程式啟動執行"; } else { //bnt2先按了.因為在同一隻程式.webform已被鎖定.所以label3.Text不會出現
label3.Text = "另一隻已經在跑了";

//直接執行下列 System.Threading.Thread.Sleep(5000);//執行緒掛起5秒鐘 //請勿使用this.close(); 會有錯誤發生(因為在同一隻程式.webform已被鎖定)
Environment.Exit(Environment.ExitCode);//退出程式 } } } }

2018年1月14日 星期日

c#執行CMD命令 -f 關機時強制關閉所有進程而不顯示任何警告

https://hk.saowen.com/a/4357a5ef0efa1800580b5ae62e1b4d80dc1e95b277839bf48ba9908b57862fd7

https://dotblogs.com.tw/chou/2012/01/14/65787

http://www.programmer-club.com.tw/showSameTitleN/csharp/5461.html

利用C#程式來控制Windows中的處理程序

http://einboch.pixnet.net/blog/post/244599530-%E5%88%A9%E7%94%A8c%23%E7%A8%8B%E5%BC%8F%E4%BE%86%E6%8E%A7%E5%88%B6windows%E4%B8%AD%E7%9A%84%E8%99%95%E7%90%86%E7%A8%8B%E5%BA%8F

[C#][WinForm]Application.Exit關閉應用程式後真的不執行了嗎?

https://dotblogs.com.tw/ricochen/2010/01/18/13066

2018年1月13日 星期六

基本IP概念

基本IP概念

遮罩 (Mask)就是用來區分2個IP是不是鄰居(在同一個網段內)...預設閘道(Gateway) 路由器(閘道器;Gateway)就是郵局

http://powerfuleric.pixnet.net/blog/post/41100062-%E5%9F%BA%E6%9C%ACip%E6%A6%82%E5%BF%B5

SQLite 數據類型

SQLite 數據類型

http://tw.gitbook.net/sqlite/sqlite_data_types.html

http://jyhshin.pixnet.net/blog/post/31988011-sqlite-query-language%3A-datatypes-in-sqlite

SQLite 編輯欄位

http://huang2387.pixnet.net/blog/post/277550569-%E3%80%90%E7%B6%93%E9%A9%97%E3%80%91sqlite-creat-db-%26-creat-table-%E6%B5%81%E7%A8%8B%E5%9C%96

2018年1月12日 星期五

C# Sqlite 資料庫加密

C# Sqlite 資料庫加密

http://fecbob.pixnet.net/blog/post/38124397-c%23-sqlite-%E8%B3%87%E6%96%99%E5%BA%AB%E5%8A%A0%E5%AF%86

用了ADO.NET 2.0 SQLite Data Provider 這樣可以直接利用它來創建一個加密的sqlite資料庫。
有關c#代碼如下:

1、創建空的sqlite資料庫。

//資料庫名的尾碼你可以直接指定,甚至沒有尾碼都可以
//方法一:創建一個空sqlite資料庫,用IO的方式
FileStream fs = File.Create("c:\\test2.db");
//方法二:用SQLiteConnection
SQLiteConnection.CreateFile("c:\\test2.db");
創建的資料庫是個0位元組的檔。

2、創建加密的空sqlite資料庫

//創建一個密碼為password的空的sqlite資料庫
SQLiteConnection.CreateFile("c:\\test2.db");
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test2.db");
cnn.Open();
cnn.ChangePassword("password");

3、給未加密的資料庫加密

SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test2.db");
cnn.Open();
cnn.ChangePassword("password");
//方法一
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test2.db");
cnn.SetPassword("password");
cnn.Open();
//方法二
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.DataSource = @"c:\test2.db";
builder.Password = @"password";
SQLiteConnection cnn = new SQLiteConnection(builder.ConnectionString);
cnn .Open();

註記:

A、因為加密的函數是利用windows api,故加密後的資料庫只能適用在windows平臺,加密的方式是整體檔加密。
B、加密的演算法是RC4,如果你想採用別的加密演算法來加密,請參考ADO.NET 2.0 SQLite Data Provider 的源碼來修改。
c、相關sqlite資料庫操作類似ADO.NET 2.0。詳見ADO.NET 2.0 SQLite Data Provider的説明文檔。
c、ADO.NET 2.0 SQLite Data Provider 版本為:1.0.53.0 ,SQLite版本 : 3.6.0。
d、開發環境為vs2008。

創作者介紹
shadow 發表在 痞客邦 PIXNET

2018年1月11日 星期四

Process.start指定為UseShellExecute=false的問題

Process.start指定為UseShellExecute=false的問題


http://bbs.csdn.net/topics/330253182

[C#]利用 Process 來執行其它外部程式

http://abgne.tw/code-snippets/dotnet-process.html

http://a7419.pixnet.net/blog/post/89449301-c%23-%E5%9F%B7%E8%A1%8C%E5%A4%96%E9%83%A8exe

https://dotblogs.com.tw/am940625/2016/02/15/140257

https://dotblogs.com.tw/atowngit/archive/2009/12/26/12681.aspx

https://dotblogs.com.tw/kirkchen/2011/08/02/execute-process-standardoutput-after-waitforexit-will-cause-deadlock


cmd /c和cmd /k

http://houliang4285.iteye.com/blog/1687816

http://forum.twbts.com/viewthread.php?tid=10207

[C#]使用Process的StandardInput與StandardOutput寫入讀取控制枱數據


https://hk.saowen.com/a/c186b13e9b50a23f8351c54f19200fa51cb1fa11507bd17655f662ca335b5af7

C# Process 使用教學

C# Process 使用教學

https://dotblogs.com.tw/hacker_mission/2017/08/25/144151

2018年1月10日 星期三

[C#.NET] 判斷被呼叫的應用程式是否被關閉

[C#.NET] 判斷被呼叫的應用程式是否被關閉

https://dotblogs.com.tw/yc421206/archive/2011/03/21/21981.aspx

NET(C#):关于进程退出的事件


http://blog.csdn.net/mysce/article/details/71526929

C#] 啟動應用程式並且傳入參數

C#] 啟動應用程式並且傳入參數


https://dotblogs.com.tw/atowngit/archive/2009/12/26/12681.aspx

C# 讓程式不顯示在工作管理員中

C# 讓程式不顯示在工作管理員中

https://dotblogs.com.tw/hacker_mission/2017/12/04/090607

Findwindow 

http://www.blueshop.com.tw/board/FUM20050124192253INM/BRD20101225233503KLX.html



using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IntPtr  hwd1 ;
                  

            hwd1 = FindWindow(null, "未命名 - 記事本");


            if (hwd1 == IntPtr.Zero)
            {
               MessageBox.Show ("找不到");

            }
            else
            {
                MessageBox.Show("找到了");
            }
        }
    }
}


其他
https://dotblogs.com.tw/optimist9266/2011/06/06/27194

http://blog.csdn.net/soief/article/details/4094476

https://ask.helplib.com/c-Sharp/post_1139423

http://www.blueshop.com.tw/board/FUM20050124192253INM/BRD201210151025017BV.html

https://social.msdn.microsoft.com/Forums/zh-TW/d70d8991-68be-462d-af6a-566b1504281b/winform?forum=233
http://www.codebye.com/c%E6%80%8E%E6%A0%B7%E5%9C%A8%E4%BB%BB%E5%8A%A1%E7%AE%A1%E7%90%86%E5%99%A8%E4%B8%AD%E9%9A%90%E8%97%8F%E4%B8%BB%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%BF%9B%E7%A8%8B%E5%90%8D.html


2018年1月8日 星期一

vs2010打包winform程序詳解

http://www.cnblogs.com/jqmtony/p/3699352.html

http://www.wenwenti.info/article/822183

http://www.itdadao.com/articles/c15a993738p0.html

https://www.bbsmax.com/A/MAzAWOXy59/

http://autoposter.pixnet.net/blog/post/116865479-c%23-winform%E6%89%93%E5%8C%85%EF%BC%88%E5%B8%B6%E6%95%B8%E6%93%9A%E5%BA%AB%E5%AE%89%E8%A3%9D%EF%BC%89%E8%BD%89

http://www.javashuo.com/content/p-4502819.html

https://coolong124220.nidbox.com/diary/read/8045418

http://www.jb51.net/article/29226.htm

https://read01.com/zh-tw/y6662.html#.WlPvZt-WZPY

https://read01.com/AE0de0.html#.WlPvgN-WZPY

http://blog.csdn.net/xhf55555/article/details/7702212

https://blog.miniasp.com/post/2010/06/07/Visual-Studio-Setup-Project-AssemblyFileVersion-issue.aspx

https://read01.com/a0gznO.html#.WlPod9-WZPY

https://read01.com/D5J3KM.html#.WlPoc9-WZPY

https://read01.com/8PMdAQ.html#.WlPocd-WZPY

https://read01.com/O20Lnz.html#.WlPobt-WZPY

https://read01.com/5QR774.html#.WlPoat-WZPY

https://read01.com/R54DQo.html#.WlPoZt-WZPY

https://read01.com/8PNmPL.html#.WlPoZN-WZPY

https://read01.com/GPNzEn.html#.WlPoYd-WZPY

http://blog.e-happy.com.tw/?p=236

https://dotblogs.com.tw/hung-chin/2011/05/22/25794

http://zhanghaicheng.com/share/csharp/239.html

https://read01.com/zh-tw/AE0de0.html#.WlOXxt-WZPZ

https://read01.com/y6662.html#.WlPoXt-WZPY






2018年1月7日 星期日

keylogger參考

keylogger參考

https://www.observeit.com/product/highlights/

http://tw.imonitorsoft.com/eam-pro-feature-sceenshots.html

http://www.imonitorsoft.com/help/eam/tw/

https://www.ithome.com.tw/review/96721

http://milo0922.pixnet.net/blog/post/27311927-%E3%80%90%E4%B8%8B%E8%BC%89%E3%80%91%E7%B4%80%E9%8C%84%E4%BD%BF%E7%94%A8%E9%9B%BB%E8%85%A6%E9%81%8E%E7%A8%8B---xp-%E9%8D%B5%E7%9B%A4%E5%81%B4%E9%8C%84%E5%99%A8%E7%B6%A0

http://milo0922.pixnet.net/blog/post/37352806

http://milo0922.pixnet.net/blog/post/37012805

http://milo0922.pixnet.net/blog/post/37012805-%E3%80%90%E4%B8%8B%E8%BC%89%E3%80%91%E7%B4%80%E9%8C%84%E9%9B%BB%E8%85%A6%E9%8D%B5%E7%9B%A4%E3%80%81%E7%9B%A3%E8%A6%96%E8%9E%A2%E5%B9%95%E3%80%81%E4%BD%BF%E7%94%A8%E9%81%8E%E7%9A%84

http://milo0922.pixnet.net/blog/post/36546713

http://milo0922.pixnet.net/blog/post/39596169

http://www.macuknow.com/node/54349

http://devin6413.pixnet.net/blog/post/25056101-%E5%BD%A9%E8%99%B9%E6%A9%8B%E6%9C%A8%E9%A6%AC%E6%B8%AC%E8%A9%A6%EF%BC%8C%E5%85%A5%E4%BE%B5%E7%9B%A3%E6%8E%A7%E9%9B%BB%E8%85%A6%E5%BE%88%E8%BC%95%E9%AC%86%EF%BC%9F%EF%BC%81

取得目前瀏覽的頁面Url

http://ahijup.blogspot.tw/2012/03/url.html


在C#中取得前景視窗(ForegroundWindow)的應用程式名稱

在C#中取得前景視窗(ForegroundWindow)的應用程式名稱

http://codingjames.blogspot.tw/2010/09/cforegroundwindow.html

[C#] 透過 Win32 EnumWindows 和 GetWindowText 取得所有執行程式的hWnd還有標題

http://no2don.blogspot.com/2017/05/c-win32-enumwindows-getwindowtext-hwnd.html

[C#]取得本機端上,執行中有 GUI 介面的應用程式

https://dotblogs.com.tw/chou/2009/09/30/10848

取得程式本身執行期的路徑與檔名

http://slashlook.com/articles_20150608.html

System.IO.Path常用及Request URL常用

http://pramaire.pixnet.net/blog/post/24610352

C#取得執行程式所在的路徑方法

http://pramaire.pixnet.net/blog/post/38668426

C# WINFORM 取得執行程式所在的路徑方法

http://blog.xuite.net/hsiung03/blog/63883235-C%23+WINFORM+%E5%8F%96%E5%BE%97%E5%9F%B7%E8%A1%8C%E7%A8%8B%E5%BC%8F%E6%89%80%E5%9C%A8%E7%9A%84%E8%B7%AF%E5%BE%91%E6%96%B9%E6%B3%95

[C#][WinForm]Application.Exit關閉應用程式後真的不執行了嗎?

https://dotblogs.com.tw/ricochen/2010/01/18/13066

[VB.NET][C#.NET] Windows Form /控制項 事件 的 先後順序 / 事件方法覆寫

https://dotblogs.com.tw/yc421206/archive/2009/07/24/9668.aspx


2018年1月2日 星期二

C#全局键盘监听(Hook)的使用


C#全局键盘监听(Hook)的使用

***
http://blog.csdn.net/u014434080/article/details/51513197

***

https://github.com/yswenli/Wenli.IEM

http://www.itread01.com/articles/1489334225.html

http://www.cnblogs.com/clso/archive/2009/04/14/1435299.html

http://www.cnblogs.com/grenet/archive/2010/12/07/1898840.html

http://fecbob.pixnet.net/blog/post/38088281-c%23-%E9%8E%96%E5%AE%9A%E9%8D%B5%E7%9B%A4%EF%BC%8C%E6%BB%91%E9%BC%A0-

https://social.msdn.microsoft.com/Forums/vstudio/en-US/edd98156-a292-431c-94c0-b6d611fa0aef/casesensitive-keyboard-hook?forum=vcgeneral

https://zhidao.zhenbo.org/bwZdjWYchZc

http://www.cnblogs.com/lhyqzx/p/5955440.html

http://blog.csdn.net/beyondqd/article/details/8512354

http://blog.csdn.net/chenlaoyang/article/details/8268492

http://www.zendei.com/article/17314.html

http://www.huanlintalk.com/2015/08/convert-enum-to-key-value-array.html

http://tutplusplus.blogspot.tw/2010/10/ultimate-keylogger-lesson-1-global.html

https://stackoverflow.com/questions/604410/global-keyboard-capture-in-c-sharp-application

https://pastebin.com/pf5t4mgK

http://blog.xuite.net/vexed/tech/66042514-%E7%B7%9A%E4%B8%8A%E6%B3%A8%E9%9F%B3%E5%BF%98%E8%A8%98%E5%88%87%E6%8F%9B%E8%BC%B8%E5%85%A5%E6%B3%95%E8%A7%A3%E7%A2%BC

https://www.jianshu.com/p/8f839f558319

https://msdn.microsoft.com/zh-tw/library/system.windows.forms.keypresseventargs.keychar(v=vs.110).aspx

http://www.aspphp.online/bianchen/dnet/gydnet/201701/170503.html

使用C#抓取運行中的執行緒資訊以及檔案資訊


使用C#抓取運行中的執行緒資訊以及檔案資訊

http://slashlook.com/articles_20151111.html

WPF聊天室应用(ASP.NET Core SignalR)

  WPF聊天室应用(ASP.NET Core SignalR) https://www.bilibili.com/video/BV1Q741187Si?p=2 https://www.bilibili.com/video/BV1UV411e75T?from=search&...