カスタムURL ProtocolはWinfromプログラム(exe)を呼び出して値を伝達します——ホームページのリンクのようにQQ、旺旺を呼び出します


近日のプロジェクト(B/S)でWebformはWinformプログラムを呼び出し、アイデンティティなどの情報を伝達する必要がある.C#には関数Systemがある.Diagnostics.Processは、ネイティブexeプログラムを直接呼び出し、転送を実現することができます.使用法は次のとおりです.
Process.Start(@"D:\   .exe", "  "); 

ここで、最初のパラメータはプログラムが存在する完全なパスであり、2番目は伝達するパラメータ(文字列配列)であり、パラメータは複数であり、スペースで区切られ、自動的に文字列配列に変換することができる.
しかし、この方式はIEでの呼び出し時のみ有効であり、少なくともChromeでの呼び出しは無効であることがテストされたため、QQなどのプログラムの呼び出し方式を借りることを考え、具体的な手順は以下の通りである.
1、まずprotocol-handlerを登録します(レジストリにコードを書き込むことです)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\URLTEST]
"URL Protocol"="D:\\WinFormTest.exe"
@="URLTestProtocol"
[HKEY_CLASSES_ROOT\URLTEST\DefaultIcon]
@="D:\\WinFormTest.exe,1"
[HKEY_CLASSES_ROOT\URLTEST\shell]
[HKEY_CLASSES_ROOT\URLTEST\shell\open]
[HKEY_CLASSES_ROOT\URLTEST\shell\open\command]
@="\"D:\\WinFormTest.exe\" \"%1\""

2番目、5番目、10番目の動作に対応するファイルが存在するパスに注意し、パスのエスケープ文字「」に注意してください.URLTESTはプロトコル名として表示され、次の呼び出し時に使用され、任意に変更できます.4行目のURLTestProtocolは明確な意味(名前)がなくても修正できます.
2、Webページの呼び出し方法
アイデンティティー  

XSLCUMSは、最初のステップのプロトコル名と一致し、2番目はパラメータであり、Winformプログラムで使用されます.
3、Winformプログラム受信パラメータ
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace     
{
    static class Program
    {
        /// 
        ///          。
        /// 
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            if (args.Length > 0)
            {
                string[] arg = { System.Text.RegularExpressions.Regex.Match(args[0], @"(?<=://).+?(?=:|/|\Z)").Value }; 
                Application.Run(new Form2(arg));
            }
            else
            {
                Application.Run(new Login());
            }
        }
    }
}

これで終わります.以下の2つの文章を参考にして、感謝の意を表します.
1、http://www.cnblogs.com/zjneter/archive/2008/01/08/1030066.html
2、http://blogs.msdn.com/b/noahc/archive/2006/10/19/register-a-custom-url-protocol-handler.aspx