AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Kein Sound vom TMediaPlayer
Thema durchsuchen
Ansicht
Themen-Optionen

Kein Sound vom TMediaPlayer

Ein Thema von Drahcir · begonnen am 26. Jul 2012 · letzter Beitrag vom 27. Jul 2012
 
Drahcir

Registriert seit: 13. Jun 2012
34 Beiträge
 
Delphi 6 Personal
 
#1

Kein Sound vom TMediaPlayer

  Alt 26. Jul 2012, 15:21
Ja ich weiß die frage nach dem Media-Player zum Abspielen von .wav-Dateien gab es schon hunderte male, aber da mein Programm nicht funktioniert, obwohl ich es nach diversen Tutorials nachgemacht und verglichen habe, möchte ich hier mal fragen ob wer den fehler findet.

Das Programm ist eigentlich eine normale Eieruhr, die stündlich nen Sound (Plinfa.wav) ausgeben soll. Dazu ne nette Animation, nen Bild (Image2) das sich auf und ab bewegt, dazu der Hintergrund (Image1). Ausserdem soll das ganze in die systemTray (wenn man das so nennt) minimierbar sein.

Das Programm funktioniert einwandfrei (Timer, Animation, minimieren und wiederherstellen) aber der MediaPlayer macht mir Probleme. Die .wav-Datei liegt im Ordner wo das Programm ist und wird (anscheinend) ordnungsgemäß geladen, nur das wenn ich dann erst auf den button und dann im MediaPlayer auf "Play" drücke passiert nichts, ich höre zumindest keinen Sound. Weiß wer warum?

Delphi-Quellcode:
unit mPinguTimer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg, StdCtrls, ShellAPI, Menus, mmSystem, Buttons,
  MPlayer, ShlObj;

type
  TfrmMain = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    Image2: TImage;
    Image1: TImage;
    btReset: TButton;
    Timer2: TTimer;
    SpeedButton1: TSpeedButton;
    Label2: TLabel;
    SpeedButton2: TSpeedButton;
    Button1: TButton;
    MediaPlayer1: TMediaPlayer;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure btResetClick(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    h, Minuten, Sekunden : Integer;
    t : Real;
    Lautlos : Boolean;
    TaskBarNewReg : DWORD;
    IconData: TNotifyIconData;
  public
    procedure WndProc(var Msg: TMessage); override;
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
  end;

var
  frmMain: TfrmMain;

implementation {$R *.dfm}

procedure TfrmMain.WndProc(var Msg: TMessage);
var Point: TPoint;
begin
  // WM_USER + 20 ist unsere TNA Icon Nachricht
  if Msg.Msg = WM_USER + 20 then
  begin
    // im lParam steht die Nachricht
    case Msg.lParam of
      // linke Taste
      WM_RBUTTONDOWN:
        begin
           MessageDLG('Restzeit: ' + Formatfloat('00', Minuten) + ':'
                    + Formatfloat('00', Sekunden), mtInformation, [mbOk], 0);
        end;
      // Doppelklick
      WM_LBUTTONDBLCLK:
        begin
          // Fenster anzeigen
          frmMain.Show;
          // Icon entfernen
          Shell_NotifyIcon(NIM_DELETE, @IconData);
        end;
    end;
  end
  // Taskbar wurde im System registriert, Icon einfügen
  else if Msg.Msg = TaskBarNewReg then
  begin
    Shell_NotifyIcon(NIM_ADD, @IconData);
  end;
  inherited;
end;


procedure TfrmMain.WMSysCommand(var Message: TWMSysCommand);
begin
  // Fenster wurde minimiert
  if Message.CmdType and $FFF0 = SC_MINIMIZE then
  begin
    Hide;
    // Icon in der TNA anzeigen
    Shell_NotifyIcon(NIM_ADD, @IconData);
  end
  else
    inherited;
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE, @IconData);
end;

//*****************************************************************************

procedure TfrmMain.Timer1Timer(Sender: TObject);
var Faktor : Integer;
begin
  Faktor := 10;

  if t >= (Faktor*2) then t := 0;

  t := t + 0.5;
  h := round( -( (t-Faktor)*(t-Faktor) ) + Faktor*Faktor);

  Image2.Top := 150 - h;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  frmMain.DoubleBuffered := True;

  //*******************************
  // Message ID für Message merken, die gesendet wird, wenn die Taskbar im
  // System registriert wird.
  TaskBarNewReg := RegisterWindowMessage('TaskbarCreated');
  // IconData Struktur füllen
  IconData.cbSize := SizeOf(IconData);
  IconData.Wnd := Handle;
  IconData.uID := 100;
  IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
  IconData.uCallBackMessage := WM_USER + 20;
  IconData.hIcon := Application.Icon.Handle;
  IconData.szTip := 'Pingu-Timer';
  // Icon einfügen. Bei Bedarf sofort
  //Shell_NotifyIcon(NIM_ADD, @IconData);
end;

procedure TfrmMain.Image2Click(Sender: TObject);
begin
  t := 0;
  Minuten := 60; Sekunden := 00;
  Timer2.Enabled := true;
  Timer1.Enabled := true;
  Image2.Enabled := false;
  btReset.Enabled := true;
end;

procedure TfrmMain.btResetClick(Sender: TObject);
begin
  btReset.Enabled := false;
  Label1.Caption := 'Klick auf den Pingu zum Starten';
  Image2.Enabled := true;
  Timer1.Enabled := false;
  Timer2.Enabled := false;
  Image2.Top := 150;
end;

procedure TfrmMain.Timer2Timer(Sender: TObject);
begin
  if Sekunden <> 0
  then Sekunden := Sekunden - 1
  else begin

    if Minuten <> 0
    then begin
      Minuten := Minuten - 1;
      Sekunden := 59;
    end
    else begin
      Minuten := 59; Sekunden := 59;
      if Lautlos = false then MessageBeep(MB_ICONEXCLAMATION);
    end;
  end;

  Label1.Caption := 'Verbleibende Zeit: ' + Formatfloat('00', Minuten) + ':' + Formatfloat('00', Sekunden);
end;

procedure TfrmMain.SpeedButton1Click(Sender: TObject);
begin
  if Lautlos = true
  then begin
    Lautlos := false;
    SpeedButton1.Caption := 'Ton ist an'
  end
  else begin
    Lautlos := true;
    SpeedButton1.Caption := 'Ton ist aus'
  end;
end;

procedure TfrmMain.SpeedButton2Click(Sender: TObject);
begin
  Messagedlg('Musik: Pokémon Plinfa'#13'Bilder sind dem Spiel NosTale.de entnommen', mtInformation, [mbOk], 0);
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  MediaPlayer1.Close;
  mediaplayer1.Open;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  mediaplayer1.Close;
end;

end.
Ja ich weiß, es ist wie immer durcheinander und hat sicher noch hunderte Fehler ...
Der ObjektInspektor zur MediaPlayer findet ihr HIER
Es gibt nur 10 Arten von Menschen - die die Binärzahlen lesen können und den Rest
  Mit Zitat antworten Zitat
 


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 15:14 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