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

オープンソース形式でコードを共有するフォーラムです。お役立ちコード、あなたも投稿してみませんか?
返信する
メッセージ
作成者
SPIRIT
記事: 9
登録日時: 2005年5月31日(火) 22:59
お住まい: 兵庫県神戸市
連絡する:

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

#1 投稿記事 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
参考までに...。
返信する