懂vb懂api的来下 VB6对指定的游戏窗口截屏的问题
带火星的木条2009/07/23软件综合 IP:广东
我开始用了如下的语句,能够实现对任意标题的窗口进行选择性截屏,但是printwindow这个函数好像不能对directX的游戏截取..只能获得一块白色 (我要对冒险岛这个游戏进行截图)

在模块中
Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

在窗体中

Option Explicit
Private Declare Function PrintWindow Lib "User32" (ByVal SrcHwnd As Long, ByVal DesHDC As Long, ByVal uFlag As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Type RECT'窗口的四个点的位置数据
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Declare Function GetWindowRect Lib "User32" (ByVal hwnd As Long, lpRect As RECT) As Long

Private Sub Command1_Click()
Dim hw As Long
hw = FindWindow(vbNullString, "MapleStory")'获取句柄
If hw = 0 Then
XXXXXXXXXption = "Maplestory未运行" '显示运行状况
Exit Sub
End If
If hw <> 0 Then
XXXXXXXXXption = "Maplestory已运行" '显示运行状况
End If
  Dim rc As RECT
    If GetWindowRect(hw, rc) Then
           Picture1.Width = (rc.Right - rc.Left): Picture1.Height = (XXXXXttom - XXXXXp)'按照窗口大小调整picture1的长度和宽度
    End If
    Call PrintWindow(hw, Picture1.hDC, 0)
    XXXXXXXXXXXfresh
End Sub

Private Sub Form_Load()
    XXXXXXXXXXXtoRedraw = True
    XXXXXXXXXXXrderStyle = 0
    Picture1.Appearance = 0
End Sub


于是我又用了下面的代码 (这个不是我自己写的)

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const theScreen = 0
Const theForm = 1

Private Sub Command1_Click()
Call keybd_event(vbKeySnapshot, theScreen, 0, 0)
DoEvents
Picture1.Picture = XXXXXXXXXXXXtData(vbCFBitmap)
End Sub


这个可以对游戏和视屏任意截图 但是却是全屏抓取 没有看到有使用句柄的迹象 应该不能选择抓取窗口

请教如何实现我想要的功能了 谢谢
来自:计算机科学 / 软件综合
4
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
noname剑人
14年10个月前 IP:未同步
130110
完全不懂GDI API的飘过
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°
14年10个月前 IP:未同步
130115
用DirectX截

DirectX控飘过~~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
带火星的木条作者
14年10个月前 IP:未同步
130122
帮帮忙吧 [s:258] 不要用DirectX  ..
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°
14年10个月前 IP:未同步
130124
DirectX不是GDI+,用printwindow当然不靠谱~~

第二段代码,实际上就是键盘上的截屏按钮,当然不能按句柄了……
于是……除了DirectX,确实想不出来 = =
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
带火星的木条
学者 笔友
文章
116
回复
580
学术分
2
2008/11/02注册,6年8个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}