找回密码
 加入
搜索
查看: 6770|回复: 18

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

  [复制链接]
发表于 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

评分

参与人数 1金钱 +10 收起 理由
顽固不化 + 10 让此问题醒目一下。

查看全部评分

发表于 2009-12-19 15:06:28 | 显示全部楼层
Win7也不行。提示错误
 楼主| 发表于 2009-12-19 18:26:28 | 显示全部楼层
我以前遇到过这问题当时是在做截图程序,后来解决了呢,U盘坏了,结果所有资料都丢了!
 楼主| 发表于 2009-12-27 10:53:16 | 显示全部楼层
一周多了还没找到问题晕死!
发表于 2009-12-27 14:35:03 | 显示全部楼层
对剪切版内容的误解。
 楼主| 发表于 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
 楼主| 发表于 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


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

呼吁一下,老大关注一下。
 楼主| 发表于 2009-12-27 17:01:52 | 显示全部楼层
回复 9# 顽固不化
好像在10月份左右我用都可以,现在用以前的成品都不行了,调用的DLL都未变!
版本问题的话,以前的成品应该不会变的!
搞不懂了
发表于 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
 楼主| 发表于 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目录覆盖源文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2009-12-27 17:28:54 | 显示全部楼层
还花20下载下来!成品调用未保存!成品应该跟AU3版本没关系啊!难道系统有关?我2003的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-26 20:46 , Processed in 0.096682 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表