关于图片问题,除了 Fileinstall 还有其它办法能将图片内置吗?
感觉用Fileinstall真的很不好,很容易被认成是病毒,而且每次都释放出来容易吓到人,就不能真正的内置吗?我记得以前学 delphi 时,图片是可以直接内置到程序中的,而不是每次都释放。 回复 1# 木头人参考 resources 的UDF. 回复 1# 木头人
给你一个函数,是把保存为字符串形式的图片直接放在控件上:
;$s_Binary为二进制形式的字符串,$ctrl控件ID
Func _BinaryToCtrl($s_Binary, $ctrl) ;code by Montfrooij
Local $b_PicData = Binary($s_Binary)
Local $i_PicLength = BinaryLen($b_PicData)
Local $t_PicStruct = DllStructCreate("byte[" & $i_PicLength & "]")
DllStructSetData($t_PicStruct, 1, $b_PicData)
Local $p_PicMemory = DllStructGetPtr($t_PicStruct)
Local $h_Memory = _MemGlobalAlloc($i_PicLength, 2)
Local $p_Memory = _MemGlobalLock($h_Memory)
_MemMoveMemory($p_PicMemory, $p_Memory, $i_PicLength)
_MemGlobalUnlock($h_Memory)
Local $p_Stream = DllCall("Ole32.dll", "int", "CreateStreamOnHGlobal", "int", $h_Memory, "long", 1, "Int*", 0)
$p_Stream = $p_Stream
Local $p_Bitmap = DllCall($ghGDIPDll, "int", "GdipCreateBitmapFromStream", "ptr", $p_Stream, "int*", 0)
$p_Bitmap = $p_Bitmap
$t_PicStruct = 0
$hBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($p_Bitmap)
_GDIPlus_ImageDispose($p_Bitmap)
Local $h_Wnd = GUICtrlGetHandle($ctrl)
Local $a_Ret = DllCall("User32.dll", "hwnd", "SendMessage", "hwnd", $h_Wnd, "int", 0x0172, "int", 0, "int", $hBitmap2)
If $a_Ret <> 0 Then _WinAPI_DeleteObject($a_Ret)
EndFunc
内置似乎现在还没有解决存在的问题. 其实,为什么要Install那种方式偷偷摸摸的呢,直接跟exe打包在一起不行呀?
你看正规点的软件,都是直接把图片放在程序目录。现在早就不流行单EXE文件时代了吧 内置似乎现在还没有解决存在的问题.
mo_shaojie 发表于 2011-8-9 08:19 http://www.autoitx.com/images/common/back.gif
啥意思? 其实,为什么要Install那种方式偷偷摸摸的呢,直接跟exe打包在一起不行呀?
你看正规点的软件,都是直接把 ...
happytc 发表于 2011-8-9 08:21 http://www.autoitx.com/images/common/back.gif
可能怕别人替换图片吧,比如logo 内置似乎现在还没有解决存在的问题.
mo_shaojie 发表于 2011-8-9 08:19 http://www.autoitx.com/images/common/back.gif
早解决了吧,方法很多,但基本思路和楼上差不多 按楼主的意图,3楼的办法是最简单的,不过楼主注意了,你的图片过大的话,脚本小不了 新手学习中。。。
kimgmax 发表于 2011-8-15 09:58 http://www.autoitx.com/images/common/back.gif
你厉害,整个求助板块都被你“学习”完了。
页:
[1]