Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TrackBar einer anderen Anwendung fernsteuern (https://www.delphipraxis.net/177269-trackbar-einer-anderen-anwendung-fernsteuern.html)

Amateurprofi 28. Okt 2013 22:47

TrackBar einer anderen Anwendung fernsteuern
 
Ich beschäftige mich zurzeit damit, ein Programm zu schreiben, das ein Telefonie-Programm "fernsteuert".
Der Sinn meines Programms ist, blinden Personen die Navigation in bestimmten Telefonchats zu erleichtern und gibt deshalb alle Hinweise und Hilfetexte per Sprachausgabe aus.
Da bei bestehender Verbindung auch die Telefonchats ständig "sabbeln" möchte ich es ermöglichen, die aus den Telefonchats stammenden Ausgaben, die über das "ferngesteuerte" Telefonie-Programm ausgegeben werden, zu unterdrücken.

Das Telefonie-Programm bietet hierfür zwei Möglichkeiten:
1) Ein TSpeedButton zum ein-/ausschalten der Ausgabe.
2) Eine TTrackBar, mit der die Lautstärke verändert werden kann.
Leider sind beide über die für das Telefonie-Programm verfügbare Schnittstelle nicht erreichbar.

Meine Idee ist, mit FindWindow und EnumChildWindows das Handle der Trackbar zu holen und die Property "Position" der Trackbar zu verändern.

Mit
SendMessage(fVolumeTrackBar,TBM_SETPOS,1,Volume); (fVolumeTrackbar ist das Handle der TrackBar)
wird zwar die "Position" der Trackbar wunschgemäß eingestellt, jedoch hat das keine Auswirkung auf die Lautstärke.
Ich vermute, dass die TrackBar keine CN_VSCROLL Message erhält und deshalb die im OnChange stehende Prozedur " VolumeOutTrackBarChange" nicht ausgeführt wird.

Frage:
Wie kann ich es bewerkstelligen, dass die TrackBar eine entsprechende Message erhält?

Alternativ:
Gibt es / weiß jemand, wie ich für den SpeedButton, der die Ausgabe ein-/ausschaltet, ein Click auslösen kann.
(Die Maus auf den SpeedButton stellen und einen Mausklick simulieren scheidet aus, weil das Telefonie-Programm minimiert ist.)

Das Telefonie-Programm ist hier erhältlich http://www.phoner.de/download_de.htm

Die TrackBar und der SpeedButton sind so definiert:

Code:
    object VolumeOutTrackBar: TTrackBar
      Left = 49
      Top = 42
      Width = 22
      Height = 202
      Hint = 'Wiedergabelautst'#228'rke'
      LineSize = 4096
      Max = 65535
      Orientation = trVertical
      ParentShowHint = False
      PageSize = 4096
      Frequency = 8092
      ShowHint = True
      TabOrder = 1
      OnChange = VolumeOutTrackBarChange
    end

  object btSpeaker: TSpeedButton
    Left = 414
    Top = 269
    Width = 28
    Height = 28
    AllowAllUp = True
    GroupIndex = 2
    Flat = True
    ParentShowHint = False
    PopupMenu = PopupWaveOut
    ShowHint = True
    OnClick = btSpeakerClick
  end

sx2008 28. Okt 2013 23:43

AW: TrackBar einer anderen Anwendung fernsteuern
 
Die Software "Phoner" wird doch aktiv weiter entwickelt und man spricht deutsch.
Schreib doch den Author an und bitte ihn ein Mute()-Funktion und/oder SetVolume()-Funktion in die ActiveX-Schnittstelle aufzunehmen.
Dieses Gemurkse mit FindWindow() ist doch grausam.

Amateurprofi 29. Okt 2013 00:10

AW: TrackBar einer anderen Anwendung fernsteuern
 
Zitat:

Zitat von sx2008 (Beitrag 1233549)
Die Software "Phoner" wird doch aktiv weiter entwickelt und man spricht deutsch.
Schreib doch den Author an und bitte ihn ein Mute()-Funktion und/oder SetVolume()-Funktion in die ActiveX-Schnittstelle aufzunehmen.
Dieses Gemurkse mit FindWindow() ist doch grausam.

Recht hast Du.
Habe einen entsprechenden Vorschlag ins Forum gestellt.

Jedoch hätte ich trotzdem gern Vorschläge, wie man es selbst lösen kann, denn der Wunsch der Fernsteuerung anderer Programme ist ja eher allgemeingültig.

Volker Z. 29. Okt 2013 00:58

AW: TrackBar einer anderen Anwendung fernsteuern
 
Hallo,

Zitat:

Zitat von sx2008 (Beitrag 1233549)
[...] Dieses Gemurkse mit FindWindow() ist doch grausam.

Jepp, sehe ich auch so.

Zitat:

Zitat von Amateurprofi (Beitrag 1233550)
Jedoch hätte ich trotzdem gern Vorschläge, wie man es selbst lösen kann, denn der Wunsch der Fernsteuerung anderer Programme ist ja eher allgemeingültig.

Hast Du schon mal versucht Deiner
Delphi-Quellcode:
SendMessage (fVolumeTrackBar, TBM_SETPOS, 1, Volume);

eine
Delphi-Quellcode:
SendMessage (fVolumeTrackBar, CN_HSCROLL, 0, 0);

hinterher zu schießen (scheint ja ein Delphi-Programm zu sein)?

Gruß

Amateurprofi 29. Okt 2013 01:34

AW: TrackBar einer anderen Anwendung fernsteuern
 
Nein, ich hatte es mit WM_VSCROLL versucht, ich Trottelkopp.
Mit CN_VSCROLL (ist eine vertikale TrackBar) funktioniert es.

Vielen Dank, Volker.

Volker Z. 29. Okt 2013 02:03

AW: TrackBar einer anderen Anwendung fernsteuern
 
Hallo.

Zitat:

[...] ich Trottelkopp
Nöh, ne.

Zitat:

[...] (ist eine vertikale TrackBar)
Sorry, hab ich wohl irgendwie übersehn.

Zitat:

[...] Habe einen entsprechenden Vorschlag ins Forum gestellt.
Kannst ja mal berichte was bei rauskommt.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 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