Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для Lazebin
1 / 1 / 2
Регистрация: 28.08.2014
Сообщений: 68

Автоматизировать работу проигрывателя Stereoscopic Player

13.09.2014, 10:22. Показов 1564. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас пытаюсь автоматизировать работу проигрывателя Stereoscopic Player, данный плеер может управляться с помощью скриптов WSH, на сайте производителя доступны примеры скриптов, ну с ними всё ясно: запускаешь скрипт - плеер выдаёт реакцию на него. Изначально собирался запускать эти скрипты посредством C#, однако, вместе со скриптами в архиве находился же и файл *.cs текст которого я привожу ниже. Насколько я понял это и есть тот связывающий элемент скриптов и C#. Однако как его использовать я так и не понял (слишком юный Падаван), и информации толком не нашёл.
Пожалуйста, приведите простейший пример использования этого кода, например как к кнопке "Воспроизведение" это привязать. Дальше я постараюсь разобраться сам. Спасибо, код исходника ниже придётся разделить на два сообщения - превышение допустимой длины сообщения на форуме.

первая часть кода
C#
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
// Stereoscopic Player COM automation interface
//
// Copyright (c) 2006-2013 Peter Wimmer
// All rights reserved.
//
// Interface definition for Stereoscopic Player COM automation. 
// The ProgId of the automation class is "StereoPlayer.Automation".
//
// VBScript examples are available on the 3dtv.at website for download.
 
using System;
using System.Runtime.InteropServices;
 
