То,что я нашел про Bink-кер(*.bik).Разберемся в нем

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

То,что я нашел про Bink-кер(*.bik).Разберемся в нем

Сообщение Lamer_Pavel » 27.11.2007 (Вт) 13:02

Может,осилим Бинкер
Вложения
Bink.zip
То,что я нашел про Bink-кер(*.bik)
(24.89 Кб) Скачиваний: 300

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 27.11.2007 (Вт) 13:17

а чё это ваще такое?
поясни, будь добр

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 27.11.2007 (Вт) 13:49

Рискну предположить, что это закодированное послание от гуманоидов с Альфа-Центавра

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 27.11.2007 (Вт) 16:00

я знаю что это формат из игр вроде бы, типа видео.
но зачем всё это...
паштет, ну ты хочешь повытягивать ролики из игрушек?

Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

Сообщение Lamer_Pavel » 27.11.2007 (Вт) 18:31

Специально для всех - это исходный код на C++,ориентируясь на который,можно использовать binkw32.dll.
Например:

Код на C++
Код: Выделить всё
typedef struct
{
   s32 Width;         
   s32 Height;         
   s32 Frames;         
   s32 FrameNum;      
   s32 LastFrame;
   s32 FrameRate;      
   s32 FrameRateDiv;   
   u32 Flags;
        s32 yWidth;         
   s32 yHeight;      
   s32 uvWidth;      
   s32 uvHeight;   
   
} BINK_STRUCT, *HBINK;


На VB:
Код: Выделить всё
Private Type BINK_STRUCT
     Width As Integer
     Height As Integer
     Frames As Integer
     FrameNum As Integer
     LastFrame As Integer
     FrameRate As Integer
     FrameRateDiv As Integer
     Flags As Integer
     yWidth As Integer
     yHeight As Integer
     uvWidth As Integer
     uvHeight As Integer
End Type


На C++:
Код: Выделить всё
#define BINKNOTHREADEDIO 0x00800000

На VB:
Код: Выделить всё
Private Const BINKNOTHREADEDIO = &H800000

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 27.11.2007 (Вт) 20:20

В структуре вместо Integer должно быть Long, как я понимаю u32 - без знаковое 32-х битное число, а s32 - знаковое. А Integer - знаковое 16-и битное число.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 27.11.2007 (Вт) 22:55

И что полезного есть в этой binkw32.dll?
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

Сообщение Lamer_Pavel » 28.11.2007 (Ср) 9:46

Она проигрывает файлы *.bik,которые используются в большинстве игр.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 28.11.2007 (Ср) 9:48

Если задача только в том, чтобы смотреть ролики, то для far'а есть плагин - binkview.
Лучший способ понять что-то самому — объяснить это другому.

homeworld
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 07.12.2006 (Чт) 13:17

Сообщение homeworld » 28.11.2007 (Ср) 15:18

Было бы супер использовать эту библу(binkw32.dll) в VB6. Я слышал что есть Rad Video Tools SDK (bink & smk) так там вроде есть описания про всё что надо, но SDK кажется стоит денежков.
Последний раз редактировалось homeworld 29.11.2007 (Чт) 12:54, всего редактировалось 2 раз(а).

Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

Сообщение Lamer_Pavel » 28.11.2007 (Ср) 16:04

Я вот что написал

Код: Выделить всё
Private Declare Function BinkOpen Lib "binkw32.dll" Alias "_BinkOpen@8" (ByVal hBinkFile As String, flags As String) As Long
Private Sub Form_Load()
BinkOpen "d:/1.bik", "BINKALPHA"
Me.Caption = BinkOpen("d:/1.bik","BINKALPHA")
End Sub

И на заголовке формы появилось число 19988608,но если "d:/1.bik" заменить на несуществующий путь, то будет число 0.
Значит ли это то,что я сделал всё правильно?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 28.11.2007 (Ср) 16:20

Да :)
Лучший способ понять что-то самому — объяснить это другому.

Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

Сообщение Lamer_Pavel » 28.11.2007 (Ср) 16:55

