日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

href 带参数 打开exe_js调用winform程序(带参数)

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 href 带参数 打开exe_js调用winform程序(带参数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們會發現,我們點擊迅雷下載的時候? 網頁可以調用應用程序,而且連接會傳入迅雷,這個是怎么做到的呢?

原理: 先注冊表中添加軟件的具體信息,然后通過 href 可以直接調用

1.寫入注冊表信息,注冊,如果不需要參數 只要第一個HKEY_CLASSES_ROOT\test 段落

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\test]"URL Protocol"="C://xx//xx.exe"[HKEY_CLASSES_ROOT\test\DefaultIcon]

@="C://xx//xx.exe"[HKEY_CLASSES_ROOT\test\shell]

[HKEY_CLASSES_ROOT\test\shell\open]

[HKEY_CLASSES_ROOT\test\shell\open\command]

@="C:\\xx\\xx.exe %1"

winfrom寫入注冊表(模擬上面直接注冊注冊表,減少用戶操作)

usingMicrosoft.Win32;//使用CreateSubKey()HKEY_CLASSES_ROOT下創建子項

RegistryKey hklm =Registry.ClassesRoot;

RegistryKey key= hklm.CreateSubKey(@"test");

key.SetValue("URL Protocol", "C://xx//xx.exe");

RegistryKey key2= key.CreateSubKey(@"DefaultIcon");

key2.SetValue("", "C://xx//xx.exe");

RegistryKey key3= key.CreateSubKey(@"shell");

RegistryKey key4= key3.CreateSubKey(@"open");

RegistryKey key5= key4.CreateSubKey(@"command");

key5.SetValue("", "C:\\xx\\xx.exe %1");

hklm.Close();

key.Close();

MessageBox.Show("初始化成功");

2.關聯

html端

var sessionId = "1";

location.href= "xx://" + sessionId;

winform端,在Program.cs 修改main方法

[STAThread]

staticvoidMain(string[] args)

{if (args.Length > 0)

{

MessageBox.Show("來了");

MessageBox.Show(args[0].ToString());

}

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(newMain());

}

--------------------------------其他注冊表操作介紹---------------------------------------------------------

注冊表巢

在注冊表中,最上面的節點是注冊表巢(registry hive)。

HKEY_CLASSES_ROOT(HKCR) ? ?包含系統文件類型的細節,以及應用程序可以打開的文件類型,它還包含所有COM組件的注冊信息。

HKEY_CURRENT_USER(HKCU) ? ?包含用戶目前登陸的機器的用戶配置,包括桌面設置、環境變量、網絡和打印機連接和其他定義用戶操作環境的變量。

HKEY_LOCAL_MACHINE(HKLM) ? ?是一個很大的巢,其中包含所有安裝到機器上的軟件和硬件的信息。

HKEY_USERS(HKUSR) ? ? ? ? ? ? ? ?包含所有用戶的用戶配置。

HKEY_CURRENT_CONFIG(HKCF) ?包含機器上硬件的信息。

二.注冊表類及常用屬性和函數

using Microsoft.Win32;

這個命名空間包含了注冊表相關的類。Registry類、RegistryKey類。

Registry類封裝了注冊表的七個基本主鍵:

Registry.ClassesRoot

對應于HKEY_CLASSES_ROOT主鍵

Registry.CurrentUser

對應于HKEY_CURRENT_USER主鍵

Registry.LocalMachine

對應于 HKEY_LOCAL_MACHINE主鍵

Registry.User

對應于 HKEY_USER主鍵

Registry.CurrentConfig

對應于HEKY_CURRENT_CONFIG主鍵

Registry.DynDa

對應于HKEY_DYN_DATA主鍵

Registry.PerformanceData

對應于HKEY_PERFORMANCE_DATA主鍵

RegistryKey類封裝了對注冊表的基本操作。包括讀、寫、刪等操作的常用函數:

Name

鍵的名稱(只讀)

SubKeyCount

鍵的子鍵個數

ValueCount

鍵包含的值的個數

Close()

關閉鍵

CreateSubKey()

創建給定名稱的子鍵

DeleteSubKey()

刪除指定的子鍵

DeleteSubKeyTree()

遞歸刪除子鍵及其所有的子鍵

DeleteValue()

