GetEnhMetaFileDescription 拡張メタファイルの作成元アプリケーションおよび画像名の取得

Cの宣言:

BOOL GetEnhMetaFileDescription(
	HENHMETAFILE hEmf,
	UINT DescSize,
	LPTSTR Descrption);

VBの宣言:

Declare Function GetEnhMetaFileDescription Lib "gdi32" Alias "GetEnhMetaFileDescriptionA" ( _
	ByVal hEmf As Long, _
	ByVal DescSize As Long, _
	ByVal Descrption As String) As Long

説明:

拡張メタファイル中に含まれる、拡張メタファイルの作成元アプリケーション名及び拡張メタファイルの画像名を取得する。

関数の実行に成功すると、DescriptionにMULTI_SZの形式で文字列が格納される。

引数の意味は以下の通り。
hEmf 取得元の拡張メタファイルのハンドル。
DescSize Descriptionのサイズ。
Description 取得結果を格納するバッファ。NULLを指定可能。

戻り値は、Descriptionに設定された返却データのサイズである。DescriptionにNULLを指定した場合、必要なサイズが返される。hEmfで指定された拡張メタファイル中にアプリケーション名・画像名が含まれていない場合、0が返される。関数の実行に失敗した場合、GDI_ERRORが返される。

VBのサンプル:

"c:\pic\test.emf"という拡張メタファイルを作成したアプリケーションの名前およびメタファイルの画像名を表示する。
' 拡張メタファイルのアプリケーション名・画像名を表示
Private Sub Command1_Click()

    Dim hEmf As Long '拡張メタファイルのハンドル
    Dim r As RECT '描画する領域
    Dim S As String * 1000
    Dim AppName As String
    Dim PicName As String
    Dim I As Long
    
    '拡張メタファイルのオープン
    hEmf = GetEnhMetaFile("c:\pic\test.emf")
    
    'コメントの取得
    GetEnhMetaFileDescription hEmf, 1000, S
    
    '作成元アプリケーション名の取得
    I = InStr(S, vbNullChar)
    AppName = Left(S, I - 1)
    
    '画像名の取得
    PicName = Mid(S, I + 1)
    PicName = Left(PicName, InStr(PicName, vbNullChar) - 1)
    
    '結果の表示
    MsgBox "AppName: " & AppName & vbCrLf _
        & "PicName: " & PicName
    
    '拡張メタファイルのクローズ
    DeleteEnhMetaFile hEmf

End Sub

(original text:2000/01/27 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。