Autor |
Beitrag |
covel
      
Beiträge: 131
Win XP PRo
Borland D7/C#
|
Verfasst: Mi 23.07.08 08:16
Hallo,
ist es möglich die Lautstärke in zB. Winamp zuregulieren wenn jemand in zB. Teamspeak/Skype redet. Ich würde das am liebsten über ein extra Programm realisieren, weiß jedoch nicht ob bzw. wie das überhaupt möglich ist?!?!
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Mi 23.07.08 09:35
ich würde sagen dass ist ziemlich schwer zu machen, aber da gibt es vielleicht ein Plugin für
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Mi 23.07.08 10:05
Das ist möglich, wird allerdings schwer...
Du musst einfach, wie Windows das im Mixer macht, die Lautstärke von Teamspeak aus dem System lesen und wenn die dann halt... Ja, halt laut wird, dann machst du die Lautstärke von Winamp leise...
_________________ 1405006117752879898543142606244511569936384000000000.
|
|
Gausi
      
Beiträge: 8549
Erhaltene Danke: 478
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 23.07.08 10:11
Ich kann mir nicht vorstellen, dass es da bei Teamspeak selbst keine Option oder ein Plugin für gibt, das das regelt. Das dürfte doch ein oft gewünschtes Feature sein.
Die Lautstärke von Winamp zu regeln ist kein Problem, dafür gibts hier Units in der Library oder den Open-Source-Units. Das Problem ist zu erkennen, wann bei Teamspeak was läuft.
_________________ We are, we were and will not be.
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Mi 23.07.08 10:18
Wenn der Punkt grün wird  Die Events müsste es für TS und Skype geben, ist halt nur die Frage, ob man die von aussen abgreifen kann.
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mi 23.07.08 10:22
es dürfte ein Teamspeak SDK geben igendwo im TS-Ordner auf deiner Festplatte. Da ist sogar ne .pas Datei dabei. Vielleicht kannst du mit dem was anfangen.
lg elundril
P.S.: Google einfach mal nach Teamspeak+API bzw Teamspeak+SDK. Da is was zu finden, auch wenn ich mir nur die erste seite angeschaut hab.
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Mi 23.07.08 10:29
Jop, das SDK ist in Pascal, wahrscheinlich ist TS auch in Pascal geschrieben worden, weil es nur Pascal ist...
im Ordner client_sdk
so auf die schnelle finde ich keine Funktion, um dein Ziel zu erreichen, aber wird es sicher irgendwo geben... Wenigstens Programmierbar wird es sein 
_________________ 1405006117752879898543142606244511569936384000000000.
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 23.07.08 13:04
Bei Skype ginge das eventuell über Skype4COM, hier gibt es einige Delphi-Beispiele: developer.skype.com/Docs/Skype4COM/Example
mfg
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Mi 23.07.08 14:57
Mich würde so eine Software auch sehr interessieren.
Bei Google konnt ich sowas nicht finden.
Kannst ja bescheid sagen wenn du fortschritte machst 
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 23.07.08 16:16
Ich muss einmal schauen wie das geht, aber es gibt dafür 100%ig schon was, weil ich das schon bei jemandem mitbekommen habe, dass das klappt. Wenn ich was sage, wird dort die Musik leise. (TeamSpeak)
|
|
covel 
      
Beiträge: 131
Win XP PRo
Borland D7/C#
|
Verfasst: Mi 23.07.08 17:08
So,
ich auch noch mal intensiver gegooglet..und habe das Programm "TS Chatter" gefunden Link: download.teamspeak-e...ex.php?release_id=27
funktioniert einwandfrei...
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Mi 23.07.08 20:34
Also wenn du es mal selber schreibst, dann bau noch die Funktion ein, dass man nen Globalen Hook für eine beliebige Taste machen kann, auf die das dann auch reagiert, sprich, solange die gedrückt ist, musik leiser...
Wäre bei Counter Strike praktisch, da ich manchmal mit Musik zocke, wenn ich dann reden will, dann muss die leiser werden 
_________________ 1405006117752879898543142606244511569936384000000000.
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Mi 23.07.08 21:59
Und toll wärs auch wenns für den WMP gehen würde
Kein Bock umzusteigen
|
|
g1o2k4
      
