AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TAudioVolume Komponente incl. System Mixer
Thema durchsuchen
Ansicht
Themen-Optionen

TAudioVolume Komponente incl. System Mixer

Ein Thema von EWeiss · begonnen am 6. Mai 2018 · letzter Beitrag vom 24. Jul 2019
Antwort Antwort
Seite 18 von 21   « Erste     8161718 1920     Letzte »    
EWeiss
Projekt entfernt..

Geändert von EWeiss (24. Jul 2019 um 05:45 Uhr)
 
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#171
  Alt 31. Mai 2018, 19:58
Hey Danke! Ich bin ja der "ICH DREH AM RAD" Typ, sowas LIEBE ich echt!!!
In sogut wie all meinen Apps bastel ich diese Funktion ein, alles wo drehen einen Sinn ergibt lass ich auch drehen.
Du wirst es bei Dir bestimmt getestet haben aber anders als ich, dreh mal Mausrad schnell, hoch runter wie Du magst, also nicht nur ein langsamen Schritt sondern mehrere, damit kommt App nicht klar.
Lieber darauf verzichten oder versuchen zu fixen
(ich vermute die schnelle umschaltung der interfaces da passiert irgendwo was böses, meine mini lösung wäre bei mausrad aktivität eine pause einlegen bevor aktion ausgeführt wird (100-200msec eventuell?) so das mehr Rad Aktivitäten passieren können ohne gleich und jetzt und sofort ein ereignis auslösen, also Gfx Update = Ja, Interface zuweisen = nach Pause)

(ich weiß ja nicht ob integriert, laut/leise da dreht sich noch nichts, nicht falsch auffassen, wenn noch nicht integriert nicht nur wegen mir Deine wertvolle Zeit da verplempern)

edit
Frage: Was passiert bei Dir bei schnellen Rad aktivitäten? Vielleicht bin ja auch nur ich der Fehler.

