ページ 11

マニフェスト埋め込み(XPスタイルへの変更)

Posted: 2007年6月27日(水) 23:31
by SPIRIT
AB 4.24.00 でコンパイル&正常に実行できることを確認しています。

このソースで埋め込み実験をする場合は、どうでもよいプログラムにアイコンなどのリソースを追加してから対して行ってください。
このソースを使ったことで実行ファイルが壊れても責任は負えません。

コード: 全て選択

Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (pFileName As String,
                                                                                  bDeleteExistingResources As Long) As HANDLE
Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (hUpdate As HANDLE,lpType As Long,
                                          lpName As Long,wLanguage As Long,lpData As String,cbData As Long) As Long
Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (hUpdate As HANDLE,fDiscard As Long) As Long

Const RT_MANIFESTID =  1
Const RT_MANIFEST   = 24

Dim path[MAX_PATH] As Byte, xml As String
Dim hUpdate As HANDLE

'適当にファイルパスを入れてください
lstrcpy(path,"")

'埋め込み開始!
hUpdate=BeginUpdateResource(path,FALSE)
If hUpdate=NULL Then
	MessageBox(0,"埋め込み開始失敗",0,MB_OK)
	End
End If

xml=Ex"<?xml version=\q1.0\q encoding=\qUTF-8\q standalone=\qyes\q?>\r\n"
xml=xml+Ex"<assembly xmlns=\qurn:schemas-microsoft-com:asm.v1\q manifestVersion=\q1.0\q>\r\n"
xml=xml+Ex"<description></description>\r\n"
xml=xml+Ex"<dependency>\r\n"
xml=xml+Ex"    <dependentAssembly>\r\n"
xml=xml+Ex"        <assemblyIdentity\r\n"
xml=xml+Ex"            type=\qwin32\q\r\n"
xml=xml+Ex"            name=\qMicrosoft.Windows.Common-Controls\q\r\n"
xml=xml+Ex"            version=\q6.0.0.0\q\r\n"
xml=xml+Ex"            processorArchitecture=\qX86\q\r\n"
xml=xml+Ex"            publicKeyToken=\q6595b64144ccf1df\q\r\n"
xml=xml+Ex"            language=\q*\q\r\n"
xml=xml+Ex"        />\r\n"
xml=xml+Ex"    </dependentAssembly>\r\n"
xml=xml+Ex"</dependency>\r\n"
xml=xml+"</assembly>"

If UpdateResource(hUpdate,RT_MANIFEST,RT_MANIFESTID,MAKELANGID(LANG_JAPANESE,SUBLANG_SYS_DEFAULT),xml,Len(xml))=0 Then
	MessageBox(0,"埋め込み失敗",0,MB_OK)
End If
EndUpdateResource(hUpdate,FALSE)

End
参考までに...。