Foxtable(狐表)用户栏目专家坐堂 → 打开一个文件 ,并且获得指定区域的截图


  共有3198人关注过本帖树形打印复制链接

主题:打开一个文件 ,并且获得指定区域的截图

帅哥哟,离线,有人找我吗?
lianghanyu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:279 积分:2477 威望:0 精华:0 注册:2020/6/28 8:43:00
打开一个文件 ,并且获得指定区域的截图  发帖心情 Post By:2023/7/29 9:31:00 [只看该作者]

Dim Proc As New Process '定义一个新的Process
Proc.File = "I:\2.eml" '指定要打开的文件
Proc.Start()
Dim d As Date = Date.now

Do While d.AddSeconds(5) > Date.Now
    Application.Doevents
Loop

ClipBoard.Clear
Sendkeys.Send("^{PRTSC}")
Application.Doevents
If ClipBoard.ContainsImage Then
    Dim img As Image
    img = ClipBoard.GetImage
    img.save("D:\20230729.jpg")
End If
Proc.Close()


问题1:上边的是全屏截图,有没有办法指定截图区域?

问题2: 为什么最后一句 Proc.Close()  没有生效?  因为如果功能实现,我是要做成一个获取邮件内容的代码的。在某一个指定文件夹里,有很多已经导出来的邮件,我想一个一个的打开,然后使用截图功能,把邮件里的内容截图形式保存下来。


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110559 积分:562685 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/29 9:39:00 [只看该作者]

1、没有办法指定区域,要换一种方式手工截图:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=119335&skin=0

2、Proc.Close是原来释放Process使用的资源,不是用来关闭打开的应用程序的。基本上Process 打开的程序只能手工关闭。如果知道标题,可以试试这个:http://www.foxtable.com/webhelp/topics/2713.htm
[此贴子已经被作者于2023/7/29 9:39:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lianghanyu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:279 积分:2477 威望:0 精华:0 注册:2020/6/28 8:43:00
  发帖心情 Post By:2023/7/29 10:11:00 [只看该作者]

试了一下这个代码,能打开文件,并且截图 ,但是关闭不了:

Dim Proc As New Process '定义一个新的Process
Proc.File = "D:\出错损失表.xlsx" '指定要打开的文件
Proc.Start()
Dim d As Date = Date.now

Do While d.AddSeconds(5) > Date.Now
    Application.Doevents
Loop

ClipBoard.Clear
Sendkeys.Send("^{PRTSC}")
Application.Doevents
If ClipBoard.ContainsImage Then
    Dim img As Image
    img = ClipBoard.GetImage
    img.save("D:\20230729.jpg")
End If
ShowAppWindow("出错损失表.xlsx", 5)


 回到顶部
帅哥哟,离线,有人找我吗?
lianghanyu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:279 积分:2477 威望:0 精华:0 注册:2020/6/28 8:43:00
  发帖心情 Post By:2023/7/29 10:22:00 [只看该作者]

找到原因了,标题不能带文件扩展名。

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110559 积分:562685 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/29 10:31:00 [只看该作者]

我测试是可以关闭的。确实不行再试试kill


Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("excel")
For Each p As System.Diagnostics.Process In ps
    msgbox(p.MainWindowTitle)
    If p.MainWindowTitle = "某某标题" Then  p.kill
Next

 回到顶部