AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Probleme mit Adobe Reader

Ein Thema von gangs-taas · begonnen am 15. Nov 2009 · letzter Beitrag vom 17. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2   
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#1

Probleme mit Adobe Reader

  Alt 15. Nov 2009, 15:32
hey,
ich möchte mit einem Programm die seitenzahl von dem Reader ändern.
Ja klingt irg. sinnlos ist aber nur ein teil eines PRogrammes...

so ich hab mir gedacht:
-ich such das Handle des Feldes wo man die Seitenzahl eingibt
-ich lösch die Zahl aus diesem Editfeld
-Ich schreib eine neue Zahl hinein
-Ich schreib ein "enter" hinein.

umgesetzt hab ichdas so :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Handle : THandle;

function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var
  i: Word;
  hChild: HWND;
begin
  hChild := 0;
  Result := 0;
  Dec(ChildNr);
  for i := 0 to ChildNr do
  begin
    hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil);
    if hChild = 0 then
      Break;
    Result := hChild;
  end;
end;
function Handle_suchen_Edit : THandle ;
var
  wndMain, wndChild: HWND;
begin
  wndMain := FindWindow('AcrobatSDIWindow',nil);
  if wndMain <> 0 then
  begin
    wndChild := FindWindowEx(wndMain, 0, 'AVL_AVView', nil);
    wndChild := FindWindowEx2(wndChild,'AVL_AVView', 10);
    wndChild := FindWindowEx2(wndChild,'Edit', 3);
    if wndChild <> 0 then
    begin
      Result := wndChild ;
    end
    else
      Result := 0;
  end
  else
    Result := 0;
end;

begin
  Handle := Handle_suchen_Edit ;
  if Handle <> 0 then
  SendMEssage(Handle, VK_Clear,0,0);
  SendMessage(Handle, WM_CHAR, Ord(55), 0);
  SendMEssage(Handle, VK_Return,0,0);
end;
soo es funktioniert auch alles bis auf die letzte Zeile ...
wisst ihr wieso ich da kein Return rein senden kann ?!
also er trägt in das edit-feld die Seitenzahl ein, die Ich will aber er ghet nicht zu dieser hin...
aber wenn ich von hand in das Feld klick und "enter" drück geht der dahin ...

wisst ihr woran das liegen könnte ?!

lg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 15:33
Hat das Eingabefenster denn den Focus?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 15:39
Zitat von Luckie:
Hat das Eingabefenster denn den Focus?
Braucht es nicht zwingend.

Delphi-Quellcode:
  SendMessage(Handle, VK_CLEAR, 0, 0);
  SendMessage(Handle, WM_CHAR, Ord(55), 0);
  PostMessage(Handle, WM_KEYDOWN, VK_RETURN, 0);
  PostMessage(Handle, WM_KEYUP, VK_RETURN, 0);
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 15:40
Hat zwar nix mit dem Problem zu tun, aber mach mal noch ein begin-end rein:

Delphi-Quellcode:
begin
  Handle := Handle_suchen_Edit ;
  if Handle <> 0 then
  begin // <-- hier
     SendMEssage(Handle, VK_Clear,0,0);
     SendMessage(Handle, WM_CHAR, Ord(55), 0);
     SendMEssage(Handle, VK_Return,0,0);
  end; // <-- und hier
end;
MFG
Patti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 15:50
Zudem kannst du die Handle_suchen_Edit Funktion etwas vereinfachen.

Delphi-Quellcode:
  function Handle_suchen_Edit: THandle;
  var
    wndMain, wndChild: HWND;
  begin
    Result := 0;
    wndMain := FindWindow('AcrobatSDIWindow', nil);
    if wndMain <> 0 then
    begin
      wndChild := FindWindowEx(wndMain, 0, 'AVL_AVView', nil);
      wndChild := FindWindowEx2(wndChild, 'AVL_AVView', 10);
      wndChild := FindWindowEx2(wndChild, 'Edit', 3);
      Result := wndChild;
    end;
  end;
Thomas
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#6

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 15:52
Zitat von toms:
Zudem kannst du die Handle_suchen_Edit Funktion etwas vereinfachen.

Delphi-Quellcode:
  function Handle_suchen_Edit: THandle;
  var
    wndMain, wndChild: HWND;
  begin
    Result := 0;
    wndMain := FindWindow('AcrobatSDIWindow', nil);
    if wndMain <> 0 then
    begin
      wndChild := FindWindowEx(wndMain, 0, 'AVL_AVView', nil);
      wndChild := FindWindowEx2(wndChild, 'AVL_AVView', 10);
      wndChild := FindWindowEx2(wndChild, 'Edit', 3);
      Result := wndChild;
    end;
  end;
den ocde hatte ich von "winspy"
dachte ich nehm ich einfach

danke probier ich mal


danke es funktioniert jetzt ...
das handle suchen hab ich aber so gelassen
danke
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#7

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 16:45
hey
könnt ihr euch das nochmal angucken ?
ich hab das jetzt so gelöst :
Delphi-Quellcode:
begin
  Handle := Handle_suchen_Edit ;
  if Handle <> 0 then
  begin
    for I := 49 to 48 + StrToInt(E_SZ.Text) do
    begin
      if (i > 57) then
      begin
        ZString := IntToStr(i-48);
        SendMEssage(Handle, VK_Clear,0,0);
        for y := 1 to Length(ZString) do
        begin
          ZZahl := StrToInt(ZString[y]);
          SendMessage(Handle, WM_CHAR, Ord(ZZahl+48), 0);
        end;
        PostMessage(Handle, WM_KEYDOWN, VK_RETURN, 0);
        PostMessage(Handle, WM_KEYUP, VK_RETURN, 0);
      end
      else
      begin
        SendMEssage(Handle, VK_Clear,0,0);
        SendMessage(Handle, WM_CHAR, Ord(i), 0);
        PostMessage(Handle, WM_KEYDOWN, VK_RETURN, 0);
        PostMessage(Handle, WM_KEYUP, VK_RETURN, 0);
      end;
    end;
  end;
end;
aber wenn ich das programm nicht schritt-für-schritt mit F7 durchstepp, sondern einfach durchlaufen lasse gibt mir der Reader die MEldung : 'In dem dokiment ist keine seite mit der Zahl "" vorhanden'

aber ich versteh nicht wo ich denn eine Zahl, die es nicht gibt an das dokument sende ?
vorallem wenn ich jede Zeile durchgeh kommt der fehler irg. nicht ....
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 18:09
Frage: Warum nimmst du nicht das Acrobat ActiveX Control (TAcroPDF)? Dann musst du nicht mich Sendmessage etc. rumschlagen.

Delphi-Quellcode:
  
AcroPDF1.LoadFile('Irgendeinepdf.pdf');
AcroPDF1.gotoNextPage;
etc...
Thomas
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#9

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 18:39
aber die Datei, die ich bearbeiten will, ist irg. speziell verschlüsselt => ich kann die z.b. nicht mit anderen Programmen aufmachen ...
d.h. ich muss den Reader ändern wenn ich ne seite blättern will ...
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#10

Re: Probleme mit Adobe Reader

  Alt 15. Nov 2009, 20:02
habt ihr denn ne idee woran das liegen könnte ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz