Video auf klick starten???



  • Ich möchte das auf einen Button Klick ein Video gestartet wird. Wie mache ich das am besten??? Am besten sollte sich das Video dann auch mit dem Standart Player öffnen. Meine Versuche hatten bis jetzt keinen erfolg 😡



  • Probier mal

    ShellExecute

    Wenn du nur den Pfad zur Datei angibst, dann wird er automaitsch mit dem Standardplayer geöffnet.

    (Die Parameter kenne ich jetzt nicht genau)



  • ShellExecute(Handle, "open", "Film\Tanzen.mpg",
        NULL,NULL,SW_SHOWDEFAULT);
    

    Das ist der Code den ich ausprobiert habe, das Problem bei einem Freund funktioniert das leider nicht.

    void RunApplication(LPCTSTR FileName, LPCTSTR FileParam);
    
    void RunApplication(LPCTSTR FileName, LPCTSTR FileParam)
    {
      int ret = (int) ShellExecute(0, "open", FileName, FileParam, 0, SW_SHOWNORMAL);
    
      if (ret <= 32)
      {
        AnsiString msg;
    
        switch(ret)
        {
          case ERROR_FILE_NOT_FOUND, SE_ERR_FNF :
                 msg = "Die angegebene Datei '" + AnsiString(FileName) + "' wurde nicht gefunden!";
                 break;
    
          case ERROR_PATH_NOT_FOUND, SE_ERR_PNF :
                 msg = "Der Pfad zur Datei '" + AnsiString(FileName) + "' wurde nicht gefunden!";
                 break;
    
          case ERROR_BAD_FORMAT :
                 msg = "Die aufgerufene Anwendung ist ungültig oder beschädigt!";
                 break;
    
          case SE_ERR_ACCESSDENIED, SE_ERR_SHARE :
                 msg = "Der Zugriff auf die Datei '" + AnsiString(FileName) + "' wurde vom Betriebssystem verweigert!";
                 break;
    
          case SE_ERR_ASSOCINCOMPLETE, SE_ERR_NOASSOC :
                 msg = "Der angegebene Dateityp ist auf Ihrem Computer keiner Anwendung zugeordnet!";
                 break;
    
          case 0, SE_ERR_OOM :
                 msg = "Zum Ausführen der Anwendung ist nicht genügend Arbeitsspeicher frei!";
                 break;
    
          default : msg = "Datei '" + AnsiString(FileName) + "' konnte nicht geöffnet werden!";
        }
    
        Application->MessageBox(msg.c_str(), "Fehler", MB_OK + MB_ICONERROR);
      }
    }
    

    Aufgerufen hab ich das ganze dann mit:

    RunApplication("Film\\Tanzen.mpg", 0);
    

    Habe mir auch das mal aus dem I-net geholt aber das Funzte beim Freund auch nicht. Hier Kam ja dafür ne genaurere Fehlermeldung. "Dieser dateityp ist auf ihrem Computer keiner Anwendung zugeordnet." Er hat aber als Standart player den VLC Player und zwar für alles.



  • hat zwar nix mit vcl zu tun, aber jede dateiendung muss einem Programm zugeordnet werden, damit das mit einfachen klick darauf geöffnet wird. versuch es zum beispiel mal mit:
    rechtsklick auf die datei -> öffnen mit -> standardprogramm auswählen -> den player auswählen und den haken bei "dateityp immer mit dem ausgewählten programm öffnen" setzen. schon sollte es gehen

    gruß stephan



  • Ja das Funktioniert... aber nur eingeschränkt, damit meine ich nur auf dem Heimischen PC da welche datei mit welchen Programm gestartet wird in der Registry verankert ist, außerdem kann man ja nicht sagen das er die gleichen Programme hat.

    Aber als Standart Player für die Datei hat er den VLC Player eingetragen und der spielt so ziemlich alles ab...



  • Hallo

    Der gezeigte Code ist jedenfalls soweit korrekt. Mögliche Fehlerursache :
    - Die Videodatei ist nicht an der angegebenen Position
    - Die Dateiendung ist nicht korrekt mit dem Player verbunden.

    Das kannst du jedenfalls besser rausfinden wenn du dir mal die Fehlermeldung durchliest die ja laut dem Code erscheinen soll.

    bis bald
    akari



  • Den Fehler habe ich ein Stückchen weiter Oben schon gepostet... "Dieser dateityp ist auf ihrem Computer keiner Anwendung zugeordnet."... Ich habe grad die bei meinem Vater ausprobiert und da funktioniert es (Vista) Aber bei meinem Freund (XP) funktioniert es nicht. Was ist da los???



  • Hallo

    Hab ich irgendwie übersehen...

    Wie auch immer, es ist kein Problem des gezeigten Codes oder des C++ Builders. Windows liefert den Fehler, also must du bei den Verknüpfungen nachschauen.

    bis bald
    akari



  • Ich persönlich würde wohl eher den Standardplayer aus der Registry auslesen und dann explizit ausführen, anstatt mich auf das "Wohlwollen" der Dateiverknüpfungen zu verlassen.

    Z.B.:

    ShellExecute(Handle, "open", "wmplayer.exe", "film\\tanzen.mpg",
        NULL,SW_SHOWDEFAULT);
    

    Gruß



  • Du sagst den Standartplayer aus der Registry auslesen, aber in deinem Beispiel wenn ich das richtig sehe öffnest du doch den Windows Mediaplayer (wmplayer.exe) oder???



  • zwerg91 schrieb:

    Du sagst den Standartplayer aus der Registry auslesen, aber in deinem Beispiel wenn ich das richtig sehe öffnest du doch den Windows Mediaplayer (wmplayer.exe) oder???

    Das ist richtig. Ich meinte das nur als Beispiel, dass man den Player explizit öffnet und ihm das Video als Parameter mitgibt anstatt das 'open' auf die Videodatei selber anzuwenden.


Anmelden zum Antworten