首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Adobe Reader的ActiveX控件中获取PDF文档的页码

从Adobe Reader的ActiveX控件中获取PDF文档的页码
EN

Stack Overflow用户
提问于 2011-05-05 03:54:47
回答 2查看 2K关注 0票数 0

我成功地使用了Delph7和Adobe Reader version7的ActiveX控件,从ActiveX组件(TAcroPDF)中打开的PDF文档中提取页码。我对升级到最新的Adobe阅读器很感兴趣,但Adobe reader 8(和9)中的一些更改阻止了我升级(我还没有测试Adobe 10/X)。对于Adobe 7,我使用Windows SDK函数EnumChildWindows来收集包含TAcroPDF组件的表单的子窗口,并找到一个名为AVPageNumView的控件,然后使用FindWindowEx来获取它的句柄。然后,我调用SendMessage来获取包含页码信息的控件的文本。在Adobe 8和9中,窗口/控件AVPageNumView似乎不再存在。因此,我被Adobe 7卡住了,仍然在寻找一种方法来获得页码,最好是Adobe 9或10/X。目标是不必用另一种技术完全重写,但如果这是唯一的解决方案,我对此持开放态度。

谢谢,迈克尔

EN

回答 2

Stack Overflow用户

发布于 2011-05-05 08:43:54

您正在使用wndclass名称(AVPageNumView)。显然,新版本中的类名发生了变化。您可以使用诸如WinDowse之类的工具来检查更新版本的Reader中的窗口,以找出新的类名。更新代码以首先检查旧的wndclass;如果找不到,请尝试查找新的wndclass。

票数 0
EN

Stack Overflow用户

发布于 2017-12-21 16:02:50

代码语言:javascript
运行
复制
function EnumWindowProc(pHwnd: THandle; Edit: Integer): LongBool; stdcall;
    function GetWindowTxt(gwtHwnd: THandle): string;
    var dWTextBuf: PChar;
        TextLen: Integer;
    begin
      TextLen := SendMessage(gwtHwnd, WM_GetTextLength, 0, 0);;
      dWTextBuf := StrAlloc(TextLen + 1);
      SendMessage(gwtHwnd, WM_GetText, TextLen + 1, Integer(dWTextBuf));
      Result := dWTextBuf;
      StrDispose(dWTextBuf);
    end;

    function GetClassNameTxt(gcnHwnd: THandle): string;
    var dWClassBuf: PChar;
    begin
      dWClassBuf := StrAlloc(1024);
      GetClassName(gcnHwnd, dWClassBuf, 1024);
      Result := dWClassBuf;
      StrDispose(dWClassBuf);
    end;

begin
  Result := LongBool(True);
  if (GetClassNameTxt(pHwnd) = 'AVL_AVView') and (GetWindowTxt(pHwnd) = 'AVPageView') then
  begin
    TEdit(Edit).Text :=  GetWindowTxt(FindWindowEx(pHwnd, 0, 'RICHEDIT50W', nil));
    Result := LongBool(False);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumChildWindows(AcroPDF1.Handle, @EnumWindowProc, LongInt(Edit1));
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5889122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档