當前位置:編程學習大全網 - 編程語言 - 用C#編寫壹個程序,要求打開壹個自己畫有圓的圖片,可以測量出圓的直徑

用C#編寫壹個程序,要求打開壹個自己畫有圓的圖片,可以測量出圓的直徑

VS的安裝部署不太好用,如果要在安裝的時候就進行文件關聯可以去找壹些專門的安裝打包工具來打包,在安裝的時候可以設置用命令來修改註冊表進行文件關聯。下面要說的方法不是這種。

下面有兩個函數,壹個是關聯文件,壹個是刪除文件關聯。思路是這樣的,在程序安裝後第壹次運行程序時使用SaveReg()方法關聯文件,以後就不自動關聯了。在Form_Load事件裏先判斷是不是第壹次運行,然後用:

SaveReg(@"C:\youEXE.exe", ".jpg");

註意,上面的“C:\youEXE.exe”換成妳的程序的絕對地址,地址可以用代碼來獲取。

這樣只是關聯了文件,不知道妳有沒有在main函數裏設置獲取命令的語句,把Main()函數改成:

static void Main(string[] args)

{

}

不知道妳對這個熟不熟,當文件關聯後(比如.jpg文件),雙擊.jpg文件打開,程序的主函數會接受到打開命令,這些命令的字符串就存儲在數組string[] args裏面。其中args[0]裏是命令的條數,args[1]是第壹條命令,args[2]是第壹條命令的參數。比如雙擊.jpg文件打開後,這裏的:

args[0]=3;

args[1]="open";

args[2]="圖片地址";

那麽可以把args[2]中的圖片地址顯示出來就實現了妳要的雙擊文件打開了。

我暈,打字真累。。

下面的是關聯文件的兩個方法:

//註意要引用:using Microsoft.Win32;

/// <summary>

/// 設置文件關聯

/// </summary>

/// <param name="p_Filename">程序的名稱</param>

/// <param name="p_FileTypeName">擴展名 </param>

public static void SaveReg(string p_Filename,string p_FileTypeName)

{

RegistryKey _RegKey = Registry.ClassesRoot.OpenSubKey("", true); //打開註冊表

RegistryKey _VRPkey = _RegKey.OpenSubKey(p_FileTypeName);

if (_VRPkey != null) _RegKey.DeleteSubKey(p_FileTypeName, true);

_RegKey.CreateSubKey(p_FileTypeName);

_VRPkey = _RegKey.OpenSubKey(p_FileTypeName, true);

_VRPkey.SetValue("", "Exec");

_VRPkey = _RegKey.OpenSubKey("Exec", true);

if (_VRPkey != null) _RegKey.DeleteSubKeyTree("Exec"); //如果等於空 就刪除註冊表DSKJIVR

_RegKey.CreateSubKey("Exec");

_VRPkey = _RegKey.OpenSubKey("Exec", true);

_VRPkey.CreateSubKey("shell");

_VRPkey = _VRPkey.OpenSubKey("shell", true); //寫入必須路徑

_VRPkey.CreateSubKey("open");

_VRPkey = _VRPkey.OpenSubKey("open", true);

_VRPkey.CreateSubKey("command");

_VRPkey = _VRPkey.OpenSubKey("command", true);

string _PathString = "\"" + p_Filename + "\" \"%1\"";

_VRPkey.SetValue("", _PathString); //寫入數據

}

/// <summary>

/// 刪除文件關聯

/// </summary>

/// <param name="p_FileTypeName">擴展名 .VRD </param>

public static void DelReg(string p_FileTypeName)

{

RegistryKey _Regkey = Registry.ClassesRoot.OpenSubKey("", true);

RegistryKey _VRPkey = _Regkey.OpenSubKey(p_FileTypeName);

if (_VRPkey != null) _Regkey.DeleteSubKey(p_FileTypeName, true);

if (_VRPkey != null) _Regkey.DeleteSubKeyTree("Exec");

}

  • 上一篇:結構化分析方法是面向
  • 下一篇:中職數學基礎模塊上冊 [中職機加工專業數學職業模塊開發與實踐]
  • copyright 2024編程學習大全網