Loopback сказал(а):А вообще вы уверены, что производительность этой функции зависит только от процессора?
ShellExecute("C:\Windows\Web\Wallpaper\Landscapes\img9.jpg")
ShellExecute("rundll32.exe", "shimgvw.dll ImageView_Fullscreen C:\Windows\Web\Wallpaper\Landscapes\img9.jpg", @WindowsDir)
Kalisnik сказал(а):Этот скрипт у меня выполняется 21.4 сек...
Поколдовал и изменил пару строк ;)Yashied сказал(а):Kalisnik сказал(а):Этот скрипт у меня выполняется 21.4 сек...
А как ты вообще его умудрился запустить на Windows 7, он написан для XP. На 7 вообще ничего этого нет.
#include <Array.au3>
Opt("WinTitleMatchMode", 2)
Dim $x = @DesktopWidth
Dim $y = @DesktopHeight/2
Dim $aData[1]
ShellExecute("rundll32.exe", "shimgvw.dll ImageView_Fullscreen C:\Windows\Web\Wallpaper\Landscapes\img9.jpg", @WindowsDir)
$hWin = WinWait("img9.jpg - Средство просмотра фотографий Windows")
WinActivate($hWin)
$Time = TimerInit()
For $i = 0 To 1200
If $x = 0 Then
$x = @DesktopWidth
$y -= 1
EndIf
Redim $aData[$i+1]
$aData[$i] = Hex(PixelGetColor($x, $y , $hWin))
$x -= 1
Next
MsgBox(262144,"",Round(TimerDiff($Time)/1000, 1))
_ArrayDisplay($aData)
#Include <Array.au3>
#Include <GDIPlus.au3>
#Include <ScreenCapture.au3>
#Include <WinAPI.au3>
$Timer = TimerInit()
_GDIPlus_Startup()
$hBitmap = _ScreenCapture_Capture('', 0, 0, 799, 599)
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$Width = _GDIPlus_ImageGetWidth($hImage)
$Height = _GDIPlus_ImageGetHeight($hImage)
$hArea = _GDIPlus_BitmapCloneArea($hImage, 0, 0, $Width, $Height, $GDIP_PXF32ARGB)
$tMap = _GDIPlus_BitmapLockBits($hArea, 0, 0, $Width, $Height, $GDIP_ILMREAD, $GDIP_PXF32ARGB)
$tBuff = DllStructCreate('byte[' & ($Width * $Height * 4) & ']', DllStructGetData($tMap, 'Scan0'))
$bData = DllStructGetData($tBuff, 1)
$sData = StringRegExpReplace(StringTrimLeft($bData, 2), '(.{8})', '\1 ')
$aData = StringSplit(StringStripWS($sData, 3), ' ', 2)
_GDIPlus_BitmapUnlockBits($hArea, $tMap)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ImageDispose($hArea)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_Shutdown()
ConsoleWrite(StringFormat('(' & $Width & ' x ' & $Height & ') - %.2f sec', TimerDiff($Timer) / 1000) & @CR)
;_ArrayDisplay($aData)
+1 ;DЯ думаю самая медленная функция - Sleep(). Например Sleep(2147483647) - выполняется 24 дня.
Массив пикселей можно получить более "правильным" способом, это должно быть намного быстрее, нежели PixelGetColor(). И кстати, не зависит от Aero, а то без него как-то уж очень скучно. Проверим?
Ну если уже на то пошло, то есть функция помедленнее - MsgBox ;)самая медленная функция - Sleep()
Массив пикселей можно получить более "правильным" способом, это должно быть намного быстрее, нежели PixelGetColor(). И кстати, не зависит от Aero, а то без него как-то уж очень скучно. Проверим?
For $i = 0 to 24
Sleep(2147483647)
Next
MsgBox(0, "", "Посмотреть конец света в 3D!")
While 1
For $i = 0 to 24
Sleep(2147483647)
Next
WEnd
MsgBox(0, "", "Вскопать тещину грядку :(")
#comments-start
While 1
For $i = 0 to 24
Sleep(2147483647)
Next
WEnd
#comments-end
MsgBox(0, "", "Смататься пораньше с работы")
Sleep(3000)
MsgBox(0, "", "...успев при этом спросить взаймы у проходящего мимо сотрудника по имени Сотрудник!")
Ну уж конечно мы вставили свои пути и названия окон))Yashied сказал(а):А как ты вообще его умудрился запустить на Windows 7, он написан для XP. На 7 вообще ничего этого нет.
Автор темы | Похожие темы | Форум | Ответы | Дата |
---|---|---|---|---|
Введение в машинное зрение или работа с нейросетями для самых маленьких | Разработка ботов | 34 |