自己想了很久,试验了好几种方法,都未达到目的。很是郁闷…………
我想要的效果是:
⑴ 可以读取和清空VBA立即窗口全部文本。 这是第一步,但是已经没能完成了。
⑵ 可以获取窗口内有多少行文本,实现读取和删除指定行号的文本,以及可以将“插入点”定位到指定行。
最基本的要能定到行开头,能定位到指定行的任意位置更好(当然是合法位置)。
比如窗口内:现有文本内容共9行,那么可以将插入点定位到1到10的任意行开头
(解释一下,9行文本,光标可以定到第10行的。手工操作:用鼠标点、或按箭头键都能把光标移到第10行)
现在的情况是:
可以找到VBA立即窗口的窗口句柄。 已知它的窗口类名是: VbaWindow
但现在的问题是,按找到的窗口句柄,用 SendMessage( ) 发送按键消息,没有起到想要的作用。
用 GetWindowText( ) ,也只是得到“立即窗口”这四个字,没能取得窗口内的文本。
很怀疑是: “VbaWindow”内另外再包含了一个 RichTextBox ,但无法得到它的句柄!
现在发个贴子,看能不能找到高人解决我的问题。最想要的是解决上面⑴中所说,⑵万一无法解决也没关系了。
因为是要在VBA中使用,所以尽量不要用“远程注入”之类的技术来做。这方面我还没有实际操作过,担心代码移植
上会有问题。
最好的代码是用 VB6/VBA +Win32 API 来解决,用C++、Delphi 的代码也行。
用 .NET 类库的代码就算了……,我最讨厌 .NET Framework ,并且这种代码移植到 VBA中的可能性也几乎为0。
可以直接从 VBA“立即窗口”的句柄开始写(直接写入在你的机子上实际的窗口句柄值),找窗口的过程略去。
没有应用过 VBA的,可以打开 Word、Excel什么的(要用M$的产品),然后按 Alt + F11 打开 VBA编辑器。
如果立即窗口没有显示出来,可以按一下 Ctrl + G 把窗口打开(默认情况,它是内联窗口,你注意下屏幕下方),
然后随便在“立即窗口”内粘贴几行文本,进行试验。
这个贴子先挂100分吧(我在这儿最多也只能发100分的),解决问题后再加分结贴(万一不能加,我另外开贴子)。
期待能有大神帮我解决问题………………