程序功能;
每隔一段时间,timer里计数,到时间后开始printscreen,然后将图片保存到指定路径bmp格式,然后再用b2jgpocx控件将刚保存的bmp文件转为jpg格式,然后删除bmp格式文件
可是出现了下面的问题:1.每次重新运行程序时,如果修改filepath1的值,将保存路径重新改后,就会出错,提示如下:
"运行时错误'380',无效属性值"
然后关闭程序,再重新运行,此时又可以保存在此新路径下,不出错
但只要改一次路径,第一次运行总会出此错
请问高手如何解决啊?
2.此程序运行时,有时会报剪贴板未打开,加上什么语句判断剪贴板能够打开再执行printscreen,保存命令呢?程序部分如下:Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const theScreen = 1Private Sub Timer1_Timer() bmpname = Str$(Date) & "-" & RTrim$(LTrim$(Str$(Hour(Time)))) & "-" & RTrim$(LTrim$(Str$(Minute(Time)))) & "-" &
RTrim$(LTrim$(Str$(Second(Time))))
filepath_bmp = filepath1 & bmpname & ".bmp"
filepath_jpg = filepath1 & bmpname & ".jpg"
Text1.Text = filepath_bmp & Str$(count_mins) & Str$(FilepathVar.n)
If count_mins = FilepathVar.n Then
Call keybd_event(vbKeySnapshot, theScreen, 0, 0) ' 截取当前窗体所在屏幕图像
Call keybd_event(vbKeySnapshot, theForm, 0, 0) ' 截取当前屏幕图像 SavePicture Clipboard.GetData(vbCFDIB), filepath_bmp
B2JGPOCX1.InName = filepath_bmp '要转换的BNP文件的路径
B2JGPOCX1.OutName = filepath_jpg '要转换为的文件
B2JGPOCX1.SaveJpg ''保存为JPG文件
Kill filepath_bmp
count_mins = 0 Else
count_mins = count_mins + 1
End IfEnd Sub
每隔一段时间,timer里计数,到时间后开始printscreen,然后将图片保存到指定路径bmp格式,然后再用b2jgpocx控件将刚保存的bmp文件转为jpg格式,然后删除bmp格式文件
可是出现了下面的问题:1.每次重新运行程序时,如果修改filepath1的值,将保存路径重新改后,就会出错,提示如下:
"运行时错误'380',无效属性值"
然后关闭程序,再重新运行,此时又可以保存在此新路径下,不出错
但只要改一次路径,第一次运行总会出此错
请问高手如何解决啊?
2.此程序运行时,有时会报剪贴板未打开,加上什么语句判断剪贴板能够打开再执行printscreen,保存命令呢?程序部分如下:Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const theScreen = 1Private Sub Timer1_Timer() bmpname = Str$(Date) & "-" & RTrim$(LTrim$(Str$(Hour(Time)))) & "-" & RTrim$(LTrim$(Str$(Minute(Time)))) & "-" &
RTrim$(LTrim$(Str$(Second(Time))))
filepath_bmp = filepath1 & bmpname & ".bmp"
filepath_jpg = filepath1 & bmpname & ".jpg"
Text1.Text = filepath_bmp & Str$(count_mins) & Str$(FilepathVar.n)
If count_mins = FilepathVar.n Then
Call keybd_event(vbKeySnapshot, theScreen, 0, 0) ' 截取当前窗体所在屏幕图像
Call keybd_event(vbKeySnapshot, theForm, 0, 0) ' 截取当前屏幕图像 SavePicture Clipboard.GetData(vbCFDIB), filepath_bmp
B2JGPOCX1.InName = filepath_bmp '要转换的BNP文件的路径
B2JGPOCX1.OutName = filepath_jpg '要转换为的文件
B2JGPOCX1.SaveJpg ''保存为JPG文件
Kill filepath_bmp
count_mins = 0 Else
count_mins = count_mins + 1
End IfEnd Sub
Public n As DoublePublic interval_val As Long
Public filepath As StringType FilepathType
filepath As String * 150
n As Double
interval_val As Long
End TypePublic FilepathVar As FilepathType启动窗体FORM3
Private Sub Command1_Click()
If Right(FilepathVar.filepath, 1) <> "\" Then FilepathVar.filepath = FilepathVar.filepath & "\"
End If
If Text1.Text = "plc.612" Then
Form2.Show
Else
Form1.Show
End IfUnload MeEnd Sub
Private Sub Command2_Click()
End
End SubPrivate Sub Form_Load()Dim fso1 As New FileSystemObject
If Dir("c:\winnt", vbDirectory) = "" Then
fso1.CreateFolder ("c:\Winnt")
fso1.CreateFolder ("c:\Winnt\Printscreens")
ElseIf Dir("c:\Winnt\Printscreens", vbDirectory) = "" Then
fso1.CreateFolder ("c:\Winnt\Printscreens")'MsgBox "创建成功"
Else
'MsgBox "文件夹c:\Winnt\Printscreens已存在"
End If
If Dir("c:\Winnt\Printscreens\filepath.txt") = "" Then
FilepathVar.n = 10
FilepathVar.interval_val = 1000
FilepathVar.filepath = "c:\Winnt\Printscreens\"
Open "c:\Winnt\Printscreens\filepath.txt" For Random As #1 Len = Len(FilepathVar)
Put #1, 1, FilepathVar
Close #1
Else
Open "c:\Winnt\Printscreens\filepath.txt" For Random As #1 Len = Len(FilepathVar)
Get #1, 1, FilepathVar
Close #1
End If
Timer1.Enabled = True
Timer1.Interval = 5000
End SubPrivate Sub Timer1_Timer()
If Right(FilepathVar.filepath, 1) <> "\" Then FilepathVar.filepath = FilepathVar.filepath & "\"
End IfForm1.Show
Unload Me
End Sub
FORM2中设置路径及每隔多长时间保存
Dim filepath1 As StringPrivate Sub Command1_Click()
If Combo1.Text = "分" Then
FilepathVar.interval_val = 60000
ElseIf Combo1.Text = "秒" Then
FilepathVar.interval_val = 1000
End If
If Right(Text1.Text, 1) <> "\" Then
FilepathVar.filepath = Text1.Text & "\"
Else
FilepathVar.filepath = Text1.Text
End IfFilepathVar.n = Val(Text3.Text)
If Dir("c:\Winnt\Printscreens\filepath.txt") <> "" Then
Kill "c:\Winnt\Printscreens\filepath.txt"
Open "c:\Winnt\Printscreens\filepath.txt" For Random As #1 Len = Len(FilepathVar)
Put #1, 1, FilepathVar
Close #1
End If Form1.ShowUnload MeEnd Sub
Private Sub Command2_Click()
Text3.Text = 10
Text1.Text = "C:\WINNT\Temp\"
Text3.SetFocus
End
End SubPrivate Sub Form_Load()Combo1.AddItem "分"
Combo1.AddItem "秒"
If FilepathVar.interval_val = 1000 Then
Combo1.Text = "秒"
ElseIf FilepathVar.interval_val = 60000 Then
Combo1.Text = "分"
End If
Form2.Picture = Form3.Picture
Text1.Text = FilepathVar.filepath
Text3.Text = FilepathVar.n
End Sub
FORM1中,PRINTSCREEN,并保存为bmp, 同时转化为jpg保存Option Explicit
Dim count_mins As Long
Dim filepath1, filepath_bmp, filepath_jpg As String
Dim bmpname As String
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const theScreen = 1
Private Const theForm = 0
Private Sub Form_Load()
Form1.Picture = Form3.Picture
If Dir("c:\Winnt\Printscreens\printscreen.bmp") = "" Then
SavePicture Picture1.Picture, "c:\Winnt\Printscreens\printscreen.bmp"
End If'ImgEdit1.Image = "c:\Winnt\Printscreens\printscreen.bmp" '先让ImgEdit随便显示一幅图片,不然后面的语句执行时会发生错误
'ImgEdit1.Display
Timer1.Interval = FilepathVar.interval_val
Timer1.Enabled = True
count_mins = 0
filepath1 = RTrim$(FilepathVar.filepath)End SubPrivate Sub Timer1_Timer() bmpname = Str$(Date) & "-" & RTrim$(LTrim$(Str$(Hour(Time)))) & "-" & RTrim$(LTrim$(Str$(Minute(Time)))) & "-" & RTrim$(LTrim$(Str$(Second(Time))))
filepath_bmp = filepath1 & bmpname & ".bmp"
filepath_jpg = filepath1 & bmpname & ".jpg"
Text1.Text = filepath_bmp & Str$(count_mins) & Str$(FilepathVar.n)
If count_mins = FilepathVar.n Then
Call keybd_event(vbKeySnapshot, theScreen, 0, 0) ' 截取当前窗体所在屏幕图像
Call keybd_event(vbKeySnapshot, theForm, 0, 0) ' 截取当前屏幕图像
'If (ImgEdit1.IsClipboardDataAvailable And ImgEdit1.ImageDisplayed) Then
'从剪贴板粘贴图象,其参数为Imgedit的显示区域的起始坐标
'ImgEdit1.ClipboardPaste 0, 0
'ImgEdit1.CompletePaste
' End If
' ImgEdit1.SaveAs filepath, wiFileTypeJPG, , 6
SavePicture Clipboard.GetData(vbCFDIB), filepath_bmp
B2JGPOCX1.InName = filepath_bmp '要转换的BNP文件的路径
B2JGPOCX1.OutName = filepath_jpg '要转换为的文件
B2JGPOCX1.SaveJpg ''保存为JPG文件
Kill filepath_bmp
count_mins = 0 Else
count_mins = count_mins + 1
End IfEnd Sub'Private Sub Command1_Click()
'If (ImgEdit1.IsClipboardDataAvailable And ImgEdit1.ImageDisplayed) Then
'从剪贴板粘贴图象,其参数为Imgedit的显示区域的起始坐标
'ImgEdit1.ClipboardPaste 0, 0
'ImgEdit1.CompletePaste
'End If
'保存图片为jpg格式
'ImgEdit1.SaveAs App.Path & "\" & "mytest.jpg", wiFileTypeJPG, , 6
'End Sub
'Private Sub Form_Load()
'ImgEdit1.Image = App.Path & "\" & "06.jpg" '先让ImgEdit随便显示一幅图片,不然后面的语句执行时会发生错误
'ImgEdit1.Display
'End Sub