Rumah >pembangunan bahagian belakang >C++ >Bagaimana Menentukan Aplikasi Lalai Secara Pemrograman untuk Membuka Jenis Fail dalam Windows?
Menentukan Aplikasi Lalai untuk Membuka Jenis Fail pada Windows
Membuka fail dengan aplikasi lalai yang sesuai ialah tugas biasa untuk banyak aplikasi. Untuk mencapai ini dalam .NET Framework 2.0 menggunakan C#, anda boleh menggunakan kaedah System.Diagnostics.Process.Start. Walau bagaimanapun, kaedah ini memerlukan sambungan fail yang tepat untuk menentukan aplikasi lalai.
Untuk membuka fail tanpa sambungan khusus dalam aplikasi lalai yang dikehendaki, anda perlu mendapatkan semula aplikasi yang dikaitkan dengan jenis fail. Semasa menggunakan pendaftaran untuk menentukan perkaitan ini adalah pendekatan yang tidak boleh dipercayai, API Win32 menyediakan kaedah yang lebih mantap.
Fungsi AssocQueryString dalam pustaka Shlwapi.dll membolehkan anda menanyakan perkaitan untuk jenis fail tertentu. Menggunakan fungsi ini, anda boleh menentukan arahan lalai, boleh laku atau maklumat lain yang berkaitan untuk jenis fail.
Penggunaan sampel menunjukkan cara menggunakan AssocQueryString untuk mendapatkan arahan yang dikaitkan dengan sambungan fail:
using System; using System.Runtime.InteropServices; namespace FileAssociation { class Program { [DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)] public static extern uint AssocQueryString( AssocF flags, AssocStr str, string pszAssoc, string pszExtra, [Out] StringBuilder pszOut, ref uint pcchOut); public enum AssocF { None = 0x00000000, Init_NoRemapCLSID = 0x00000001, Init_ByExeName = 0x00000002, Open_ByExeName = 0x00000002, Init_DefaultToStar = 0x00000004, Init_DefaultToFolder = 0x00000008, NoUserSettings = 0x00000010, NoTruncate = 0x00000020, Verify = 0x00000040, RemapRunDll = 0x00000080, NoFixUps = 0x00000100, IgnoreBaseClass = 0x00000200, Init_IgnoreUnknown = 0x00000400, Init_Fixed_ProgId = 0x00000800, Is_Protocol = 0x00001000, Init_For_File = 0x00002000 } public enum AssocStr { Command = 1, Executable, FriendlyDocName, FriendlyAppName, NoOpen, ShellNewValue, DDECommand, DDEIfExec, DDEApplication, DDETopic, InfoTip, QuickTip, TileInfo, ContentType, DefaultIcon, ShellExtension, DropTarget, DelegateExecute, Supported_Uri_Protocols, ProgID, AppID, AppPublisher, AppIconReference, Max } public static string AssocQueryString(AssocStr association, string extension) { const int S_OK = 0x00000000; const int S_FALSE = 0x00000001; uint length = 0; uint ret = AssocQueryString(AssocF.None, association, extension, null, null, ref length); if (ret != S_FALSE) { throw new InvalidOperationException("Could not determine associated string"); } var sb = new StringBuilder((int)length); // (length - 1) will probably work too as the marshaller adds null termination ret = AssocQueryString(AssocF.None, association, extension, null, sb, ref length); if (ret != S_OK) { throw new InvalidOperationException("Could not determine associated string"); } return sb.ToString(); } public static void Main(string[] args) { string extension = ".txt"; string command = AssocQueryString(AssocStr.Command, extension); System.Diagnostics.Process.Start(command, "test.txt"); } } }
Atas ialah kandungan terperinci Bagaimana Menentukan Aplikasi Lalai Secara Pemrograman untuk Membuka Jenis Fail dalam Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!