Beiträge: 493
|
Verfasst: Mi 23.07.08 22:15
wie man winamp steuert ist simpel, aber ich weiß nicht wie man teamspeak oder skype aktivität ausliest...
hatte mal ne winamp fernbedienung gebaut. hier ist etwas quelltext:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226:
| const WINAMP_BUTTON1 : integer = 40044; WINAMP_BUTTON2 : integer = 40045; WINAMP_BUTTON3 : integer = 40046; WINAMP_BUTTON4 : integer = 40047; WINAMP_BUTTON5 : integer = 40048; WINAMP_VOLUMEUP : integer = 40058; WINAMP_VOLUMEDOWN: integer = 40059; IPC_GETLISTLENGTH : integer = 124; IPC_GETLISTPOS :integer = 125; IPC_GETPLAYLISTFILE : integer = 211; IPC_GETPLAYLISTTITLE : integer = 212;
IPC_GET_SHUFFLE : integer = 250; IPC_GET_REPEAT : integer = 251;
function GetWinampTitel(data:Integer): String; var hwndWinamp, TempHandle : THandle; dat2: array[0..500] of Char; TrackPos: Integer; temp, MPointer: Cardinal; begin hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp= 0 then begin result:='' end else begin if data<0 then TrackPos:= SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTPOS) else TrackPos:=data;
MPointer:= SendMessage(hwndWinamp,WM_USER,TrackPos , IPC_GETPLAYLISTTITLE); GetWindowThreadProcessId(hwndWinamp,TempHandle); hwndWinamp:= OpenProcess(PROCESS_ALL_ACCESS,False,TempHandle); ReadProcessMemory(hwndWinamp, Pointer(MPointer), @dat2,500,temp); CloseHandle(hwndWinamp); Result:= string(dat2); end; end;
function GetWinampPlayListLength:integer; var hwndWinamp:THandle; begin hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp= 0 then begin result:=-1 end else begin result := SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTLENGTH); end; end;
function GetWinampFilename(data:Integer): String; var hwndWinamp, TempHandle : THandle; dat2: array[0..500] of Char; TrackPos: Integer; temp, MPointer: Cardinal; begin hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp= 0 then begin result:='' end else begin if data<0 then TrackPos:= SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTPOS) else TrackPos:=data;
MPointer:= SendMessage(hwndWinamp,WM_USER,TrackPos , IPC_GETPLAYLISTFILE); GetWindowThreadProcessId(hwndWinamp,TempHandle); hwndWinamp:= OpenProcess(PROCESS_ALL_ACCESS,False,TempHandle); ReadProcessMemory(hwndWinamp, Pointer(MPointer), @dat2,500,temp); CloseHandle(hwndWinamp); Result:= string(dat2); end; end;
function GetWinampNextTitel:string; var hwndWinamp, TempHandle : THandle; dat2: array[0..500] of Char; TrackPos,maxpos: Integer; temp, MPointer: Cardinal; begin hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp= 0 then begin result:='' end else begin if SendMessage(hwndWinamp,WM_USER,0 , IPC_GET_SHUFFLE)=1 then result:='N/A [random]' else begin TrackPos := SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTPOS); maxpos := SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTLENGTH); if maxpos-1 > Trackpos then inc(TrackPos) else begin if SendMessage(hwndWinamp,WM_USER,0 , IPC_GET_REPEAT)=1 then TrackPos:=0 else begin result:='N/A [no repeat]'; exit; end; end; MPointer:= SendMessage(hwndWinamp,WM_USER,TrackPos , IPC_GETPLAYLISTTITLE); GetWindowThreadProcessId(hwndWinamp,TempHandle); hwndWinamp:= OpenProcess(PROCESS_ALL_ACCESS,False,TempHandle); ReadProcessMemory(hwndWinamp, Pointer(MPointer), @dat2,500,temp); CloseHandle(hwndWinamp); if fileexists(GetWinampFilename(Trackpos)) then Result := string(dat2) else Result := 'N/A [File not found]'; end; end; end;
function GetWinampPrevTitel:string; var hwndWinamp, TempHandle : THandle; dat2: array[0..500] of Char; TrackPos,maxpos: Integer; temp, MPointer: Cardinal; begin hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp= 0 then begin result:='' end else begin if SendMessage(hwndWinamp,WM_USER,0 , IPC_GET_SHUFFLE)=1 then result:='N/A [random]' else begin TrackPos := SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTPOS); maxpos := SendMessage(hwndWinamp,WM_USER,0 , IPC_GETLISTLENGTH); if Trackpos > 0 then dec(TrackPos) else begin if SendMessage(hwndWinamp,WM_USER,0 , IPC_GET_REPEAT)=1 then TrackPos:=maxpos-1 else begin result:='N/A [no repeat]'; exit; end; end; MPointer:= SendMessage(hwndWinamp,WM_USER,TrackPos , IPC_GETPLAYLISTTITLE); GetWindowThreadProcessId(hwndWinamp,TempHandle); hwndWinamp:= OpenProcess(PROCESS_ALL_ACCESS,False,TempHandle); ReadProcessMemory(hwndWinamp, Pointer(MPointer), @dat2,500,temp); CloseHandle(hwndWinamp); if fileexists(GetWinampFilename(Trackpos)) then Result := string(dat2) else Result := 'N/A [File not found]'; end; end; end;
var i:integer;
for i:=0 to GetWinampPlayListLength-1 do begin listbox1.Items.Add(GetWinampFilename(i)); listbox2.Items.Add(GetWinampTitel(i)); end;
var hwndWinamp: THandle;
begin if Button3.Caption = 'Play' then begin Button3.Caption := 'Pause'; hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp<>0 then SendMessage(hwndWinamp,WM_COMMAND, WINAMP_BUTTON2, 0); end; if Button3.Caption = 'Pause' then begin Button3.Caption := 'Play'; hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp<>0 then SendMessage(hwndWinamp,WM_COMMAND, WINAMP_BUTTON3, 0); end; end;
hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp<>0 then SendMessage(hwndWinamp,WM_COMMAND, WINAMP_BUTTON1, 0);
hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp<>0 then SendMessage(hwndWinamp,WM_COMMAND, WINAMP_BUTTON4, 0);
hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp<>0 then SendMessage(hwndWinamp,WM_COMMAND, WINAMP_BUTTON5, 0);
hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp<>0 then SendMessage(hwndWinamp,WM_COMMAND, WINAMP_VolumeUP, 0); hwndWinamp:= FindWindow('Winamp v1.x',nil); if hwndWinamp<>0 then SendMessage(hwndWinamp,WM_COMMAND, WINAMP_VolumeDown, 0); |
ganz unten sind die befehle die für dich interessant sind. jetzt musst du nur noch skype und ts auslesen.
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 24.07.08 11:16
Da ich vorwiegend Skype benutze und es sowas dafür noch nicht zu geben scheint, wäre das optimal  Man könnte das Programm ja für mehrere Programme auslegen. (Winamp, WMP, TeamSpeak, Skype) vielleicht gibt es auch eine allgemeine Möglichkeit, herauszufinden, ob ein Programm gerade einen Sound ausgeben will und wenn ja wie laut dieser ist.
mfg
|
|
g1o2k4
      
