C# win32 関数 FindExecutable の使用法
2022-03-20 15:52:46
関数のシグネチャです。
Win32の関数FindExecutableは、C#では次のようなメソッドシグネチャを持ちます。
[DllImport("shell32.dll")]
static extern IntPtr FindExecutable(string lpFile, string lpDirectory, [Out] StringBuilder lpResult);
また、署名は次のようになります。
[DllImport("shell32.dll")]
static extern int FindExecutable(string lpFile, string lpDirectory, [Out] StringBuilder lpResult);
このWin32関数が行うこと
指定されたファイルのデフォルトハンドラーパスを取得するために使用します。
例えば、E: \testbelt2.rfa というファイルをダブルクリックで実行する場合、そのファ イルを実行するデフォルトのプログラムが誰なのかを知るには、この関数を使用し て取得することができます。
この例のファイルの拡張子は.rfaで、そのwin32関数で、どのプログラムから起動しているのかを調べると、D: \Program FilesAutodesk2019Revit 2019㊞Revit.exe となり、拡張子 .rfa は Revit 2019 というソフトから起動していることがわかります。
本機能の使用例です。
var sb = new StringBuilder(1024);
Win32Api.FindExecutable(@"E:\test\belt2.rfa", null, sb);
var exePath = sb.ToString();
このメソッドを使用する際の注意事項
1. StringBuilderの場合、長さを設定する必要があります。例えば、1024。
2. パラメータ "lpDirectory" には、NULLを渡す必要があります。
これを行わないと、次のような例外が発生することがあります。
Hosted Debug Helper "FatalExecutionEngineError": "An error was encountered while running. The address of this error is 0x5762ffef on thread 0x4bc4. The error code is 0xc0000005. This error may be a bug in the CLR, or a bug in an unsafe or unverifiable part of the user's code. common sources of this bug include user errors in the processing of COM-interop or PInvoke seals, which can corrupt the stack."
お食事をお楽しみください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例