Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有方法从Excel中的公式栏获取文本和光标位置?_C++_Winapi_Excel_Xll - Fatal编程技术网

C++ 是否有方法从Excel中的公式栏获取文本和光标位置?

C++ 是否有方法从Excel中的公式栏获取文本和光标位置?,c++,winapi,excel,xll,C++,Winapi,Excel,Xll,我想从Excel中的公式栏中获取当前的(可能未提交的)文本(从加载项进程中)。所有“常用”技术都不起作用,比如GetWindowText(…)等 至于光标位置: GetCaretPos实际上可以工作(返回插入符号的x,y坐标),但是EM_CHARFROMPOS不能工作(总是返回0),所以这是一个死胡同 此功能是否通过COM或XLL API以任何方式公开 编辑:我还想指出,我认为我的大多数问题都来自这样一个事实,即公式栏(至少我99%确定)不是编辑控件,这可以通过查看其窗口类来查看。公式栏,实际上

我想从Excel中的公式栏中获取当前的(可能未提交的)文本(从加载项进程中)。所有“常用”技术都不起作用,比如GetWindowText(…)等

至于光标位置: GetCaretPos实际上可以工作(返回插入符号的x,y坐标),但是EM_CHARFROMPOS不能工作(总是返回0),所以这是一个死胡同

此功能是否通过COM或XLL API以任何方式公开


编辑:我还想指出,我认为我的大多数问题都来自这样一个事实,即公式栏(至少我99%确定)不是编辑控件,这可以通过查看其窗口类来查看。

公式栏,实际上Office中的大多数控件都是非标准的。发送标准消息不会成功


我想唯一的选择是对可执行代码进行反向工程。

SteveN,哪个版本的Excel? 控件将是一个窗口。Office 2010在这方面“更好”,使用了更多的标准控件。
您可以使用Spy监视发送到该控件的所有消息,并尝试模仿这些消息来查看您得到的消息。但是路还很长。

从2003年到2007年,没有任何解决方案适用于所有版本。在许多重要方面,2003年和2007年与2003年有很大不同。我对2003年和2007年做了一些深入研究,两个版本中的伪编辑框非常相似。两者都有CS_OWNDC,这可能表明实现者选择了直接绘制所有图形。这对你不好,因为它可能只是一扇普通的旧窗户。我找不到证据表明这是一个编辑框。来自Spy的消息日志也这么说。我怀疑你已经死在水里了。对控件进行分类也不会有任何效果,因为如果不抓起副本,你就无法“看到”DC上实际绘制的内容(停在那里,痛苦接踵而至).请你回到开头,描述一下你真正想要达到的目标,因为剥这只猫的皮可能不止一种方法。我认为没有其他方法可以这么说。我希望从公式栏中获取当前文本和光标位置。我的问题是,是否有可能通过Excel COM API或XLL API(而不是通过可怕的黑客攻击)实现这一点,而事实似乎并非如此。