Geändert von KodeZwerg (31. Mai 2018 um 20:06 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#172
  Alt 31. Mai 2018, 20:02
Zitat:
Lieber darauf verzichten oder versuchen zu fixen
Ok werd mal schaun.. wenn zu viel Trouble dann lass ich es
Werde es erst mal wieder löschen.. LOL

Hatte da mal für MediaPortal etwas geschrieben muss das mal rauskramen.

Zitat:
Frage: Was passiert bei Dir bei schnellen Rad aktivitäten? Vielleicht bin ja auch nur ich der Fehler.
Anwendung hängt sich auf.

PS:
Eventuell über GetTickCount dann erst nach 3 Sekunden ein weiteres umschalten zulassen.
Im Moment aber nicht so wichtig.

gruss

Geändert von EWeiss (31. Mai 2018 um 20:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#173
  Alt 31. Mai 2018, 21:04
In meinen Apps, falls ein "OnChange"-Ereignis stattfindet und ich Rad supporte, hab 150msec Timer wenn der fertig dann Aktion falls nochmal Rad Zeit wieder auf 150msec usw usf keine 3000, das reicht total aus und macht sich für User nicht wirklich bemerkbar, allerdings sollte dann eine Rad Aktion unterdrückt werden solange der die Interfaces lädt. Das war jetzt nicht Non-Vcl ausgedrückt aber ich wette Du weißt mehr als Bescheid wie man ein Timer so was machen lässt nachdem die Uhr abgelaufen ist
Zitat:
Im Moment aber nicht so wichtig.
  Mit Zitat antworten Zitat
EWeiss
 
#174
  Alt 31. Mai 2018, 21:11
GetTickCount ist ein Timer. Der genauste den ich kenne.
Na ja 150 MS sollten reichen.
Gebe mich dran wenn es etwas kühler geworden ist.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#175
  Alt 31. Mai 2018, 21:16
Ja klar, Deins zählt hoch, meins zählt runter
War murks, Intern zählt der bestimmt auch hoch, habs vergessen zu überprüfen und bin still.

Geändert von KodeZwerg (31. Mai 2018 um 21:22 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#176
  Alt 1. Jun 2018, 00:08
Ja klar, Deins zählt hoch, meins zählt runter
War murks, Intern zählt der bestimmt auch hoch, habs vergessen zu überprüfen und bin still.
Was soll's hier das Update.. ist wieder was kälter so das man Arbeiten kann.

Nur WHEEL für die ListBox..
Für die Lautstärke wäre zu viel des guten. sorry das lasse ich so wie es ist.
Dreh dich aber jetzt nicht wund nur um das Teil zum Absturz zu bringen.. dürfte schwer fallen.

Ich habe jetzt schon vor lauter drehen Hornhaut an den Fingern
Das Teil will einfach nicht abstürzen.

Ach ja kein Timer nothing! LOL

Delphi-Quellcode:
      WM_MOUSEWHEEL:
        begin
          if ID = ID_LIST_DEVICE then
          begin
            If wP > 0 Then
              ID := _UP
            else
              ID := _DOWN;

            gSprBackground.GD_SetObjectTextEx(ID_LIST_TEXT, PWideChar(lstDeviceMsg(ID)), true);

            Lbl := TLabel.Create(nil);
            Lbl.AutoSize := True;

            // zentrierten Eintrag suchen
            for IntI := 0 to (lstDevice.ListCount(lstDevice.Handle) - 1) do
            begin
              Lbl.Caption := AudioVolume1.AudioDeviceInfo(IntI).DeviceName;
              if (Lbl.Width > MaxLenDeviceName) then
              begin
                Lbl.Caption := Lbl.Caption + '...';
                while Lbl.Width > MaxLenDeviceName do
                  Lbl.Caption := Copy(Lbl.Caption, 1, Length(Lbl.Caption) - Lbl.Font.Size) + '...';
              end;
              // Zentrierter Eintrag von Max 5 Sichtbaren Einträgen gefunden
              if lstDevice.ListGetText(lstDevice.Handle, 3) = Lbl.Caption then
              // Raus hier
                break;
            end;

            // Hint zuweisen
            MainClass.Hint := AudioVolume1.AudioDeviceInfo(IntI).Description;
            gSprMaster.GD_SetObjectImageLabel(ID_TVOLUME, MainClass.Hint);
            // Icon erstellen
            IconHandle := AudioVolume1.LoadMasterIcon(PWideChar(AudioVolume1.AudioDeviceInfo(IntI).IconPath));
            MainClass.CreateMasterIcon(56, 9, IconHandle);

            AudioVolume1.SelectAudioDevice(IntI);

            // Device Namen zuweisen
            MainClass.DeviceName := AudioVolume1.AudioDeviceInfo(IntI).Description;
            gSprMaster.GD_SetObjectTextEx(ID_DEVICENAME, PWideChar(MainClass.DeviceName), true);
            // Slider position aktualisieren
            percent := round(AudioVolume1.GetMasterVolume * 100);
            SetThumbVert(ID_THUMB_VERT, gSprMaster, ID_THUMB_VERT, ID_SLIDER_VERT, percent);
            // Label freigeben
            Lbl.free;
          end;
        end;
gruss

Geändert von EWeiss ( 5. Jun 2018 um 10:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#177
  Alt 1. Jun 2018, 01:59
mini Feedback: hab nur Rad getestest nichts anderes und es ist wie Du schreibt UNBESIEGBAR, ich kann ja mal nen Rad-Emulator mit 1ms Takt basteln um Schmerzgrenze festzustellen aber im Otto-Normal-Verbraucher Sinne = Diese Funktionalität ist jetzt Marktreif, hast Du toll hinbekommen!!

edit
Eine Sache viel mir auf, vielleicht geht das ja auch noch, wenn sich Deine Funktion mit Rad auf ein Interface geeinigt und ausgewählt hat, kannst Du da bitte auch das klick Geräusch abspielen lassen? Und vielleicht während man Scrollt das Geräusch auf 20%? Mann hab ich um diese Stunde merkwürdige Gedanken. Ich sollte mich mal ausruhen also nimm das nicht Ernst wenns nicht reinpasst

Geändert von KodeZwerg ( 1. Jun 2018 um 02:05 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#178
  Alt 1. Jun 2018, 11:52
Zitat:
hast Du toll hinbekommen
Es geht
Habe mich hier der VCL bedienen müssen aber was soll's.
Um die Texte abzuschneiden verwende ich einen dynamisch erstellten TLabel, solange wie das in der Anwendung geschieht ist es mir egal.

Habe es nochmal mit @Sir Rufos TextShortener.pas.. Funktion versucht macht aber keinen sinn weil das Ergebnis am ende das gleiche ist.

Mit dem TLabel habe ich einen 5 Zeilen Code und gut ist.

gruss
  Mit Zitat antworten Zitat
EWeiss
 
#179
  Alt 5. Jun 2018, 10:27
Neues..
Audio Session werden nun entfernt wenn die dazu gehörige Anwendung beendet wird.
Anhang entfernt Download im ersten Beitrag.

gruss

Geändert von EWeiss ( 5. Jul 2018 um 10:40 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#180
  Alt 25. Jun 2018, 21:06
Habe da noch ein Problem laut MS wenn sich das Event OnPropertyValueChanged ändert
kann ich mir theoretisch die GUIDE über key.fmtid ausgeben lassen.

Zitat:
HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(
LPCWSTR pwstrDeviceId,
const PROPERTYKEY key)
{
printf(" -->Changed device property "
"{%8.8x-%4.4x-%4.4x-%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x}#%d\n",
key.fmtid.Data1, key.fmtid.Data2, key.fmtid.Data3,
key.fmtid.Data4[0], key.fmtid.Data4[1],
key.fmtid.Data4[2], key.fmtid.Data4[3],
key.fmtid.Data4[4], key.fmtid.Data4[5],
key.fmtid.Data4[6], key.fmtid.Data4[7],
key.pid);
return S_OK;
}
};


Ich mache es einfach so in Delphi..
OutPutDebugString(PWideChar(GUIDToString(key.fmtid))); Zum testen wird nachher mit realer GUID verglichen und darauf hin eine Aktion ausgeführt.

Das Problem ist nur Key ist unter Delphi nicht verfügbar obwohl das Event aufgerufen wird.
Original..
Delphi-Quellcode:
function OnPropertyValueChanged(DeviceId: LPCWSTR; const Key: PROPERTYKEY): HResult; stdcall;
function TAudioVolume.OnPropertyValueChanged(DeviceId: LPCWSTR; const Key: PROPERTYKEY): HResult;
funktioniert nicht Key ist nicht verfügbar.

geändert..
Delphi-Quellcode:
function OnPropertyValueChanged(DeviceId: LPCWSTR; const Key: TPROPERTYKEY): HResult; stdcall;
function TAudioVolume.OnPropertyValueChanged(DeviceId: LPCWSTR; const Key: TPROPERTYKEY): HResult;
das selbe Key ist nicht verfügbar.

verstehe ich nicht. out reicht ihn normalerweise weiter.. nur so ist die originale Funktion nicht definiert.
Auf was soll ich reagieren wenn der Key nicht verfügbar ist.

Wenn hier gar nichts zu vergleichen ist und ich den Key selbst zuweisen muss welchen sinn hat diese Funktion?

gruss

Geändert von EWeiss (25. Jun 2018 um 21:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 18 von 21   « Erste     8161718 1920     Letzte »    


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 21:36 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