Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Funkcja skojarzona z tą stroną, MCI, jest starszą funkcją. Został zastąpiony przez MediaPlayer. MediaPlayer został zoptymalizowany pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer zamiast MCI, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
Przed rozpoczęciem korzystania z urządzenia należy zainicjować go za pomocą polecenia open (MCI_OPEN). To polecenie ładuje sterownik do pamięci (jeśli jeszcze nie został załadowany) i pobiera identyfikator urządzenia, którego użyjesz do zidentyfikowania urządzenia w kolejnych poleceniach MCI. Należy sprawdzić wartość zwracaną mciSendString lub mciSendCommand funkcji przed użyciem nowego identyfikatora urządzenia, aby upewnić się, że identyfikator jest prawidłowy. (Identyfikator urządzenia można również pobrać przy użyciu funkcji mciGetDeviceID).
Podobnie jak wszystkie komunikaty poleceń MCI, MCI_OPEN, ma skojarzoną strukturę. Te struktury są czasami nazywane blokami parametrów . Domyślna struktura dla MCI_OPEN to MCI_OPEN_PARMS. Niektóre urządzenia (takie jak forma falowa i nakładka) mają rozszerzone struktury (takie jak MCI_WAVE_OPEN_PARMS i MCI_OVLY_OPEN_PARMS), aby uwzględnić dodatkowe parametry opcjonalne. Jeśli nie musisz używać tych dodatkowych parametrów, możesz użyć struktury MCI_OPEN_PARMS z dowolnym urządzeniem MCI.
Liczba otwartych urządzeń jest ograniczona tylko przez ilość dostępnej pamięci.
Używanie aliasu
Po otwarciu urządzenia można użyć flagi "alias", aby określić identyfikator urządzenia dla urządzenia. Ta flaga umożliwia przypisanie krótkiego identyfikatora urządzenia dla złożonych urządzeń z długimi nazwami plików i umożliwia otwarcie wielu wystąpień tego samego pliku lub urządzenia.
Na przykład następujące polecenie przypisuje identyfikator urządzenia "birdcall" do długiej nazwy pliku C:\NABIRDS\SOUNDS\MOCKMTNG. WAV:
mciSendString(
"open c:\nabirds\sounds\mockmtng.wav type waveaudio alias birdcall",
lpszReturnString, lstrlen(lpszReturnString), NULL);
W interfejsie komunikatów polecenia alias określa się za pomocą składowej lpstrAlias w strukturze MCI_OPEN_PARMS.
Określanie typu urządzenia
Po otwarciu urządzenia można użyć flagi "typ", aby odwoływać się do typu urządzenia, a nie do określonego sterownika urządzenia. Poniższy przykład otwiera plik waveform-audio C:\WINDOWS\CHIMES. WAV (przy użyciu flagi "type" w celu określenia waveaudio typu urządzenia) i przypisuje alias "chimes":
mciSendString(
"open c:\windows\chimes.wav type waveaudio alias chimes",
lpszReturnString, lstrlen(lpszReturnString), NULL);
W interfejsie poleceń i komunikatów funkcjonalność flagi "type" jest dostarczana przez członka lpstrDeviceType struktury MCI_OPEN_PARMS.
Proste i złożone urządzenia
McI klasyfikuje sterowniki urządzeń jako złożone lub proste. Sterowniki dla urządzeń złożonych wymagają nazwy pliku danych do odtwarzania; sterowniki dla prostych urządzeń nie.
Proste urządzenia obejmują urządzenia cdaudio i urządzenia wideo dyskowe . Istnieją dwa sposoby otwierania prostych urządzeń:
Określ wskaźnik do ciągu zakończonego zerem, zawierającego nazwę urządzenia z rejestru lub pliku SYSTEM.INI.
Możesz na przykład otworzyć urządzenie videodisc przy użyciu następującego polecenia:
mciSendString("open videodisc", lpszReturnString,
lstrlen(lpszReturnString), NULL);
W takim przypadku "videodisc" to nazwa urządzenia z rejestru lub sekcji [mci] systemu. INI.
- Określ rzeczywistą nazwę sterownika urządzenia. Otwarcie urządzenia przy użyciu nazwy pliku sterownika urządzenia powoduje jednak, że aplikacja jest specyficzna dla urządzenia i może uniemożliwić uruchomienie aplikacji, jeśli konfiguracja systemu ulegnie zmianie. Jeśli używasz nazwy pliku, nie musisz określać pełnej ścieżki ani rozszerzenia nazwy pliku; MCI zakłada, że sterowniki znajdują się w katalogu systemowym i mają .DRV jako rozszerzenie nazwy pliku.
Urządzenia złożone obejmują urządzenia waveaudio i sequencer. Dane urządzenia złożonego są czasami nazywane elementem urządzenia . Ten dokument zazwyczaj odnosi się jednak do tych danych jako pliku, mimo że w niektórych przypadkach dane mogą nie być przechowywane jako plik.
Istnieją trzy sposoby otwierania urządzenia złożonego:
- Określ tylko nazwę urządzenia. Dzięki temu można otworzyć urządzenie złożone bez kojarzenia nazwy pliku. Większość złożonych urządzeń przetwarza tylko funkcję (MCI_GETDEVCAPS) i polecenia zamknięcia (MCI_CLOSE), gdy są otwierane w ten sposób.
- Określ tylko nazwę pliku. Nazwa urządzenia jest określana ze skojarzeń w rejestrze.
- Określ nazwę pliku i nazwę urządzenia. McI ignoruje wpisy w rejestrze i otwiera określoną nazwę urządzenia.
Aby skojarzyć plik danych z określonym urządzeniem, możesz określić nazwę pliku i nazwę urządzenia. Na przykład następujące polecenie otwiera urządzenie waveaudio o nazwie MYVOICE.SND:
mciSendString("open myvoice.snd type waveaudio", lpszReturnString,
lstrlen(lpszReturnString), NULL);
W interfejsie ciągu polecenia można również skrócić specyfikację nazwy urządzenia przy użyciu alternatywnego formatu wykrzyknika,jak opisano w otwórz polecenia.
Otwieranie urządzenia przy użyciu rozszerzenia nazwy pliku
Jeśli polecenie otwiera (MCI_OPEN) określa tylko nazwę pliku, MCI używa rozszerzenia nazwy pliku do wybrania odpowiedniego urządzenia z listy w rejestrze lub sekcji [mci extensions] pliku SYSTEM.INI. Wpisy w sekcji [mci extensions] używają następującego formularza:
rozszerzenie_pliku = nazwa_urządzenia
MCI niejawnie używa device_name, jeśli rozszerzenie zostanie znalezione i nie określono nazwy urządzenia w poleceniu open.
W poniższym przykładzie przedstawiono typową sekcję [mci extensions]:
[mci extensions]
wav=waveaudio
mid=sequencer
rmi=sequencer
Korzystając z tych definicji, MCI otwiera urządzenie waveaudio, jeśli zostanie wydane następujące polecenie:
mciSendString("open train.wav", lpszReturnString,
lstrlen(lpszReturnString), NULL);
Nowe pliki danych
Aby utworzyć nowy plik danych, po prostu określ pustą nazwę pliku. Program MCI nie zapisuje nowego pliku, dopóki nie zostanie zapisany przy użyciu polecenia zapisz (MCI_SAVE). Podczas tworzenia nowego pliku należy dołączyć alias urządzenia z open (MCI_OPEN) polecenie.
Poniższy przykład otwiera nowy plik waveaudio, uruchamia i zatrzymuje nagrywanie, a następnie zapisuje i zamyka plik:
mciSendString("open new type waveaudio alias capture", lpszReturnString,
lstrlen(lpszReturnString), NULL);
mciSendString("record capture", lpszReturnString,
lstrlen(lpszReturnString), NULL);
mciSendString("stop capture", lpszReturnString,
lstrlen(lpszReturnString), NULL);
mciSendString("save capture orca.wav", lpszReturnString,
lstrlen(lpszReturnString), NULL);
mciSendString("close capture", lpszReturnString,
lstrlen(lpszReturnString), NULL);
Urządzenia z możliwością udostępniania
Flaga "sharable" (MCI_OPEN_SHAREABLE) open (MCI_OPEN) umożliwia wielu aplikacjom dostęp do tego samego urządzenia (lub pliku) i wystąpienia urządzenia jednocześnie. Jeśli aplikacja otworzy urządzenie lub plik jako współdzielone, inne aplikacje mogą również uzyskiwać do nich dostęp, otwierając je także jako współdzielone. Udostępnione urządzenie lub plik daje każdej aplikacji możliwość zmiany parametrów zarządzających jego stanem operacyjnym. Za każdym razem, gdy urządzenie lub plik jest otwierany jako możliwe do udostępniania, interfejs MCI zwraca unikatowy identyfikator urządzenia, mimo że identyfikatory odnoszą się do tego samego wystąpienia.
Jeśli Twoja aplikacja otworzy urządzenie lub plik bez określenia, że jest współdzielony, żadna inna aplikacja nie będzie mogła uzyskać do niego dostępu, dopóki Twoja aplikacja go nie zamknie. Ponadto, jeśli urządzenie obsługuje tylko jedno otwarte wystąpienie, polecenie open zakończy się niepowodzeniem, jeśli określisz flagę współdzielenia.
Jeśli aplikacja otworzy urządzenie i określi, że może być współdzielone, nie powinna zakładać, jaki jest stan tego urządzenia. Aplikacja może wymagać zrekompensowania zmian wprowadzonych przez inne aplikacje, które uzyskują dostęp do urządzenia.
Większość plików złożonych nie jest udostępnialna; Można jednak otworzyć wiele plików lub otworzyć jeden plik wiele razy. W przypadku wielokrotnego otwierania pojedynczego pliku, MCI tworzy niezależne wystąpienie dla każdego z unikatowym stanem operacyjnym.
Jeśli otworzysz wiele wystąpień pliku, musisz przypisać do każdego unikatowy identyfikator urządzenia. Możesz użyć aliasu, jak opisano w poniższej sekcji, aby przypisać unikatową nazwę dla każdego pliku.