![]() |
Probleme mit Adobe Reader
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:
soo es funktioniert auch alles bis auf die letzte Zeile ...
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; 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 :) |
Re: Probleme mit Adobe Reader
Hat das Eingabefenster denn den Focus?
|
Re: Probleme mit Adobe Reader
Zitat:
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); |
Re: Probleme mit Adobe Reader
Hat zwar nix mit dem Problem zu tun, aber mach mal noch ein begin-end rein:
Delphi-Quellcode:
MFG
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; Patti |
Re: Probleme mit Adobe Reader
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; |
Re: Probleme mit Adobe Reader
Zitat:
dachte ich nehm ich einfach danke probier ich mal :) danke es funktioniert jetzt ... das handle suchen hab ich aber so gelassen :) danke |
Re: Probleme mit Adobe Reader
hey
könnt ihr euch das nochmal angucken ? :) ich hab das jetzt so gelöst :
Delphi-Quellcode:
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'
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 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 .... |
Re: Probleme mit Adobe Reader
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... |
Re: Probleme mit Adobe Reader
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 ... |
Re: Probleme mit Adobe Reader
habt ihr denn ne idee woran das liegen könnte ?
|
Re: Probleme mit Adobe Reader
Zitat:
Uli |
Re: Probleme mit Adobe Reader
Das Acrobat ActiveX Control (TAcroPDF) benutzt als Grundlage den Acrobat Reader. Denn wenn dieser nicht installiert ist, funkioniert auch nicht das ActiveX Control.
|
Re: Probleme mit Adobe Reader
Zitat:
... habt ihr denn keine idee wo mein fehler sien könnte ?! |
Re: Probleme mit Adobe Reader
Soso,
da ist ![]() Wenn Du mit dem Reader nicht weiter kommst, versuch es doch Binär. PDF32000_2008[1].pdf ist dafür sehr empfehlenswert. Gruß K-H |
Re: Probleme mit Adobe Reader
Zitat:
sorry ich bin einfach zu dämlich um zu verstehn was du mir sagen willst ... also die pdf-datei sagt, nach dem was ich gelesen hab, im großen und ganzen nur was der reader bzw die pdf'S für funktionen haben oder ?! und wie genau meinst du das mit binär ? Edit : und zu den Rechten, diese blöden Rights verbieten mir z.b. das Dokumtent zu drucken (bzw. es erlaubt mir eigl. nur 15 tage lang die datei zu lesen mehr nicht ...) |
Re: Probleme mit Adobe Reader
Ich würde mal sagen: keine Chance!
Die PDF Daten sind garantiert verschlüsselt und mit Prüfsummen versehen. Da kann nichts geändert werden. |
Re: Probleme mit Adobe Reader
das will ich doch auch garnicht ändern...
ich kann sie doch (für 15 tage) angucken und nun möchte ich den Reader so ändern, dass ich von einem Programm aus jede seite angucken kann die ich will ... macht jertzt vllt nicht so viel sinn haber hat schon seinen hitnerganken, denn ich hier wohl nicht äußern darf weil ich sonst ärger krieg. aber es geht ja nur darum, wieso er bei meinem code :
Delphi-Quellcode:
ne fehlermeldung rausgibt als würde er '0' eingeben oder garnichts und dann 'enter' drücken...
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 das passiert nicht wenn ich mein code durchsteppe (mit F7) und das versteh ich nicht ... wisst ihr wodran das liegen könnte ?! darum dreht sich ja meine frage |
Re: Probleme mit Adobe Reader
Zitat:
Zitat:
Zu binär ein Artikel in der ![]() Gruß K-H |
Re: Probleme mit Adobe Reader
ich versteh nicht was mir das binär bringen soll ...
also ich wollte das so machen ich gebe in E_SZ eine Zahl ein und das Programm soll jede seite in dem Reader einmal öffnen d.h. in das Seiten-Edit des Readers eine Seitenzahl eingeben und enter drücken ... aber wenn ich die schleife einfach durchlaufen lasse schriebt der Reader ganz viele "'' ist kein gültiger wert" und das ist ja eigl. nicht gewollt, weil dann die schleife nichts mehr bringt .... jetzt ist die frage, wo denn in der schleife ein '' gesendet wird... das entsteh ( afaik nur wenn man 0 oder eine Seitenzahl > Gesamtseiten eingibt) ... aber das tu ich doch nie ?! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz