Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan Aplikasi Lalai Secara Pengaturcaraan untuk Jenis Fail dalam Windows?

Bagaimanakah Saya Boleh Menentukan Aplikasi Lalai Secara Pengaturcaraan untuk Jenis Fail dalam Windows?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-04 01:46:40276semak imbas

How Can I Programmatically Determine the Default Application for a File Type in Windows?

Mendapatkan semula Aplikasi Lalai untuk Jenis Fail dalam Windows

Untuk menentukan aplikasi lalai untuk membuka fail jenis tertentu, anda boleh menggunakan Windows Registry. Dalam HKEY_CLASSES_ROOT, setiap sambungan fail mempunyai kunci yang sepadan. Aplikasi lalai disimpan dalam nilai Lalai kunci ini.

Pertimbangkan contoh berikut untuk membuka fail HTML:

  • Navigasi ke HKEY_CLASSES_ROOT.html
  • Default nilai akan mengandungi kunci pendaftaran untuk aplikasi lalai, mis., HTMLFile

Kaedah ini, bagaimanapun, mempunyai had. Ia bergantung pada pelaksanaan pendaftaran, yang mungkin berbeza merentas versi Windows. Pendekatan yang lebih dipercayai melibatkan fungsi Win32 API AssocQueryString.

AssocQueryString

AssocQueryString membolehkan anda menanyakan aplikasi lalai untuk fail tertentu taip.

Sintaks:

uint AssocQueryString(
    AssocF flags, 
    AssocStr str,  
    string pszAssoc, 
    string pszExtra, 
    [Out] StringBuilder pszOut, 
    ref uint pcchOut
); 

Bendera:

  • AssocF.None: Gunakan tetapan lalai
  • AssocF.Open_ByExeName: Pertanyaan untuk lalai aplikasi dengan nama boleh lakunya

Str:

  • AssocStr.Command: Dapatkan semula arahan yang digunakan untuk membuka fail dengan yang ditentukan sambungan

Contoh:

using System.Runtime.InteropServices;

[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
);

AssocF flags = AssocF.Open_ByExeName;
AssocStr str = AssocStr.Command;
StringBuilder sb = new StringBuilder();
uint pcchOut = 0;

uint ret = AssocQueryString(flags, str, ".txt", null, sb, ref pcchOut);
if (ret == 0)
{
    Console.WriteLine($"Default text editor: {sb.ToString()}");
}
else
{
    Console.WriteLine("Error retrieving default text editor.");
}

Pendekatan ini menyediakan cara yang lebih dipercayai untuk menentukan aplikasi lalai untuk jenis fail dalam Windows.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Aplikasi Lalai Secara Pengaturcaraan untuk Jenis Fail dalam Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn