131738
发表于 2012-6-11 19:37:05
我这测试没有返回 -1 的,空图标也是返回的 0 ,那样的话,原作
这部分就没问题…
afan 发表于 2012-6-11 19:32 http://www.autoitx.com/images/common/back.gif
请看看我 14 楼的回复。。。。
user3000
发表于 2012-6-11 19:44:13
回复 15# afan
空图标? 我用不存在的文件或没有包含图标的文件再进行测试, 结果还是返回 -1 呀?
会不会又是AUTOIT版本搞出来的差异呢?
我是 3.3.7.14 及 SVN 3.3.9.4 上做的测试.
131738
发表于 2012-6-11 19:59:53
我这测试没有返回 -1 的,空图标也是返回的 0 ,那样的话,原作
这部分就没问题…
afan 发表于 2012-6-11 19:32 http://www.autoitx.com/images/common/back.gif
看测试截图
1.运行原编辑的exe程序:
2.运行汉化并修改循环语句的编译程序:
haijie1223
发表于 2012-6-11 20:05:35
回复 13# happytc
注册日期虽然一样,但是对于编程,我比你却差得远了,向你学习才是。
131738
发表于 2012-6-11 20:13:27
本帖最后由 131738 于 2012-6-11 20:14 编辑
回复131738
应该是担心某DLL'做工'不好, 预防提取它的图标时, 即使没到最后一个图标也出错的这 ...
user3000 发表于 2012-6-11 15:31 http://www.autoitx.com/images/common/back.gif
会过神来了,完成`全部图标提取后,继续循环就会继续返回4或5个 -1(但 0 肯定不行)满足条件退出循环!
afan
发表于 2012-6-11 20:28:23
本帖最后由 afan 于 2012-6-11 22:05 编辑
回复 20# 131738
那样似乎并不准确,这样试试:
#include <GuiListView.au3>
#include <GuiImageList.au3>
Local $imagefile = @SystemDir & '\shell32.dll'
Local $hGui = GUICreate('', 560, 280)
Local $iListView = GUICtrlCreateListView('', 5, 5, 550, 270)
_GUICtrlListView_SetView($iListView, 1)
Local $PicID = 0
Local $hIconImage = _GUIImageList_Create(32, 32, 5, 3)
_GUICtrlListView_SetImageList($iListView, $hIconImage, 0)
Local $vTotal = _WinAPI_ExtractIconEx($imagefile, -1, 0, 0, 0), $vTotalBak = $vTotal
Local $ts = TimerInit()
While $vTotal
_GUIImageList_AddIcon($hIconImage, $imagefile, $PicID, 1)
_GUICtrlListView_AddItem($iListView, $PicID, $PicID)
$vTotal -= 1
$PicID += 1
Wend
Local $te = Round(TimerDiff($ts))
WinSetTitle($hGui, '', '包含图标数量:' & $vTotalBak & '; 耗时:' & $te & ' 毫秒。')
GUISetState()
While GUIGetMsg() + 3
WEnd或者#include <GuiListView.au3>
#include <GuiImageList.au3>
Local $imagefile = @SystemDir & '\shell32.dll'
Local $hGui = GUICreate('', 560, 280)
Local $iListView = GUICtrlCreateListView('', 5, 5, 550, 270)
_GUICtrlListView_SetView($iListView, 1)
Local $hIconImage = _GUIImageList_Create(32, 32, 5, 3)
_GUICtrlListView_SetImageList($iListView, $hIconImage, 0)
Local $vTotal = _WinAPI_ExtractIconEx($imagefile, -1, 0, 0, 0), $vTotalBak = $vTotal, $PicID
Local $ts = TimerInit()
For $PicID = 0 To $vTotal - 1
_GUIImageList_AddIcon($hIconImage, $imagefile, $PicID, 1)
_GUICtrlListView_AddItem($iListView, $PicID, $PicID)
Next
Local $te = Round(TimerDiff($ts))
WinSetTitle($hGui, '', '包含图标数量:' & $vTotalBak & '; 耗时:' & $te & ' 毫秒。')
GUISetState()
While GUIGetMsg() + 3
WEnd
user3000
发表于 2012-6-11 20:29:07
回复 18# 131738
前辈用的什么机器? 竟然要40秒, 相关代码应该还处理别的事情吧?
我单单显示该文件的图标, 只要5秒左右.
另外, 连A大也说空图标是返回0, 我真怀疑又是AU3版本不一致弄出的问题了.
afan
发表于 2012-6-11 20:36:41
“$Limiter = 5” “限制5” 在我看来不但不准,而且多余。
“For $iCntRow = 0 To 9999999”这个就更无语了…
afan
发表于 2012-6-11 20:43:17
回复131738
前辈用的什么机器? 竟然要40秒, 相关代码应该还处理别的事情吧?
我单单显示该文件的图标 ...
user3000 发表于 2012-6-11 20:29 http://www.autoitx.com/images/common/back.gif
上传那个dll看看…
顽固不化
发表于 2012-6-11 20:47:50
元老遇到新问题,围观一下
user3000
发表于 2012-6-11 20:51:28
回复 24# afan
好咧, 来了!
afan
发表于 2012-6-11 20:59:44
回复 26# user3000
嗯,我的差不多,6、7秒
131738
发表于 2012-6-11 21:00:54
元老遇到新问题,围观一下
顽固不化 发表于 2012-6-11 20:47 http://www.autoitx.com/images/common/back.gif
谢谢关注,不是遇到问题,我修改源代码解决了,这里只是想讨教这个老外的IF循环。。。
131738
发表于 2012-6-11 21:04:35
回复131738
前辈用的什么机器? 竟然要40秒, 相关代码应该还处理别的事情吧?
我单单显示该文件的图标 ...
user3000 发表于 2012-6-11 20:29 http://www.autoitx.com/images/common/back.gif
瞎估的,时间概念不足,有点老年痴呆。。。。
user3000
发表于 2012-6-11 21:25:46
回复 29# 131738
哈哈!
前几天网购个眼罩, 要先付款, 当时就用网银支付了.
因为那几天值夜班, 所以叫别人代收, 但还傻傻地多给她一份钱, 说是货款...
2天后,东西还没到, 一查竟然从北京发的. 我就跟她说了.
她问, 这边的京东不是由广州出货吗?
我说, 是啊. 但这回是第三方发货.
她又问: 第三方不是先交钱吗? 你还给我钱?
好像是哦! 我当时就有点凌乱了.
好吧, 我也得承认自己也老年痴呆了!