AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

handle und thread

Ein Thema von NimmDies · begonnen am 22. Jan 2003 · letzter Beitrag vom 28. Jan 2003
Antwort Antwort
NimmDies

Registriert seit: 22. Jan 2003
3 Beiträge
 
#1

handle und thread

  Alt 22. Jan 2003, 17:28
folgende Problematik:

Für einen "Bekannten" programmiere ich einen Hilfstextgenerator. Dieser soll für andere und laufende Anwendungen Hinweistexte einblenden, sobald dieser auf bestimmte Felder oder Buttons kommt. Ähnlich ToolTip. Allerdings ist die Informationsmenge so groß, dass ich mich entschlossen habe unten rechts ein dementsprechendes Fenster zu öffnen. Mein Problem ist nicht Handle (parent/child) oder die jeweiligen ID und Threads zu erhalten sondern eine eindeutige Zuordnung zu generieren wenn er das Programm mit anderem Handle startet. Kann ich irgendwie die Button oder Edit-Felder auslesen und zuordnen? Ich möchte es vermeiden mich durch die API zu wühlen Jemand eine Idee? Vielleicht doch ToolTip ersetzen?

Dank im Voraus.
Man/Frau kann nicht alles wissen, zu wissen wo es steht ist auch schon eine Menge wert.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 22. Jan 2003, 21:09
Moin NimmDies,

erst einmal herzlich willkommen in der Delphi Praxis.

Wenn ich Dein Problem richtig verstanden habe, sollten Dir die APIs EnumWindows/EnumChildWindows weiterhelfen.
Dazu solltest Du hier auch einige Beispiele finden können.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#3
  Alt 22. Jan 2003, 22:22
wenn ich mich recht entsinne könntest du, falls du das handle des buttos bzw. des fensters gefunden hast, mit hilfe von SetWindowLong alle nachrichten an diesen button abfangen und entsprechend bearbeiten. da könntest du eventuell die mouseover ereigniss abfangen und den entsprechenden hilfetext einblenden.

falls ich damit völlig daneben liege bitte ich um korektur. ich hab mit der windows-api schon 2 jahre nicht mehr gearbeitet und fange grade erst wieder an zu lernen
  Mit Zitat antworten Zitat
NimmDies

Registriert seit: 22. Jan 2003
3 Beiträge
 
#4
  Alt 27. Jan 2003, 16:44
Danke für die schnellen Antworten.
Wie so häufig habe ich eine "Kleinigkeit" vergessen zu erwähnen. Das mit Hilfstext zu versehende Programm ist keine Delphi Anwendung sondern ein Fremdprogramm. Delphi intern mit enum (parent/child) ist kein Problem doch bei einem Fremdprogramm kann ich nicht gezielt auf ein Eingabefeld und/oder Button zugreifen bzw. abfangen. Oder doch? Und wenn wie?
Man/Frau kann nicht alles wissen, zu wissen wo es steht ist auch schon eine Menge wert.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 27. Jan 2003, 16:54
Moin NimmDies,

mit Hilfe von EnumWindows usw. kannst Du Dir alle Fenster heraussuchen, die gerade auf dem System vorhanden sind.
Das hat nichts mit Deinem eigenen Programm zu tun. Für dieses bräuchtest Du diese Funktionen ja auch nicht, da Du ja direkt auf alles zugreifen könntest (ginge natürlich auch mit Hilfe der Funktionen).

Weitere Stichworte, ausser EnumWindows/EnumChildWindows wären in Deinem Falle wohl auch noch GetClassName (irgendwie musst Du ja auch herausbekommen, ob Du das richtige Control erwischt hast), sowie WM_GETTEXT/WM_SETTEXT und BM_CLICK. (zumindest wenn ich mir Dein Eingangsposting so ansehe).

Zu allen diesen Begriffen solltest Du hier im Forum fündig werden.

BTW: Eventuell kämen auch noch Hooks in Frage, aber damit kenn' ich mich nicht sonderlich gut aus.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#6
  Alt 28. Jan 2003, 20:15
kuck dir mal das subclassing tutorial von luckie an, sowas in die richtung meine ich.

du suchst das handle von dem button, leitest die WindowProc für diesen button auf dein programm um und fängst dann die WM_MOUSE-events ab, alle anderen events leitest du an den button weiter. wenn ein WM_MOUSE ereignis auftritt kannste dann den entsprechenden einblenden.

die benötigten windows-api funktionen für dein vorhaben sollten EnumWindows/FindWindowEx und SetWindowLong sein, such danach mal in der win32-sdk hilfe oder im web.

falls du jetzt nicht verstanden hast was ich meine kuck dir einfach mal die nonvcl-tutorials auf luckies seite an, da kannste viel von lernen. und nicht direkt verzweifeln, nonvcl-programmierung ist am anfang nicht einfach
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 28. Jan 2003, 20:42
Man kann nur Fenster subclassen, die im eigenen Prozess liegen. Willst du fenster eines anderen Prozesses subclassen muß du es mit einer DLL machen die du in diesen Prozess injezierst.

Meiner Meinung nach zu viel Aufwand. Warum sind denn zusätzliche Hilfetexte von so einer länge nötig?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#8
  Alt 28. Jan 2003, 20:46
neiiiiiiiiiin, verdammt! das klappt nicht?
  Mit Zitat antworten Zitat
NimmDies

Registriert seit: 22. Jan 2003
3 Beiträge
 
#9
  Alt 28. Jan 2003, 22:16
Danke für Eure Hinweise.
Ich habe nun ein Mouse Hook eingerichtet und fange so die Ereignisse der Maus ab. Jede Art der Auswertung funktioniert, allerdings kann ich das Ergebnis und die Zuordnung nicht replizieren. Starte ich das Fremdprogramm neu erhält logischer Weise dieses Programm neue Handles und neue SubClasses.
Wieviel Text ist denn maximal über ToolTip möglich? Kann ich die vom Fremdprogramm ausgegebenen ToolTips abfangen und ersetzen???
Fragen über Fragen Sorry
Was scheint am einfachsten zu realisieren?

Dennoch Danke im Voraus
Man/Frau kann nicht alles wissen, zu wissen wo es steht ist auch schon eine Menge wert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10
  Alt 28. Jan 2003, 22:24
FindWindow. FindWindowEx, EnumWindows. EnumChildWindows.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 03:10 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