從鍵中刪除一個指定的值

GetAccessControl()

返回指定注冊表鍵的訪問控制表

GetSubKeyNames()

返回包含子鍵名稱的字符串數組

GetValue()

返回指定的值

GetValueKind()

返回指定的值,檢索其注冊表數據類型

GetValueNames()

返回一個包含所有鍵值名稱的字符串數組

OpenSubKey()

返回表示給定子鍵的RegistryKey實例引用

SetAccessControl()

把訪問控制表(ACL)應用于指定的注冊表鍵

SetValue()

設置指定的值

注冊表項的創建、打開、刪除

1,創建

//使用CreateSubKey()在SOFTWARE下創建子項test

RegistryKey hklm = Registry.LocalMachine;

RegistryKey hkSoftWare = hklm.CreateSubKey(@"SOFTWARE\test");

hklm.Close();

hkSoftWare.Close();

2,打開

//使用OpenSubKey()打開項,獲得RegistryKey對象,當路徑不存在時,為Null。第二個參數為true,表示可寫,可讀,可刪;省略時只能讀。

RegistryKey hklm = Registry.LocalMachine;

RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test",true);

hklm.Close();

hkSoftWare.Close();

3,刪除

//主要用到了DeleteSubKey(),刪除test項

RegistryKey hklm = Registry.LocalMachine;

hklm.DeleteSubKey(@"SOFTWARE\test", true); //為true時,刪除的注冊表不存在時拋出異常;當為false時不拋出異常。

hklm.Close();

四、注冊表鍵值的創建、打開和刪除

1,創建

//主要用到了SetValue(),表示在test下創建名稱為Name,值為RegistryTest的鍵值。第三個參數表示鍵值類型,省略時,默認為字符串

RegistryKey hklm = Registry.LocalMachine;

RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test",true);

hkSoftWare.SetValue("Name", "RegistryTest", RegistryValueKind.String);

hklm.Close();

hkSoftWare.Close();

2,打開

//主要用到了GetValue(),獲得名稱為"Name"的鍵值

RegistryKey hklm = Registry.LocalMachine;

RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test", true);

string sValue = hkSoftWare.GetValue("Name").ToString();

hklm.Close();

hkSoftWare.Close();

3,刪除

//主要用到了DeleteValue(),表示刪除名稱為"Name"的鍵值,第二個參數表示是否拋出異常

RegistryKey hklm = Registry.LocalMachine;

RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test", true);

hkSoftWare.DeleteValue("Name", true);

hklm.Close();

hkSoftWare.Close();

五、判斷注冊表項、注冊表鍵值是否存在

//判斷注冊表項是否存在

private bool IsRegistryKeyExist(string sKeyName)

{

string[] sKeyNameColl;

RegistryKey hklm = Registry.LocalMachine;

RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE");

sKeyNameColl = hkSoftWare.GetSubKeyNames(); //獲取SOFTWARE下所有的子項

foreach (string sName in sKeyNameColl)

{

if (sName == sKeyName)

{

hklm.Close();

hkSoftWare.Close();

return true;

}

}

hklm.Close();

hkSoftWare.Close();

return false;

}

//判斷鍵值是否存在

private bool IsRegistryValueNameExist(string sValueName)

{

string[] sValueNameColl;

RegistryKey hklm = Registry.LocalMachine;

RegistryKey hkTest = hklm.OpenSubKey(@"SOFTWARE\test");

sValueNameColl = hkTest.GetValueNames(); //獲取test下所有鍵值的名稱

foreach (string sName in sValueNameColl)

{

if (sName == sValueName)

{

hklm.Close();

hkTest.Close();

return true;

}

}

hklm.Close();

hkTest.Close();

return false;

}

六、程序自啟動程序

//開啟程序自啟動

string path = Application.ExecutablePath;

RegistryKey rk = Registry.LocalMachine;

RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");

rk2.SetValue("JcShutdown", path);

rk2.Close();

rk.Close();

//關閉程序自啟動

string path = Application.ExecutablePath;

RegistryKey rk = Registry.LocalMachine;

RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");

rk2.DeleteValue("JcShutdown", false);

rk2.Close();

rk.Close();

總結

以上是生活随笔為你收集整理的href 带参数 打开exe_js调用winform程序(带参数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。