namespace StereoPlayer {
  [ComVisible(true)]
  [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
  [Guid("54150FC5-F6D5-419A-BC0D-E2BE08558934")]
  [TypeLibType(TypeLibTypeFlags.FDispatchable | TypeLibTypeFlags.FDual | TypeLibTypeFlags.FOleAutomation)]
  public interface IAutomation {
    /// <summary>
    /// Returns the number of items in the playlist.
    /// </summary>
    [DispId(0xc9)]
    void GetPlaylistItemCount(out int count);
 
    /// <summary>
    /// Returns the index of the currently loaded playlist item.
    /// </summary>
    [DispId(0xca)]
    void GetPlaylistItem(out int index);
 
    /// <summary>
    /// Loads the specified playlist item.
    /// </summary>
    [DispId(0xcb)]
    void SetPlaylistItem([In] int index);
 
    /// <summary>
    /// Loads the next playlist item.
    /// </summary>
    [DispId(0xcc)]
    void NextPlaylistItem();
 
    /// <summary>
    /// Loads the previous playlist item.
    /// </summary>
    [DispId(0xcd)]
    void PreviousPlaylistItem();
 
    /// <summary>
    /// Opens a stereoscopic video file.
    /// </summary>
    [DispId(0xce)]
    void OpenFile([In, MarshalAs(UnmanagedType.BStr)] string filename);
 
    /// <summary>
    /// Opens separate left and right video files as well as an optional audio file.
    /// </summary>
    [DispId(0xcf)]
    void OpenLeftRightFiles([In, MarshalAs(UnmanagedType.BStr)] string leftFilename, [In, MarshalAs(UnmanagedType.BStr)] string rightFilename, [In, MarshalAs(UnmanagedType.BStr)] string audioFilename, [In] AudioMode audioMode);
 
    /// <summary>
    /// Opens a DVD, specified by the path (without VIDEO_TS folder).
    /// </summary>
    [DispId(0xd0)]
    void OpenDVD([In, MarshalAs(UnmanagedType.BStr)] string path);
 
    /// <summary>
    /// Opens a URL.
    /// </summary>
    [DispId(0xd1)]
    void OpenURL([In, MarshalAs(UnmanagedType.BStr)] string url);
 
    /// <summary>
    /// Opens a capture device. Either specifiy the friendly name (might not be unique) or the device identified.
    /// </summary>
    [DispId(210)]
    void OpenDevice([In, MarshalAs(UnmanagedType.BStr)] string device);
 
    /// <summary>
    /// Returns the player's state (playing, stopped, ...).
    /// </summary>
    [DispId(0xd3)]
    void GetPlaybackState(out PlaybackState state);
 
    /// <summary>
    /// Executes a playback command (play, stop, ...).
    /// </summary>
    [DispId(0xd4)]
    void SetPlaybackState([In] PlaybackState state);
 
    /// <summary>
    /// Returns TRUE if playback has completed, else FALSE.
    /// </summary>
    [DispId(0xd5)]
    void GetPlaybackCompleted(out bool completed);
 
    /// <summary>
    /// Returns the duration of the video in seconds.
    /// </summary>
    [DispId(0xd7)]
    void GetDuration(out double duration);
 
    /// <summary>
    /// Returns the current playback position in seconds.
    /// </summary>
    [DispId(0xd8)]
    void GetPosition(out double position);
 
    /// <summary>
    /// Returns the playback mode (none, file, DVD, ...).
    /// </summary>
    [DispId(0xd6)]
    void GetPlaybackMode(out PlaybackMode mode);
 
    /// <summary>
    /// Sets the current playback position in seconds.
    /// </summary>
    [DispId(0xd9)]
    void SetPosition([In] double position);
 
    /// <summary>
    /// Returns if repeat mode is enabled.
    /// </summary>
    [DispId(0xda)]
    void GetRepeat(out bool repeatMode);
 
    /// <summary>
    /// Enables or disables repeat mode.
    /// </summary>
    [DispId(0xdb)]
    void SetRepeat([In] bool repeatMode);
 
    /// <summary>
    /// Closes the video.
    /// </summary>
    [DispId(220)]
    void CloseVideo();
 
    /// <summary>
    /// Terminates the Stereoscopic Player.
    /// </summary>
    [DispId(0xdd)]
    void ClosePlayer();
 
    /// <summary>
    /// Enters full screen mode.
    /// </summary>
    [DispId(0xde)]
    void EnterFullscreenMode();
 
    /// <summary>
    /// Leaves full screen mode.
    /// </summary>
    [DispId(0xdf)]
    void LeaveFullscreenMode();
 
    /// <summary>
    /// Returns if the player is ready. Many of the other commands fail as long as the player is not ready.
    /// </summary>
    [DispId(0xe0)]
    void GetReady(out bool ready);
 
    /// <summary>
    /// Returns the current audio volume.
    /// </summary>
    /// <param name="volume"></param>
    [DispId(0xe1)]
    void GetVolume(out double volume);
 
    /// <summary>
    /// Sets the current audio volume.
    /// </summary>
    [DispId(0xe2)]
    void SetVolume([In] double volume);
 
    /// <summary>
    /// Sets the horizontal parallax of the current video.
    /// </summary>
    [DispId(0xe3)]
    void SetParallaxHorizontal([In] int parallax);
 
    /// <summary>
    /// Sets the vertical parallax of the current video.
    /// </summary>
    [DispId(0xe4)]
    void SetParallaxVertical([In] int parallax);
 
    /// <summary>
    /// Sets horizontal and vertical parallax of the current video.
    /// </summary>
    [DispId(0xe5)]
    void SetParallax([In] int horizontal, [In] int vertical);
 
    /// <summary>
    /// Returns the current zoom in percent.
    /// </summary>
    [DispId(230)]
    void GetZoom(out double zoom);
 
    /// <summary>
    /// Sets the current zoom in percent.
    /// </summary>
    [DispId(0xe7)]
    void SetZoom([In] double zoom);
 
// продолжение кода в следующем сообщении...
Ещё раз спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2014, 10:22
Ответы с готовыми решениями:

Кто-нибудь в состояние написать абсолютную копию Проигрывателя Windows Media Player?
или мб уже она существует?

Как максимально автоматизировать работу за ПК
Собственно, кто что знает? Чтобы выполнялось максимальное количество работы за максимально короткий...

Как автоматизировать работу с данными
Всем доброго времени суток! Вопрос в следующем: имею необходимость заполнять данные из экселя...

1
 Аватар для Lazebin
1 / 1 / 2
Регистрация: 28.08.2014
Сообщений: 68
14.09.2014, 17:24  [ТС]
вторая часть кода
C#
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
    /// <summary>
    /// Goes to the next DVD chapter.
    /// </summary>
    [DispId(0xe8)]
    void NextChapter();
 
    /// <summary>
    /// Goes to the previous DVD chapter.
    /// </summary>
    [DispId(0xe9)]
    void PreviousChapter();
 
    /// <summary>
    /// Loads the next file from the folder of the current file.
    /// </summary>
    [DispId(0xea)]
    void NextFileInFolder();
 
    /// <summary>
    /// Loads the previous file from the folder of the current file.
    /// </summary>
    [DispId(0xeb)]
    void PreviousFileInFolder();
 
    /// <summary>
    /// Returns if play folder mode is enabled.
    /// </summary>
    [DispId(0xec)]
    void GetPlayFolder(out bool playFolderMode);
 
    /// <summary>
    /// Enables or disables play folder mode.
    /// </summary>
    [DispId(0xed)]
    void SetPlayFolder([In] bool playFolderMode);
 
    /// <summary>
    /// Sets the viewing method.
    /// </summary>
    /// <param name="viewingMethod"></param>
    [DispId(0xee)]
    void GetViewingMethod([Out, MarshalAs(UnmanagedType.BStr)] out string viewingMethod);
 
    /// <summary>
    /// Returns the current viewing method.
    /// </summary>
    [DispId(0xef)]
    void SetViewingMethod([In, MarshalAs(UnmanagedType.BStr)] string viewingMethod);
 
    /// <summary>
    /// Jumps back to last start position.
    /// </summary>
    [DispId(0xf0)]
    void Replay();
 
    /// <summary>
    /// Steps one frame forwards.
    /// </summary>
    [DispId(0xf1)]
    void StepForwards();
 
    /// <summary>
    /// Steps one frame backwards.
    /// </summary>
    [DispId(0xf2)]
    void StepBackwards();
 
    /// <summary>
    /// Returns if effect control DMX output is enabled.
    /// </summary>
    [DispId(0xf3)]
    void GetEffectControlDMXOutputEnabled(out bool enabled);
 
    /// <summary>
    /// Enables or disables effect control DMX output.
    /// </summary>
    [DispId(0xf4)]
    void SetEffectControlDMXOutputEnabled([In] bool enabled);
 
    /// <summary>
    /// Returns if effect control serial output is enabled.
    /// </summary>
    [DispId(0xf5)]
    void GetEffectControlSerialOutputEnabled(out bool enabled);
 
    /// <summary>
    /// Enables or disables effect control serial output.
    /// </summary>
    [DispId(0xf6)]
    void SetEffectControlSerialOutputEnabled([In] bool enabled);
 
    /// <summary>
    /// Returns if effect control UDP output is enabled.
    /// </summary>
    [DispId(0xf7)]
    void GetEffectControlUDPOutputEnabled(out bool enabled);
 
    /// <summary>
    /// Enables or disables effect control UDP output.
    /// </summary>
    [DispId(0xf8)]
    void SetEffectControlUDPOutputEnabled([In] bool enabled);
 
    /// <summary>
    /// Returns if effect control command execution is enabled.
    /// </summary>
    [DispId(0xf9)]
    void GetEffectControlCommandExecutionEnabled(out bool enabled);
 
    /// <summary>
    /// Enables or disables effect control command execution.
    /// </summary>
    [DispId(0xfa)]
    void SetEffectControlCommandExecutionEnabled([In] bool enabled);
 
    /// <summary>
    /// Returns if toolbar is visible.
    /// </summary>
    [DispId(0xfb)]
    void GetToolbarVisible(out bool enabled);
 
    /// <summary>
    /// Shows or hides the toolbar.
    /// </summary>
    [DispId(0xfc)]
    void SetToolbarVisible([In] bool visible);
 
    /// <summary>
    /// Returns if menu is visible.
    /// </summary>
    [DispId(0xfd)]
    void GetMenuVisible(out bool enabled);
 
    /// <summary>
    /// Shows or hides the menu.
    /// </summary>
    [DispId(0xfe)]
    void SetMenuVisible([In] bool visible);
 
    /// <summary>
    /// Returns if window border is visible.
    /// </summary>
    [DispId(0xff)]
    void GetWindowBorderVisible(out bool enabled);
 
    /// <summary>
    /// Shows or hides the window border.
    /// </summary>
    [DispId(0x100)]
    void SetWindowBorderVisible([In] bool visible);
 
    /// <summary>
    /// Returns if left/right are swapped.
    /// </summary>
    [DispId(0x101)]
    void GetSwapLeftRight(out bool swapped);
 
    /// <summary>
    /// Swaps left/right.
    /// </summary>
    [DispId(0x102)]
    void SetSwapLeftRight([In] bool swapped);
 
    /// <summary>
    /// Returns if playback start after open.
    /// </summary>
    [DispId(0x103)]
    void GetAutoPlay(out bool enabled);
 
    /// <summary>
    /// Enables or disables playback start after open.
    /// </summary>
    [DispId(0x104)]
    void SetAutoPlay([In] bool enabled);
 
    /// <summary>
    /// Returns if HID events are handled.
    /// </summary>
    [DispId(0x105)]
    void GetHIDEventsEnabled(out bool enabled);
 
    /// <summary>
    /// Enables or disables human input device events (mouse and keyboard
    /// events). The menu will remain active, it can be disabled separately.
    /// </summary>
    [DispId(0x106)]
    void SetHIDEventsEnabled([In] bool enabled);
 
    /// <summary>
    /// Returns the duration of a single frame in seconds (1 / frame rate).
    /// </summary>
    [DispId(0x107)]
    void GetFrameDuration(out double duration);
  }
 
  [ComVisible(true)]
  [Guid("9D79E9CE-E2EC-423D-846C-17B887E6CD3E")]
  public enum AudioMode {
    NoAudio = 0,
    SeparateFile = 1,
    LeftFile = 2,
    RightFile = 3
  }
 
  [ComVisible(true)]
  [Guid("36F2BF51-D29E-498C-AFEA-BFCE002AE1AF")]
  public enum PlaybackMode {
    None = 0,
    File = 1,
    LeftRightFiles = 2,
    Dvd = 3,
    Url = 4,
    Device = 5
  }
 
  [ComVisible(true)]
  [Guid("44C1616D-FBE8-415D-869C-6D113C780C7F")]
  public enum PlaybackState {
    Play = 0,
    Pause = 1,
    Stop = 2,
    FastForward = 3,
    FastBackward = 4
  }
}
Добавлено через 14 часов 26 минут
Вопрос неактуален, решил исполнить вот этим способом.

Добавлено через 16 часов 35 минут
В общем я решил не сдаваться и раз уж взялся изучать C#, то не бросать недопонятое в долгий ящик, а разобраться и понять до конца - с чем же мне пришлось столкнуться. Т.к. в силу выходных активность форумчан заметно снизилась - мне не лень было покопаться самому в интернете и понять что же это за код. Вооружившись, не встречающимся ранее, DispID - я начал поиски и вот что вышло...

1. Я выяснил, что это не просто код, а СОМ interface который нужно подключить к проекту, но...
2. Его нужно зарегистрировать и собрать в виде dll и/или pdb;
3. Добавить его как Reference в проект и инициировать его с помощью using.

В общем то я выполнил всё вышеописанное, не знаю, правда насколько я всё правильно сделал, но вроде дебагер не ругается. Осталось дело за малым, сейчас пытаюсь понять как к этой всей конструкции обращаться... например по условию.

Короче, если разберусь - напишу, авось кому и пригодится, а если найдётся гражданин(ка) который останется не безучастным к этому вопросу - то хвала ему и благодарность. Не принимайте всё мной написанное как руководство ибо я слишком юный Падаван. Мои знания и занятия C# не превосходят и нескольких дней, примерно неделю назад я только узнал, что он C# вообще существует
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2014, 17:24
Помогаю со студенческими работами здесь

Обновила Flash Player а вместо видеороликов на экране запрос о необходимости включить Adobe flash player
Здравствуйте. я сразу скажу, что я так скажем неуверенный пользователь ПК)). Проблема такая:...

Обновление проигрывателя
Добрый вечер! Можно ли обновить проигрыватель Windows Media &quot;легальным&quot; способом, если у меня...

Разработка проигрывателя
Здравствуйте! У меня в Builder написана программа, кот. воспроизводит видео. Только одна проблема.....

Тормоза проигрывателя
Здравствуйте. Не знал куда написать поэтому напишу здесь, если не там создал не удаляйте тему. В...

дисплей от портативного проигрывателя
Здравствуйте, уважаемые форумчане! ко мне попал дисплей от портативного двд плеера. то есть нижней...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru