AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank Superbase ?
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank Superbase ?

Ein Thema von hoika · begonnen am 20. Aug 2007 · letzter Beitrag vom 5. Aug 2025
Antwort Antwort
Seite 5 von 5   « Erste     345   
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
697 Beiträge
 
FreePascal / Lazarus
 
#41

AW: Datenbank Superbase ?

  Alt Gestern, 15:45
ich kann mich an ein Projekt erinnern, wo wir auch aus einer fremdsoftware die daten
mit ocr exportiert haben, weil der eigentliche softwarehersteller da irgendwas
selbstgestricktes zum speichern benutzt hatte und kein Bock drauf hatte, das die daten
zu einer anderen Plattform exportiert werden sollen, um ihn da so aus dem Projekt
rauszunehmen. seine Kunden zu erpressen hat sich aber nie bewährt ....

ich weiss noch das wir da eine minimal anwendung geschrieben haben, die den mausklick
auf den next button simuliert hat, der in der altsoftware im maximierten modus halt immer
an der selben position war, dann haben wir im hintergrund nircmd.exe gestart und hatten den
screen in einer png datei und im next step wurde dann tesseract aufgerufen um daraus einen
text zu generieren. (beides freie software https://www.nirsoft.net/utils/nircmd.html
https://tesseract-ocr.github.io/tess...tallation.html, bei tesseract ggf -l deu
nicht vergessen weil sonst umlaute seltsam kommen).

nach einigen test wussten wir ganz grob wie lange das braucht und dann lief das ganz über
nacht durch und am nächsten tag hatten wir die kompletten inhalte aus der Maske als text
datei, zwar noch ziemlich seltsam strukturiert, aber das war dann simpel umsetzbar für die neue
db.

Der eigene pascal quelltext dafür war keine 30 zeilen lang und der Aufwand hielt sich in grenzen.

bei dem projekt ging es zwar nur um die Kundendatenmaske, die in der altsoftware relativ simpel
war, aber es waren mehr als 10000 records drin, daher war abtippen keine echte alternative.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
638 Beiträge
 
Delphi XE6 Enterprise
 
#42

AW: Datenbank Superbase ?

  Alt Gestern, 17:12
Die meißten Windows Programme verwenden ja Dialoge in denen alle Edits auf Windows Controls basieren. Irgendwo hier oder in der EE flog mal ein Programm rum was das auslesen schön demonstriert hat.
Bei AutoIt ist so ein Programm dabei, "Au3Info", damit geht das.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.563 Beiträge
 
Delphi 12 Athens
 
#43

AW: Datenbank Superbase ?

  Alt Gestern, 18:29
Jupp, hier und überall sollten sich Millionen Beispiele finden lassen.


Erstmal das Suchen:

* Es gibt dutzende Programme, für sowas, wie z.B. Bei Google suchenWinSpy oder [GOOGLE]Spy++[/GOOGLE]
und ich bin mir fast sicher, dass sich auch in der DP mindestens ein Programm finden lässt.

* Aber es geht auch selbst:
Ein TEdit, zwei TMemo und ein TTimer (z.B. mit 100 ms Interval)
Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
var
  P: TPoint;
  H: HWND;
  S: string;
  L: Integer;
begin
  GetCursorPos(P);
  H := WindowFromPoint(P);
  if H <> 0 then begin
    SetLength(S, 256);
    L := GetClassName(H, PChar(S), Length(S) + 1);
    SetLength(S, L);
    Edit1.Text := S;

    L := GetWindowTextLength(H);
    SetLength(S, L);
    if L > 0 then
      GetWindowText(H, PChar(S), L + 1);
    Memo1.Text := S;

    SetLength(S, 256); // ja, nachfolgend bin ich mal bissl schlampig (zeige auch nur den ClassName ohne die Caption/ComponentName, welche man aber für die Suche gebrauchen könnte, aber z.B. einfach die Maus auf die TitelLeiste ...)
    Memo2.Lines.BeginUpdate;
    Memo2.Clear;
    while H <> 0 do begin
      GetClassName(H, PChar(S), 256);
      Memo2.Lines.Add(PChar(S));
      H := GetParent(H);
    end;
    Memo2.Lines.EndUpdate;
  end else begin
    Edit1.Text := '(none)';
    Memo1.Clear;
    Memo2.Clear;
  end;
end;
Und nun die Maus über den Bildschirm flutschen lassen.


Bezüglich dem Auslesen steckt oben schon der Code mit drin, für die Vorschau.

Man braucht nun also nur noch die Handle der gwEdit-Controls.
HWND = Window Handle

Für die Suche wurde das HWND des Controls unter dem Mauszeiger genommen,
aber jetzt nutzen wir den gefundenen Namen/Text, um damit das Control zu suchen.

MSDN-Library durchsuchenFindWindow
MSDN-Library durchsuchenFindWindowEx / Hier im Forum suchenFindWindowEx
MSDN-Library durchsuchenEnumWindows / Hier im Forum suchenEnumWindows

Einmal lässt sich damit das gewünschte Fenster finden
und dann auf diesem Fenster auch die entsprechenden Edit-Controls.

Rate mal, warum Windows Windows heißt?
OK, eigentlich wegen der Fenster,
aber in Wirklichkeit ist zufällig alles ein Fenster (Window) ... egal ob Fenster, Panel, PageControl, aber eben auch die einzelnen Edit-Controls und Buttons.
(außer die Anwendung malt alles selbst, wie z.B. im FireMonkey oder Java)


Und hat man z.B. einen Button gefunden, so läßt er sich auch drücken.
MSDN-Library durchsuchenSendMessage/MSDN-Library durchsuchenPostMessage
mit BM_CLICK
oder WM_LBUTTONDOWN und WM_LBUTTONUP
oder WM_KEYDOWN und WM_KEYUP (VK_SPACE oder VK_RETURN).


PS: Delphi-TLabel sind keine "echten" WinControls, drum lässt sich so ihr Text nicht auslesen.
Das "echte" TEXT-Control wäre Delphi-Referenz durchsuchenTStaticText.

Außerdem lassen sich disablete Controls nicht suchen, da sie nicht auf Messages reagieren und WindowFromPoint durch sie hindurch guckt, auf deren Parent.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (Gestern um 18:44 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 09:45 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