![]() |
Label einer anderen Anwendung auslesen
Hallo zusammen,
ich hab zu meiner Frage schon im Forum und Google gesucht, hab aber nix passendes gefunden. Folgende Ausgangssituation: Ein Programm von mir zeigt Arbeitspläne in übersichtlicher Form da. Auf unseren Arbeitsplätzen läuft ein Arbeitssystem, das mittels einer 16-Tasten Spezialtastatur bedient wird. Ziel ist es meine Anwendung für die Arbeitsplätze verfügbar machen und die Bedienung komplett mittels der 16 Tasten zu ermöglichen. Bis jetzt hab ich folgendes bereits Integriert. Wecheln zu meinem Programm über Hooking zurückwechseln zum Arbeitsprogramm. - Bedienung meiner Anwendung über Tastenfeld Folgendes Problem hab ich jetzt noch zu lösen: Die Arbeitspläne sind unter eine ID auf dem Server abgelegt. Das Arbeitsprogramm bekommt die benötigten Daten mittels eines Datamatrix-Scanners und holt dann alle dazugehörigen Daten vom Server inkl ID des Arbeitsplans. In einem Feld des Arbeitsprogramms steht dann die ID des Arbeitsplans. Wie kann ich nun aus diesem Programm die ID "auslesen" damit in meiner Anwendung niemand die ID eintippen muß, sonst müßte ich eine "normale" Tastatur am Arbeitplatz noch anbringen, was ich aber vermeiden möchte. Meine Idee wäre demnach: das handle des labels einmalig ermitteln (Kann ja einen Testarbeitslauf mit bekannter ID aufrufen) den Namen des Labels ermitteln (??? keine Ahnung wie das geht) zukünftig über den zuvor ermittelten Namen das Label-handle ermitteln und ID auslesen Ich hoffe ich hab mein Problem deutlich formuliert, und es ist jemand online der mir helfen kann. :coder2: |
Re: Label einer anderen Anwendung auslesen
du musst jedesmal das handle ermitteln und dann den text auslesen...
heut mittag nach der schule kann ichs dir erklären^^ schau dir mal das programm WinSpy an |
Re: Label einer anderen Anwendung auslesen
ok
mit WinSpy kannst du dir einen source-code für delphi zusammenstellen lassen der dir das Handle von deinem Label zurückgibt. dazu einfach winSpy starten, "Fenster auswählen" auswählen und auf dein programm klicken wo das label drinne ist. jetzt werden dir alle komponenten in deinem programm gezeigt...dort einfach das label aussuchen und oben auf "Code" klicken. am schluss hast du dann in der variablen wnd das handle vom label. und dann holst du dir einfach den text:
Delphi-Quellcode:
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND; var i: Word; hChild: HWND; begin hChild := 0; Result := 0; ChildNr := ChildNr - 1; for i := 0 to ChildNr do begin hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil); if hChild = 0 then Exit; Result := hChild; end; end; function GetText: String; var wnd: HWND; len: Integer; s: String; begin wnd := FindWindow('bla','bla'); // anpassen! wnd := FindWindowEx2(wnd,'TLabel', 3); // anpassen! //... if wnd <> 0 then begin len := SendMessage(wnd, WM_GETTEXTLENGTH, 0, 0); SetLength(s, len); SendMessage(wnd, WM_GETTEXT, len + 1, Integer(@s[1])); end; result := s; end. |
Re: Label einer anderen Anwendung auslesen
OK den WinSpy hab ich mir schon angesehen, aber leider zeigt der mir keine TLabel an, alles andere des Fensters schon.
Der Code sieht aber auch verflixt gut aus. Werd testen ob mich das weiter bringt. Mich würde aber trotzdem interessieren warum WinSpy keine TLabel anzeigt Kann mir das jemand erklären ? |
Re: Label einer anderen Anwendung auslesen
Weil n Label kein Fenster hat.
Der Text wird nur aufs Hauptfenster gezeichnet. Is deswegen auch (so gut wie) unmöglich auszulesn. |
Re: Label einer anderen Anwendung auslesen
Zitat:
|
Re: Label einer anderen Anwendung auslesen
In
![]() |
Re: Label einer anderen Anwendung auslesen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 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