Beiträge: 493
|
Verfasst: Do 24.07.08 11:35
bei vista kann man ja jedes einzelne programm in den soundoptionen regulieren.
falls du vista hast, würde ich mal bei msdn schaun obs spezielle api funktionen gibt, die dir die aktuelle lautstärke ausgeben. dann kannste z.b. alle 500ms mit nem timer die funktion aufrufen oder so.
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 24.07.08 11:49
Und was Teamspeak angeht müsste das über das SDK gehen. Da aber vermutlich bald eine neue Version herauskommt ist die Frage ob es noch lohnt für das alte viel zu machen. Aber bald ist ja relativ, die Ankündigung ist ja schon etwas älter^^.
// Edit: Ich sehe gerade, dass es bis TS3 wohl noch ein dreiviertel Jahr oder mehr hin ist.
|
|
whitef
      
Beiträge: 202
Erhaltene Danke: 1
Windows X
Delphi XE X
|
Verfasst: Mi 13.01.10 03:35
dieser thread ist zwar etwas alt, aber ich wollte nur mal so erwähnen das bei Windows 7 diese Funktion integriert ist.
Ob man sie jetzt extra einschalten muss, weiss ich nicht mehr genau - hab halt wieder mein geliebtes vista mit der guten alten schnellstartleiste^^
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Mi 13.01.10 04:26
whitef hat folgendes geschrieben : | hab halt wieder mein geliebtes vista mit der guten alten schnellstartleiste^^ |
stadt-bremerhaven.de...dows-7-reaktivieren/
|
|
|