请教个380无效属性问题
vb吧
全部回复
仅看楼主
level 6
xttraft 楼主
程序第一次运行会提示380错误,再重新运行就好了,但是重启电脑还是会出现同样的问题
2021年09月03日 16点09分 1
level 6
xttraft 楼主
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Command3_Click()
Dim filePath As String
filePath = "D:\" & Text22.Text & "_v1.bmp"
'keybd_event vbKeySnapshot, 0&, 0&, 0&
keybd_event vbKeySnapshot, 1, 0, 0
DoEvents
Me.Picture = Clipboard.GetData(vbCFBitmap)
SavePicture Me.Picture, filePath
Label27(1).Caption = "截图已保存到当前路径!"
End Sub
2021年09月03日 16点09分 2
level 6
xttraft 楼主
这个截图功能是copy来的,也不是很懂,出了问题也不知道是什么原因,百度了很多网页也没有找见答案,只能求助于贴吧的大佬了!
2021年09月03日 16点09分 3
level 11
搞不懂,不过你可以尝试通过断点的方式定位到底哪一句出了问题(MsgBox也是编译执行的程序的一种断点手段)
2021年09月04日 05点09分 5
有一点比较奇怪,第一次截图报错,第二次运行就好了,但是每次保存的截图都是上一次保存的画面
2021年09月04日 05点09分
断点没有检查出来[疑问]
2021年09月04日 05点09分
系统的“截图处理”跟不上。那个DoEvents没什么用,增加1个API:Sleep延时才行。比如 Call Sleep(500)
2021年09月04日 06点09分
系统的“截图处理”跟不上。那个DoEvents没什么用,增加1个API:Sleep延时才行。比如 Call Sleep(500)
2021年09月04日 06点09分
level 6
xttraft 楼主
而且有一点比较奇怪,程序运行后第一次截图才报告这个错误,第二次运行就好了,
而且发现,每次保存的截图都是上一次点击保存时的画面
[泪]
2021年09月04日 05点09分 6
吧务
level 13
' 添加给【Text22】赋初值的语句
Private Sub Form_Load()
Text22.TXT = "tu666"
End Sub
2021年09月04日 05点09分 7
吧务
level 13
' 当前路径的描述
Option Explicit
Public mPath As String
Private Sub Form_Load()
mPath = App.Path ' 获取路径(结束位置是反斜杠)
If Right(mPath, 1) <> Chr(92) Then
mPath = mPath & Chr(92)
End If
Text22.TXT = "tu666"
End Sub
' 以后使用字符型变量【mPath】作为【当前路径】。
2021年09月04日 05点09分 8
延时后可以了,谢谢帮忙!
2021年09月04日 06点09分
level 6
xttraft 楼主
Private Sub Form_Load()
Text22.TXT = "tu666"
Call Command2_Click
mPath = App.Path ' 获取路径(结束位置是反斜杠)
If Right(mPath, 1) <> Chr(92) Then
mPath = mPath & Chr(92)
End If
End Sub
Private Sub Command3_Click()
Dim filePath As String
filePath = "temp.bmp"
filePath = mPath & Text22.Text & "_v1.bmp"
keybd_event vbKeySnapshot, 1, 0, 0
DoEvents
Me.Picture = Clipboard.GetData(vbCFBitmap)
SavePicture Me.Picture, filePath
Label27(1).Caption = "截图已经保存到本程序所在目录!(" & App.Path & ")"
End Sub
2021年09月04日 06点09分 9
level 10
测试了一下,用单独一次Sleep,
即使是用了 1000ms 的延时,还是很容易出现问题。
这样处理比较有效(延时还比较小):
keybd_event vbKeySnapshot, 0, 0, 0
'DoEvents
Dim i As Long
For i = 1 To 20
Call Sleep(5)
DoEvents
Next
Me.Picture = Clipboard.GetData(vbCFBitmap)
2021年09月04日 06点09分 10
[真棒]虽然我不太懂,但是确实好用!
2021年09月05日 14点09分
@xttraft 我也只能确认你遇到的问题跟“系统响应”有关,但也不太明白为啥“一次长延时(1秒左右,出错概率在10%左右)”的效果,远不如“多次极短延时(共需要0.1到0.2秒,出错概率几乎为0)”效果好。不过当时只在IDE环境中测试了,没试编译后的情况,估计编译后也没什么差别。
2021年09月05日 14点09分
用模拟键盘按键【PrcScn】的方法来实现屏幕截图,试一下。还有,截图之前先清理【粘贴板】。
2021年09月06日 03点09分
1