[已解决]获取右键保存图片出错(版本问题)
本帖最后由 jycel 于 2009-12-27 17:47 编辑右键复制一张图片,使用_ScreenCapture_SaveImage保存不了,直接使用AU3全屏截图又可以!不知道问题在那儿
大家帮我看看,我在2003上测试的
今天把以前能载图的工具找出来试了下,也截不了!论坛上有一位的截图工具试了下也不行,我用的最新版3.2.0不会是版本的过吧?
#include <ScreenCapture.au3>
#Include <Clipboard.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("获取右键前请先打开一张图片复制后再测试", 335, 136)
$Button1 = GUICtrlCreateButton("获取右键保存", 32, 50, 97, 49)
$Button2 = GUICtrlCreateButton("系统自动截图", 192, 50, 105, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $Button1
_Main1()
case $Button2
_Main2()
EndSwitch
WEnd
Func _Main1()
Local $hBmp=@ScriptDir&"\jycel.bmp"
$jqbh=_ClipBoard_GetDataEx($CF_BITMAP);_ScreenCapture_Capture ("");_ClipBoard_GetData($CF_BITMAP)
$baochun=_ScreenCapture_SaveImage($hBmp,$jqbh,True)
if @error then
MsgBox(16,"错误",$baochun)
Else
MsgBox(0,"发生错误",$baochun)
EndIf
EndFunc ;==>_Main
Func _Main2()
$hBmp = _ScreenCapture_Capture ("")
; Save bitmap to file
$baochun=_ScreenCapture_SaveImage (@ScriptDir & "\jycel.bmp", $hBmp)
if @error then
MsgBox(16,"错误",$baochun)
Else
MsgBox(0,"未发生错误",$baochun)
EndIf
EndFunc ;==>_Main
Win7也不行。提示错误 我以前遇到过这问题当时是在做截图程序,后来解决了呢,U盘坏了,结果所有资料都丢了! 一周多了还没找到问题晕死! 对剪切版内容的误解。 回复 5# 顽固不化
下面是以前用的代码,是可以正常使用的,现在就不行了!是我弄错了还是?
Local $jpg=@ScriptDir&"\send.jpg"
GUISetState(@SW_HIDE)
RunWait("rundll32.exe CameraDll.dll,CameraSubArea",'',@SW_HIDE)
$jqbh=ClipBoard_GetData($CF_BITMAP);这一步右键已有截图数据
_ScreenCapture_SaveImage($jpg,$jqbh,True);关键就在这里保存数据时获取右键不正确
是的,上面代码的剪切板数据才是图形数据。
CameraDll.dll是一个较早的版本,有些杀软报它是毒,有可能被杀掉了,你看看还在不在。而新版的CameraDll.dll函数调用已经改变,用原始方式调用得不到什么的。
附一个CameraDll.dll抓图函数:Func _ZhuaTU()
DllCall(@ScriptDir&'\CameraDll.dll', 'int', 'CameraSubArea', 'hwnd', 0)
_ClipBoard_Open(0)
$hBitmap = _ClipBoard_GetData(2)
$TM=@YEAR&@MON&@MDAY&"_"&@HOUR&@MIN&@SEC
_ScreenCapture_SaveImage(@ScriptDir & "\"&$TM&'.jpg', $hBitmap)
_ClipBoard_Close()
EndFunc 本帖最后由 jycel 于 2009-12-27 16:34 编辑
回复 7# 顽固不化
以前版本的还是!用我以前的方法不行,右键有数据,保存不了!从QQ2008中调用却提示另个四个附代的DLL要放一起才行,能运行但也不对,把你能用的共享一下看!
2009最新版的调用也没反应! 回复顽固不化
以前版本的还是!用我以前的方法不行,右键有数据,保存不了!从QQ2008中调用却提示另个四 ...
jycel 发表于 2009-12-27 16:31 http://www.autoitx.com/images/common/back.gif
刚才试了一下源代码生成的EXE,确实存在不能保存问题。
是否AU3的高版本存在BUG?
呼吁一下,老大关注一下。 回复 9# 顽固不化
好像在10月份左右我用都可以,现在用以前的成品都不行了,调用的DLL都未变!
版本问题的话,以前的成品应该不会变的!
搞不懂了:face (13): 3.3.1.1FIX可以使用。#NoTrayIcon
#Include <Clipboard.au3>
#include <ScreenCapture.au3>
$g_szVersion = @ScriptName
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
HotKeySet("^{f11}", "Terminate")
HotKeySet("{f11}", "_ZhuaTU")
While 1
Sleep(100)
WEnd
Func _ZhuaTU()
DllCall(@ScriptDir&'\CameraDll.dll', 'int', 'CameraSubArea', 'hwnd',0)
_ClipBoard_Open(0)
$hBitmap = _ClipBoard_GetData(2)
$TM=@YEAR&@MON&@MDAY&"_"&@HOUR&@MIN&@SEC
_ScreenCapture_SaveImage(@ScriptDir & "\"&$TM&'.jpg', $hBitmap)
_ClipBoard_Close()
EndFunc
Func Terminate()
Exit
EndFunc 回复 11# 顽固不化
我试下,你测试成功那应该是版本的问题了 这个包包含源码+DLL+AU3(3311FIX)生成的EXE
本帖最后由 顽固不化 于 2009-12-27 17:25 编辑
看了一下ScreenCapture.au3在两个AU3版本里的大小,3320里是16.2K,3311FIX里是16.9K。没细究里面的区别,将3311FIX的ScreenCapture.au3代替3320里的,问题得到解决。
上传3.3.1.1Fix的ScreenCapture.au3,放到Include目录覆盖源文件
还花20下载下来!成品调用未保存!成品应该跟AU3版本没关系啊!难道系统有关?我2003的
页:
[1]
2