На одном из форумов VBSTREETS:

-----------------------------------------------------
Addr:8000D40C hint(0038) Name: _BinkWait@4
Addr:00000000 hint(0015) Name: _BinkDoFrame@4
Addr:000000D5 hint(0022) Name: _BinkNextFrame@4
Addr:00527CE8 hint(000F) Name: _BinkClose@4
Addr:8000D60C hint(0024) Name: _BinkOpenDirectSound@4

имеют пустой параметр void, либо на адрес буфера.

А функция:

Addr:00000000 hint(0016) Name: _BinkGetError@0

Вообще не имеет параметра, она возвращает, как я понял какое либо значение. Только вот какое?
-----------------------------------------------------

Как мне в VB "изобразить" пустой параметр void

С _BinkGetError@0 я разобрался
Код: Выделить всё
Private Declare Function BinkGetError Lib "binkw32.dll" Alias "_BinkGetError@0" () As Long

И мне он возвратил число 805638608

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 29.11.2007 (Чт) 13:51

Она возвращает адрес строки. Получить её можно, например, так:
Код: Выделить всё
Private Declare Function BinkGetError Lib "binkw32.dll" Alias "_BinkGetError@0" () As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (lpString As Any) As Long

Private Function GetError() As String
Dim addr As Long
Dim lstr As Long
addr = BinkGetError
lstr = lstrlen(ByVal addr)
If lstr > 0 Then
GetError = String$(lstr, 0)
CopyMemory ByVal GetError, ByVal addr, lstr
End If
End Function

Private Sub Command1_Click()
Me.Caption = GetError
End Sub

Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

Сообщение Lamer_Pavel » 29.11.2007 (Чт) 21:46

На данный момент я без проблем обращаюсь к библиотеке со следующими функциями:
Код: Выделить всё
Private Declare Function BinkGetError Lib "binkw32.dll" Alias "_BinkGetError@0" () As Long
Private Declare Function BinkOpen Lib "binkw32.dll" Alias "_BinkOpen@8" (ByVal hBinkFile As String, flags As Long) As Long
Private Declare Function BinkClose Lib "binkw32.dll" Alias "_BinkClose@4" (ByVal val As Long) As Long

Но при использовании функций:
Код: Выделить всё
Private Declare Function BinkGoto Lib "binkw32.dll" Alias "_BinkGoto@12" (ByVal val As Long, framenumber As Long, ByVal flags As Long) As Long
Private Declare Function BinkNextFrame Lib "binkw32.dll" Alias "_BinkNextFrame@4" (ByVal val As Long) As Long
Private Declare Function BinkDoFrame Lib "binkw32.dll" Alias "_BinkDoFrame@4" (ByVal val As Long) As Long

Где val - это BinkOpen("d:/1.bik", BINKALPHA),то вылетает ошибка о том ,что в проэкте найдена ошибка и оно закрывается,передайте Microsoft сведения о ошибке.
Я что-то делаю неправильно?

Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

Сообщение Lamer_Pavel » 29.11.2007 (Чт) 21:52

Это кусок Bink SDK,может по нему можно определить ошибку:
Код: Выделить всё
#include <radbink.h>
#include <stdio.h>


s32 BinkOpenDirectSound(s32 unknown)
{
   return 0;
}

s32 BinkOpenMiles(s32 unknown)
{
   return 0;
}

s32 BinkOpenWaveOut(s32 unknown)
{
   return 0;
}

s32 BinkSetSoundSystem(BINK_SOUND_FUNC SoundFunction, IDirectSound *pDS)
{
   return 0;
}

HBINK BinkOpen(HANDLE hBinkFile, u32 Flags)
{
   return 0;
}

void BinkGoto(HBINK hBink, s32 FrameNumber, s32 unknown)
{
}

s32 BinkDoFrame(HBINK hBink)
{
   return 0;
}

void BinkNextFrame(HBINK hBink)
{
}

void BinkClose(HBINK hBink)
{
}

s32 BinkWait(HBINK hBink)
{
   return 0;
}


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 15

    TopList