vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: MCISendString und BackgroundWorker 
Autor: Logo
Datum: 20.03.10 11:01

Super - vielen Dank !!!!!!!!!!!!

Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

MCISendString und BackgroundWorker 
Autor: Logo
Datum: 19.03.10 12:36

Hallo allerseits,

ich schon wieder; ist mir ja schon fast peinlich, aber dieses Forum hat mir bislang jedes Mal so gut geholfen, dass ich mich einfach an Euch wenden muss.

Ich bin heute auf ein seltsames Phänomen gestoßen, als ich eine einwandfrei funktionierende Sub, in welcher mittels MCISendString WAV-Files abgespielt werden, in den BackgroundWorker verlegt habe (oder wie immer man das ausdrücken sollte):

Der ganze MCISendString-Prozess wird einwandfrei, also exakt wie in der Sub, als sie noch nicht im BGW lief, durchlaufen, Pfade stimmen, Alias ist OK usw, es kommt aber kein Ton.

Der MCI-Error-String gibt Folgendes zurück: "Unbekanntes Problem beim Laden des angegebenen Gerätetreibers".

Wenn ich My.Computer.Audio... zum Abspielen nehme, ist es kein Problem, aber da ich im Rahmen meiner App unregelmäßig wechselnd den linken oder rechten Kanal abschalten muss, brauche ich MCISendString.

Hat evtl. jemand eine Erklärung für das Phänomen oder sogar eine Lösung dafür, wie ich den BGW zufrieden stellen kann, damit er MCISendString akzeptiert?

Wie immer bereits im Voraus ganz herzlichen Dank und allerseits noch einen schönen Tag

Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MCISendString und BackgroundWorker 
Autor: ModeratorRalfE (Moderator)
Datum: 19.03.10 17:07

Der BackgroundWorker führt ja seine Arbeit auf einem separaten Thread aus und das könnte hier das Problem sein, dass MCI nicht mit mehrere Threads klar kommt.

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MCISendString und BackgroundWorker 
Autor: Logo
Datum: 19.03.10 17:20

Hallo RalfE,

vielen Dank für die Antwort.

Ja, das Threading ist zweifellos das Problem. Ich habe vorhin mal exzessiv gegoogelt: Das Problem wurde in allen möglichen Foren rund um den Globus mehrfach (zumeist von C'-Programmierern) angesprochen, aber es gab niemals eine Antwort drauf.

Ich weiß viel zu wenig vom API, um substantiell mitreden zu köönnen, aber kann es sein, dass man MCI evtl. irgendwie anders deklarieren müsste?

Beste Grüße

Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MCISendString und BackgroundWorker 
Autor: Drapondur
Datum: 19.03.10 18:01

Hallo,

also ich denke, dass es an MCI plus Threading selbst liegt, egal wie Du es deklarierst. Ich meine selber mal damit Probleme gehabt zu haben und die Beiträge im Netz weisen eigentlich auch alle darauf hin. Auf jeden Fall würde ich den letzten Parameter von mciSendString hwndCallback in Zusammenhang mit Threading nur sehr vorsichtig verwenden.

Für die Sachen, die Du hier im Laufe der Zeit so beschrieben hast, halte ich MCI eigentlich für nicht ausreichend genug bzw. für zu umständlich. Ich würde da eher direkt mit Streams und vor allem mit WaveOut / WaveIn-Device arbeiten.

Eine sehr umfangreiche .NET Open-Source Lib dafür (und vieles mehr) gibt's auf Codeplex (http://naudio.codeplex.com/), allerdings in C#.

Wenn Du jedoch bei MCI bleiben willst: Es eigentlich keinen zwingenden Grund mciSendString in einem separaten Thread zu starten; mciSendString kann von sich aus die Kontrolle direkt an das Programm zurückgeben und den Sound asynchron abspielen.

Außerdem: Teste Deine Anwendung rechtzeitig auf 64-Bit-Systemen. Immerhin spielst Du mit API-Funktionen herum.

Ciao
D.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MCISendString und BackgroundWorker 
Autor: ModeratorRalfE (Moderator)
Datum: 19.03.10 18:41

NAudio ist zwar in C# geschrieben, aber man kann es auch unter VB verwenden. .NET macht's möglich

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MCISendString und BackgroundWorker 
Autor: Logo
Datum: 20.03.10 10:20

Hallo Drapondur,

das finde ich ja irre, dass Du Dir an Hand meiner gesammelten Postings (na ja: kleinlauter Fragen) ein Bild machst.

Damit Du meine - vermutlich oftmals recht naive - Fragerei besser einordnen kannst: Ich war selbständiger Logopäde und bin seit 2 Jahren im Ruhestand. Da es in meinem Fachbereich für viele Therapiegebiete keine gezielten PC-Programme gibt, habe ich vor einigen Jahren angefangen, solche in VB6 für meine eigene Praxis zu schreiben. Da sie gut ankamen und ankommen, verkaufe ich sie seit einigen Jahren. Für die Tonausgabe habe ich immer MCI eingesetzt und natürlich zuvor alles umfänglich getestet. Und hab bei sicherlich 6-700 Installationen zum Glück keinen einzigen Rücklauf gehabt, dass etwas nicht lief.

Ich bin Anfang des Jahres auf VB.NET umgestiegen und will nun so peu a peu all die Projekte umsetzen, für die ich während des Jobs nie die Zeit hatte (da wird also vermutlich noch die eine oder andere Frage auf Euch zukommen . Die Soundfunktionen werden naturgemäß bei allen Programmen besonders wichtig sein, ich denke/hoffe mal, dass die basalen MCI-Funktionen auch unter .NET gleich unproblematisch laufen sollte - werde es aber auf jeden Fall wie gehabt ausführlich testen.

Nichtsdestotrotz hat mich das 'naudio'-Projekt schon beim ersten Anschauen umgehauen - das ist genau das, was ich brauche, denn ich bin auch Musiker und habe in dem Bereich einiges programmiert, aber eben nicht mit der Eleganz und den Möglichkeiten, wie es mit naudio wohl möglich ist.

Wie Ralf in seiner Ergänzung zu Deinem Posting schreibt, kann man auch derartige C#-Projekte in VB.NET einbinden - ich habe natürlich bislang nicht den Schimmer einer Ahnung, wie das geht, werde aber versuchen, mich schlau zu machen (ein kleiner Tipp, wo ich das am besten kann, wäre natürlich hochwillkommen).

Ach ja, noch mal zum Threading und MCI: Ich hätte das MCI gerne im BGW, weil ich dann die Schleifen unterbrechen kann, in denen die WAVs abgespielt werden können, nicht um die MCI-Funktionen selbst zu unterbrechen.

Ich bedanke mich beim Forum für das wohlwollende Interesse und die vielfache Hilfe und wünsche allerseits ein schönes Wochenende.

Beste Grüße

Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MCISendString und BackgroundWorker 
Autor: ModeratorRalfE (Moderator)
Datum: 20.03.10 10:51

Bezüglich NAudio und Einbinden: Wenn du dir NAudio herunterlädst und das Zip-Archiv entpackst, findest du einen Ordner namens Binaries, wo du eine kompilierte DLL findest. Diese kannst du via Projekt->Verweis hinzufügen dann einbinden und ansprechen. Bei einer .NET-Assembly ist es egal, mit welcher Sprache sie erstellt wurde.

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel