以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  打开一个文件 ,并且获得指定区域的截图  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187589)

--  作者:lianghanyu
--  发布时间: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()  没有生效?  因为如果功能实现,我是要做成一个获取邮件内容的代码的。在某一个指定文件夹里,有很多已经导出来的邮件,我想一个一个的打开,然后使用截图功能,把邮件里的内容截图形式保存下来。


--  作者:有点蓝
--  发布时间: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
--  发布时间: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
--  发布时间:2023/7/29 10:22:00
--  
找到原因了,标题不能带文件扩展名。
--  作者:有点蓝
--  发布时间: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