jycel 发表于 2009-12-19 14:48:55

[已解决]获取右键保存图片出错(版本问题)

本帖最后由 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

KLU3K 发表于 2009-12-19 15:06:28

Win7也不行。提示错误

jycel 发表于 2009-12-19 18:26:28

我以前遇到过这问题当时是在做截图程序,后来解决了呢,U盘坏了,结果所有资料都丢了!

jycel 发表于 2009-12-27 10:53:16

一周多了还没找到问题晕死!

顽固不化 发表于 2009-12-27 14:35:03

对剪切版内容的误解。

jycel 发表于 2009-12-27 15:39:16

回复 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);关键就在这里保存数据时获取右键不正确

顽固不化 发表于 2009-12-27 16:19:24

是的,上面代码的剪切板数据才是图形数据。
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:31:25

本帖最后由 jycel 于 2009-12-27 16:34 编辑

回复 7# 顽固不化
以前版本的还是!用我以前的方法不行,右键有数据,保存不了!从QQ2008中调用却提示另个四个附代的DLL要放一起才行,能运行但也不对,把你能用的共享一下看!
2009最新版的调用也没反应!

顽固不化 发表于 2009-12-27 16:55:07

回复顽固不化
以前版本的还是!用我以前的方法不行,右键有数据,保存不了!从QQ2008中调用却提示另个四 ...
jycel 发表于 2009-12-27 16:31 http://www.autoitx.com/images/common/back.gif

刚才试了一下源代码生成的EXE,确实存在不能保存问题。
是否AU3的高版本存在BUG?

呼吁一下,老大关注一下。

jycel 发表于 2009-12-27 17:01:52

回复 9# 顽固不化
好像在10月份左右我用都可以,现在用以前的成品都不行了,调用的DLL都未变!
版本问题的话,以前的成品应该不会变的!
搞不懂了:face (13):

顽固不化 发表于 2009-12-27 17:02:09

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

jycel 发表于 2009-12-27 17:03:36

回复 11# 顽固不化
我试下,你测试成功那应该是版本的问题了

顽固不化 发表于 2009-12-27 17:11:25

这个包包含源码+DLL+AU3(3311FIX)生成的EXE

顽固不化 发表于 2009-12-27 17:23:46

本帖最后由 顽固不化 于 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目录覆盖源文件

jycel 发表于 2009-12-27 17:28:54

还花20下载下来!成品调用未保存!成品应该跟AU3版本没关系啊!难道系统有关?我2003的
页: [1] 2
查看完整版本: [已解决]获取右键保存图片出错(版本问题)