【发布时间】:2016-05-10 09:00:23
【问题描述】:
我目前正在 Excel 中处理一个 VBA 项目,我需要解锁一个 VBProject 并锁定另一个 VBProject。到目前为止,我一直在使用 SendKeys 进行此操作,但我一直在读到这不是一个好方法,而且那个 API 更好? (例如在这个线程中:Unprotect VBProject from VB code)
但是,在我的研究过程中,我找不到任何关于原因的详细信息。
谁能告诉我为什么 SendKeys 不好?有哪些可能出错的地方? (请注意,我的 SendKeys 序列最多只有 1.5 秒长。) 另外,为什么 API 是更好的方法?
谢谢! :)
【问题讨论】:
-
SendKeys 是不可靠的,因为它确实将命令发送到活动窗口,并且并不总是可以保证那是预期的窗口。
-
正确。它只是sending key strokes(由@ojf 解释)。现在想象一下您的 Excel 代码正在运行,并且有人试图在代码运行时完成一些浏览...按下键并将活动窗口更改为浏览器。
-
试试看。我不记得发送密钥的单一应用程序不是脆弱和不可靠的。尝试使用它进行编码几乎总是一种恶化的练习。花一个小时试图让它(某种)工作足以让任何程序员相信
SendKeys是最后的工具。 -
想想经典的《辛普森一家》剧集,胖荷马在去看下午的电影日场时,用一个浮游鸟玩具不断敲击“确定”。这就是 SendKeys,通常会产生类似的结果。