我正在编写一个可打开多个 PI ProcessBook 显示文件的 C# 应用程序。 PI Processbook 是一个嵌入了 Visual Basic for Applications 支持的程序,包括一个 VBE 环境。
我遇到的问题是,我想打开的许多显示器中都有宏,这些宏会在打开显示器时自动运行。我已将宏保护设置为最大(这应该完全禁用宏!),但不幸的是,我正在使用的 TypeLibrary 中有一些东西意味着当以编程方式打开文件时,它会绕过宏安全并且宏仍然运行。去图....
因此,我正试图找到一种方法来以编程方式杀死这些宏,即使它们已经启动。我尝试使用 SendKeys.Wait("^{BREAK}") 强制进入中断模式。这“有效”,但有点碰运气:我发现如果宏在某个时候没有暂停,SetForegroundWindow 不能强制 VB 编辑器到前台接受 sendkeys 输入。因此,我尝试使用 sendmessage。我使用 SPY++ 看到 CTRL+BREAK 似乎向窗口发送了 WM_CANCELMODE 消息。显然,这与字面上的 ALT+Tabbing 或用鼠标单击窗口并按 CTRL+Break 键的处理方式有所不同,因为消息会排队,但在宏完成执行之前似乎不会处理。
有没有人有任何其他尝试的建议?
最佳答案
I am therefore trying to find a way to programatically kill these macros, even if they have started.
打开电子表格时按住 Shift 键,宏不会运行。
否则,您可以尝试在运行时停止代码:Ctrl
+ Alt
+ PauseBreak
编辑:
I have set the macro protection to maximum (which should disable macros completely!)
尝试禁用它们:
关于c# - 如何以编程方式强制中断 VBE 编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310174/