超级死人
发表于 2012-6-11 23:05:53
这样的学术讨论真是让人舒心...必须标记.
魔导
发表于 2012-6-12 13:55:06
大神们都聚集了,打包膜拜..........
纯膜拜(小弟看不懂)
lchl0588
发表于 2012-6-12 16:27:49
本帖最后由 lchl0588 于 2012-6-12 18:16 编辑
回复 1# 131738
先看下代码#AutoIt3Wrapper_au3check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
;-------------自个添加部分-------
Dim $a, $Limiter = 5;这个就是规定范围数.....
;-----------------结束-------------
_Main()
Func _Main()
Local $listview, $hImage
Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
GUICreate("ImageList AddIcon", 400, 300)
$listview = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($listview, $exStyles)
GUISetState()
;-----------------代码来自UDF 中“_GUIImageList_AddIcon ”-------------
; 加载图像
$hImage = _GUIImageList_Create(16, 16, 5, 3)
$a = _GUIImageList_AddIcon($hImage, @DesktopDir & "\ico1.dll", 1, True)
;@DesktopDir & "\ico.dll 存在,那$a=0 成立;不存在则不成立,那运行 If Not $a=0Then 内的代码
For $1 = 0 To 6 ;有趣的地方:如果$a=0成立时,修改下 To 后面的数测试下,还有不成立会出什么情况呢?多试就知道了
If $a = 0 Then ; 条件成立时,运行下面(也就是$a中DLL文件存在才成立)
$Limiter = $Limiter - 1 ;这里规定循环次数 也就是 $1 or $Limiter(不知理解是否有误?)
If $Limiter < 1 Then ExitLoop
EndIf
If Not $a = 0 Then
MsgBox(0,"不成立","看到这几个字就说明 含有图标的dll文件没找到,同时不带图标按照 to后的次数决定"&@CR&"还有点几次“确定”是不是与TO后的数+1=的数相同?")
EndIf
_GUICtrlListView_SetImageList($listview, $hImage, 1)
; 添加列
_GUICtrlListView_AddColumn($listview, "Column 1", 120)
; 添加项目
_GUICtrlListView_AddItem($listview, "Row 1: Col 1", 0)
_GUICtrlListView_AddItem($listview, "Row 2: Col 2", 1)
Next
; 循环至用户退出
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
然后再说下上述代码$a的部分:True 与False 的区别,如下图:
这是纠正后测试的结果图
131738
发表于 2012-6-12 17:16:47
本帖最后由 131738 于 2012-6-12 17:17 编辑
回复131738
先看下代码:然后再说下上述代码$a的部分:True 与False 的区别,如下图:
lchl0588 发表于 2012-6-12 16:27 http://www.autoitx.com/images/common/back.gif
谢谢你的代码,更谢谢你热心!!!
1.附件无图标
2.这个循环只是重复添加,重复次数视 To 后的设置而定(不知是否理解有误)
问题:要求一次完成 dll 文件的图标添加,不需重复添加(这个无使用需要)
不知你看了我 18 楼的截图没有?
运行原代码,循环远超图标实际总数还在继续循环,似乎不达一千万次不罢休!
6 分钟循环 10 万次,完成一千万次大约 10 小时吧!没试这个,不知循环完成后的结果!应该会出现图标吧。。。。
总之,我觉得原循环代码肯定是错误的!但作者能做出如此大的程序,最后发表的代码肯定经过 N 多次调试,真不知这其中的缘故!
再次谢谢你的热心回帖!!!
131738
发表于 2012-6-12 17:25:12
回复131738
先看下代码:然后再说下上述代码$a的部分:True 与False 的区别,如下图:
lchl0588 发表于 2012-6-12 16:27 http://www.autoitx.com/images/common/back.gif
什么系统或工具?图2,图3的红色提示不会是另做的提示框吧。。。。。
afan
发表于 2012-6-12 17:29:52
回复 34# 131738
原作肯定是有问题的,或者说是不严谨的。21#、23# 难道没看(⊙_⊙)?
lchl0588
发表于 2012-6-12 17:34:55
回复 34# 131738
第一条:附件是ICO.DLL文件,方便测试而已,也可以用shell32.dll代替 上传的原因是在测试过程中弄明白true与false之间的区别!!!
第二条:恩,理解正确!TO后的数字是这段代码运行的次数! 但$a=0这个条件只决定图标选取的个数!!!TO后的一次,是运行$a=0中整个图标图!
lchl0588
发表于 2012-6-12 17:45:53
本帖最后由 lchl0588 于 2012-6-12 18:11 编辑
回复 35# 131738
不好意思,测试过程中,不断纠正时截的图,代码已完善些,有误请指正!!!!!!!!!
131738
发表于 2012-6-12 18:59:56
回复131738
原作肯定是有问题的,或者说是不严谨的。21#、23# 难道没看(⊙_⊙)?
afan 发表于 2012-6-12 17:29 http://www.autoitx.com/images/common/back.gif
呵呵。。。。我的帖子,回复必看的。。。。
xx44t10
发表于 2012-6-12 20:30:13
虽然不是很明白 。这贴得回啊。。
131738
发表于 2012-6-12 21:14:22
回复131738
不好意思,测试过程中,不断纠正时截的图,代码已完善些,有误请指正!!!!!!!!!
lchl0588 发表于 2012-6-12 17:45 http://www.autoitx.com/images/common/back.gif
再次谢谢!!!
afan
发表于 2012-6-12 22:28:13
lchl0588 很热心,不过,似乎总能将简单的问题解释得很复杂,哈~
原作是用_GUIImageList_AddIcon() 添加图标进图像列表的,但 _GUIImageList_AddIcon 函数内部其实是调用的 api 函数: _WinAPI_ExtractIconEx(),但似乎作者不知?或者不知道 _WinAPI_ExtractIconEx($imagefile, -1, 0, 0, 0) 就可以获得图标的总数?所以来了个 For $iCntRow = 0 To 9999999 的循环查询图标及总数。而又担心索引号的不连续(或做工不精致?)又加了个 $Limiter = 5 来安慰下可能会受伤5次的心… 还重复实际上只需调用一次的 _GUICtrlListView_SetImageList()。在我这个菜鸟看来这些都是多余的。
用_WinAPI_ExtractIconEx() 先获取图标总数,再在总数范围内循环调用内部使用 _WinAPI_ExtractIconEx() 索引机制的 _GUIImageList_AddIcon() ,无需理会其返回值是0还是-1,不会多一个,也不会少一个。
131738
发表于 2012-6-12 22:39:23
lchl0588 很热心,不过,似乎总能将简单的问题解释得很复杂,哈~
原作是用_GUIImageList_AddIcon() 添加 ...
afan 发表于 2012-6-12 22:28 http://www.autoitx.com/images/common/back.gif
我就是用 _WinAPI_ExtractIconEx($imagefile, -1, 0, 0, 0) 修改原循环后发布了汉化版的,
而且修改的代码也传给了作者,作者回复意为“应该退出循环的,嗯。。。。”倒是没否定我的
修改,相反否定了 happytc 帮助修改的另一个关于文件复制的代码,真不理解作者。。。。
afan
发表于 2012-6-12 22:47:51
回复 43# 131738
happytc 的水平应该不会在其下,或许比德国佬更高~
那个复制文件的代码有点多余小瑕疵:
If @error Then
Return SetError(@error, 2, 0)
Return 0 ;多余
Else
If $aRet Then
Return SetError($aRet, 1, 0)
Return 0 ;多余
131738
发表于 2012-6-13 01:02:26
回复131738
happytc 的水平应该不会在其下,或许比德国佬更高~
那个复制文件的代码有点多余小瑕疵: ...
afan 发表于 2012-6-12 22:47 http://www.autoitx.com/images/common/back.gif
呵呵。。。还真没注意这个多余。。。。