chishingchan 发表于 2019-11-29 13:43:52

[已解决] 有什么语句可以将自我窗口输出为图片?

本帖最后由 chishingchan 于 2019-11-29 23:01 编辑

Msgbox(0, "", "Hello World!")



弹出窗口后输出 *.png (如上图)

chzj589 发表于 2019-11-29 14:27:13

_ScreenCapture_CaptureWnd
捕捉指定窗口或控件 ID 的屏幕快照


chishingchan 发表于 2019-11-29 21:43:59

本帖最后由 chishingchan 于 2019-11-29 21:51 编辑

chzj589 发表于 2019-11-29 14:27
_ScreenCapture_CaptureWnd
捕捉指定窗口或控件 ID 的屏幕快照
这语句对 GUI 来说很好!偏偏这个简单的 msgbox 语句不存在句柄。
#include <ScreenCapture.au3>

$hWnd = Msgbox(0, "", "Hello World!")
_ScreenCapture_CaptureWnd(@TempDir & "\HW.png", $hWnd)

可能是到了截图的语句时,Msgbox 语句已过了!
#include <ScreenCapture.au3>

Msgbox(0, "", "Hello World!", 3)
$hWnd = WinGetHandle("", "Hello World!")
_ScreenCapture_CaptureWnd(@TempDir & "\HW.png", $hWnd)

afan 发表于 2019-11-29 21:59:31

chishingchan 发表于 2019-11-29 21:43
这语句对 GUI 来说很好!偏偏这个简单的 msgbox 语句不存在句柄。

可能是到了截图的语句时,Msgbox 语 ...

#include <WinAPISys.au3>
#include <ScreenCapture.au3>

Local $fPic = '1.png'
Local $hTimerProc = DllCallbackRegister('_TimerProc', 'none', 'hwnd;uint;uint_ptr;dword')
Local $iTimerID = _WinAPI_SetTimer(0, 0, 100, DllCallbackGetPtr($hTimerProc))
Msgbox(0, '', 'Hello World!')
_WinAPI_KillTimer(0, $iTimerID)
DllCallbackFree($hTimerProc)

Func _TimerProc($hWnd, $iMsg, $iTimerID, $iTime)
        Local $hWin = WinGetHandle('', 'Hello World!')
        If Not @error Then
                _ScreenCapture_CaptureWnd($fPic, $hWin, 0, 0, -1, -1, False)
                _WinAPI_KillTimer(0, $iTimerID)
                DllCallbackFree($hTimerProc)
        EndIf
EndFunc   ;==>_TimerProc

chishingchan 发表于 2019-11-29 22:12:20

afan 发表于 2019-11-29 21:59
#include
#include



不容易理解,慢慢消化吧!谢谢!

afan 发表于 2019-11-30 12:02:36

chishingchan 发表于 2019-11-29 22:12
不容易理解,慢慢消化吧!谢谢!

就是加一个定时器在消息框弹出之前执行,相当于多开了个简单的线程
页: [1]
查看完整版本: [已解决] 有什么语句可以将自我窗口输出为图片?