AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Label einer anderen Anwendung auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Label einer anderen Anwendung auslesen

Ein Thema von matashen · begonnen am 1. Mär 2007 · letzter Beitrag vom 1. Mär 2007
Antwort Antwort
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#1

Label einer anderen Anwendung auslesen

  Alt 1. Mär 2007, 07:18
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.


Matthias
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Label einer anderen Anwendung auslesen

  Alt 1. Mär 2007, 07:27
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
Dominik
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Label einer anderen Anwendung auslesen

  Alt 1. Mär 2007, 13:20
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.
Dominik
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Label einer anderen Anwendung auslesen

  Alt 1. Mär 2007, 13:41
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 ?
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#5

Re: Label einer anderen Anwendung auslesen

  Alt 1. Mär 2007, 14:02
Weil n Label kein Fenster hat.
Der Text wird nur aufs Hauptfenster gezeichnet. Is deswegen auch (so gut wie) unmöglich auszulesn.
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Label einer anderen Anwendung auslesen

  Alt 1. Mär 2007, 14:10
Zitat von Rastaman:
Weil n Label kein Fenster hat.
Der Text wird nur aufs Hauptfenster gezeichnet. Is deswegen auch (so gut wie) unmöglich auszulesn.
ohh...hab ich net gewusst
Dominik
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Label einer anderen Anwendung auslesen

  Alt 1. Mär 2007, 14:17
Indiesem Thread wird versucht, auf ein TImage einer anderen Anwendung zuzugreifen. Vielleicht hilft dir das ja weiter.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Label einer anderen Anwendung auslesen

  Alt 1. Mär 2007, 14:30
Zitat von NamenLozer:
Indiesem Thread wird versucht, auf ein TImage einer anderen Anwendung zuzugreifen. Vielleicht hilft dir das ja weiter.
Ja, wir versuchen alles . Derzeit sind wir dabei ein Label zu lesen. Im Prinzip funktioniert es auch, wenn man ein Programm hat, was mit D7 programmiert wurde (bzw. D2006 geht anscheinend auch)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


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:19 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