ホームページ > バックエンド開発 > C++ > .NET で特定のファイル タイプのデフォルト アプリケーションをプログラムで見つけるにはどうすればよいですか?

.NET で特定のファイル タイプのデフォルト アプリケーションをプログラムで見つけるにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-04 10:08:39
オリジナル
502 人が閲覧しました

How Can I Programmatically Find the Default Application for a File Type in .NET?

Windows でファイルの種類を開くための既定のアプリケーションを見つける (.NET)

.NET Framework 2.0 では、C# を使用して次のことが可能です。 System.Diagnostics.Process.Start() を利用して、デフォルトのアプリケーションでファイルを開きます。ただし、特定の拡張子のないファイルの場合、関連付けられているアプリケーションを判断するのは難しい場合があります。

Win32 API の使用

この制限を克服するには、Win32 API 関数 AssocQueryString( )を推奨します。この関数は、特定のファイル タイプに関連付けられた文字列を返し、開発者がデフォルト アプリケーションの実行可能パスを抽出できるようにします。

以下のコード スニペットは、AssocQueryString() の使用方法を示しています。

using System.Runtime.InteropServices;
using System.Text;

public static string GetDefaultApplicationForExtension(string extension)
{
    const int S_OK = 0;
    const int S_FALSE = 1;

    uint length = 0;
    uint ret = AssocQueryString(AssocF.None, AssocStr.Executable, extension, null, null, ref length);
    if (ret != S_FALSE)
    {
        throw new InvalidOperationException("Could not determine associated string");
    }

    StringBuilder sb = new StringBuilder((int)length); // (length-1) will probably work too as the marshaller adds null termination
    ret = AssocQueryString(AssocF.None, AssocStr.Executable, extension, null, sb, ref length);
    if (ret != S_OK)
    {
        throw new InvalidOperationException("Could not determine associated string"); 
    }

    return sb.ToString();
}
ログイン後にコピー

この関数を呼び出し、引数としてファイル拡張子を指定することにより、開発者はデフォルトのアプリケーション パスを取得し、目的のアプリケーションでファイルを開くことができるようになります。プログラム的に。

以上が.NET で特定のファイル タイプのデフォルト アプリケーションをプログラムで見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート