VB6-向后台窗口发送Ctrl+S实现自动定时保存文档
vb6吧
全部回复
仅看楼主
level 1
行天0809 楼主
像Excel2003、Word2003,它们的设置选项里都有“自动保存”/“自动恢复”的项目,但在不少的GHOST版本XP上居然发现没法用,设置了还是无效。在一些特殊的工作中,比如信息录入,每分钟都有输入,且输入后基本是不用修改了的,可以直接保存,为了防止断电等频发的意外而发生数据丢失,就需要频繁地对文档进行了保存操作。每分钟都去点一下“保存”显然让人抓狂,自身的自动保存又无效,于是想到了一个笨方法,用第三方程序定时向文档窗口发送Ctrl+S命令,不管它是在后台还是前台运行……
2013年08月20日 16点08分 1
level 3
能发源码不?
2013年10月28日 04点10分 2
level 1
行天0809 楼主
最简单的实现后台发送按键功能:
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Const VK_Ctrl = &H11
Const VK_S = &H53
Const KEYEVENTF_KEYUP = &H2 'A
Const WM_KEYDOWN = &H100
Const WM_KEYUP = &H10
Dim Excelhandle As Long
'------------以上为定义----------------
'下面查找目标句柄
Excelhandle = FindWindow("XLMAIN", vbNullString)
'找到后通过句柄发送键值
keybd_event VK_Ctrl, 0, 0, 0 '按下Ctrl键
PostMessage Excelhandle, WM_KEYDOWN, VK_S, 0 '发送S键
Sleep 50 '延时50ms,自行适当调整甚至不要也可
keybd_event VK_Ctrl, 0, KEYEVENTF_KEYUP, 0 '弹起Ctrl键
'-------------------------基本功能就完成了----------------------
'----------VB6.0中在XP SP3下编译通过-----------------I
2013年10月31日 15点10分 3
level 1
漂亮
2014年06月28日 17点06分 5
level 1
不明觉厉
2014年09月27日 05点09分 6
level 1
楼主可否分享一下成品文件呢?
2022年09月06日 08点09分 7
已更新链接,包内有成品
2024年02月21日 15点02分
level 1
正确做法应该是发送wm-command消息
2023年05月08日 03点05分 8
level 1
行天0809 楼主
这么古老的VB6没想到2023年还有人关注,[大拇指]
更新一下失效链接:
[有效] https://pan.baidu.com/s/1DPPeBZs2INpFgCXM9-Si-A?pwd=wb2f
提取码: wb2f
2024年02月21日 15点02分 9
这是做什么用的?
2024年06月27日 06点06分
level 2
@行天0809 vb 在上个月排名第七咯
@f_auto?token=e87dc1033dcf45a7581b9f4c1f96969a
2024年10月28日 01点10分 10
level 2
用sendkey试试
2025年03月23日 03点03分 11
1