|
PureBasic Мощный кросс-платформенный язык среднего уровня на основе BASIC. Подходит для решения широкого круга задач. |
13.05.2007, 08:22
|
#1
|
Нуждающийся
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
PB 4.0 + JS скрипты
вопрос по сабжу - можно как нибудь заставить прогу на Пурике использовать js-скрипты? Хочу написать FLV-конвертер, спер с vixy.net js-скрипт, который конвертирует это дело, но поскольку с явой не дружу, написать тоже самое в пурике не смогу. Может быть ктото сможет помочь?
|
(Offline)
|
|
13.05.2007, 16:21
|
#2
|
|
Re: PB 4.0 + JS скрипты
Ознакомься: http://www.purebasic.fr/english/viewtopic.php?p=62775
Примечания:
1) Метод с Userlib не сработает.
2) Структуру Variant придется переименовать.
3) "vbscript", естественно, надо заменить на "jscript".
4) Вместо "tmp.vbs" прописываешь путь до файла со скриптом.
5) Ну и можешь еще мусор всякий вычистить оттуда.
Вроде все.
|
|
|
13.05.2007, 17:31
|
#3
|
Нуждающийся
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: PB 4.0 + JS скрипты
вот ведь блин... а на русском нету? С англицким у меня проблемы
|
(Offline)
|
|
13.05.2007, 17:42
|
#4
|
|
Re: PB 4.0 + JS скрипты
Аналогично...
Есть:
Structure Variant
Type.w
Reserved1.w
Reserved2.w
Reserved3.w
String.l
EndStructure
#VT_BSTR = 8
x.Variant\Type = #VT_BSTR
DataSection
meine_vbs:
IncludeBinary "tmp.vbs"
Data.b 0
EndDataSection
Procedure.l Ansi2Uni(ansi.s)
size.l=MultiByteToWideChar_(#CP_ACP,0,ansi,-1,0,0)
Dim unicode.w(size)
MultiByteToWideChar_(#CP_ACP, 0, ansi, Len(ansi), unicode(), size)
ProcedureReturn @unicode()
EndProcedure
Procedure.s Uni2Ansi(*Unicode.l)
size.l = WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, #Null, #Null, #Null, #Null)
ansi.s=Space(size)
WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, @ansi, size, #Null, #Null)
ProcedureReturn ansi
EndProcedure
Enumeration ; ScriptControlStates
#Initialized = 0
#Connected = 1
EndEnumeration
; DispInterfaces
Interface IScriptProcedure Extends IDispatch
get_Name(a)
get_NumArgs(a)
get_HasReturnValue(a)
EndInterface
Interface IScriptProcedureCollection Extends IDispatch
get__NewEnum(a)
get_Item(a,b,c,d,e)
get_Count(a)
EndInterface
Interface IScriptModule Extends IDispatch
get_Name(a)
get_CodeObject(a)
get_Procedures(a)
AddCode(a)
Eval(a,b)
ExecuteStatement(a)
Run(a,b,c)
EndInterface
Interface IScriptModuleCollection Extends IDispatch
get__NewEnum(a)
get_Item(a,b,c,d,e)
get_Count(a)
Add(a,b,c)
EndInterface
Interface IScriptError Extends IDispatch
get_Number(a)
get_Source(a)
get_Description(a)
get_HelpFile(a)
get_HelpContext(a)
get_Text(a)
get_Line(a)
get_Column(a)
Clear()
EndInterface
Interface IScriptControl Extends IDispatch
get_Language(a)
put_Language(a)
get_State(a)
put_State(a)
put_SitehWnd(a)
get_SitehWnd(a)
get_Timeout(a)
put_Timeout(a)
get_AllowUI(a)
put_AllowUI(a)
get_UseSafeSubset(a)
put_UseSafeSubset(a)
get_Modules(a)
get_Error(a)
get_CodeObject(a)
get_Procedures(a)
_AboutBox()
AddObject(a,b,c)
Reset()
AddCode(a)
Eval(a,b)
ExecuteStatement(a)
Run(a,b,c)
EndInterface
CoInitialize_(0)
If CoCreateInstance_(?CLSID_ScriptControl,0,1,?IID_IScriptControl,@Object.IScriptControl) = 0
object\reset()
object\put_Language(Ansi2Uni("vbscript"))
object\AddCode(Ansi2Uni(PeekS(?meine_vbs)))
;
object\Eval(Ansi2Uni("soft"),@x)
meine_variX.s = UCase(uni2ansi(x\String))
;
object\reset()
;
object\release()
EndIf
CoUninitialize_()
MessageRequester("vbs variable",meine_variX,#PB_MessageRequester_Ok)
DataSection
CLSID_ScriptControl:
Data.l $0e59f1d5
Data.w $1fbe,$11d0
Data.b $8f,$f2,$00,$a0,$d1,$00,$38,$bc
IID_IScriptControl:
Data.l $0e59f1d3
Data.w $1fbe,$11d0
Data.b $8f,$f2,$00,$a0,$d1,$00,$38,$bc
EndDataSection
|
|
|
13.05.2007, 18:45
|
#5
|
Нуждающийся
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: PB 4.0 + JS скрипты
Лады, будем пробовать
|
(Offline)
|
|
14.05.2007, 14:31
|
#6
|
|
Re: PB 4.0 + JS скрипты
Это, у меня тут одна идейка появилась... Дело в том, что если тебе требуется всего-навсего запустить один скрипт, то, в принципе, вполне достаточно следующего кода :
RunProgram("путь до файла со скриптом")
|
|
|
14.05.2007, 14:46
|
#7
|
Нуждающийся
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: PB 4.0 + JS скрипты
Дело в том что код довольно обьемный, и наверняка получает какие то данные из вне. Но если хочешь подмочь, то вот код (js)
var jsv = 0;
var winIe = 0;
var macIe = 0;
/*@cc_on jsv = @_jscript_version; @if (@_win64 || @_win32 || @_win16) winIe = 1; @elif (@_mac && (@_PowerPC || @_mc680x0)) macIe = 1; @end @*/
var procStatus = 0;
window.onbeforeunload = function(event)
{
if (procStatus == 1)
{
event = event || window.event;
event.returnValue = "It's still processing the conversion.";
}
}
///////////////////////////////////////////////////////////////////////////////////////
function get_hex2(val)
{
val = parseInt(val);
if (val == 0) return '00';
var out='';
while (val)
{
out = '0123456789abcdef'.substr(val % 16, 1) + out;
val = parseInt(val / 16);
}
if (val.length == 1) return '0' + out;
return out;
}
///////////////////////////////////////////////////////////////////////////////////////
function FlvdlBase(url)
{
this.id = '';
this.url = url;
this.ext = '.mov';
this.is_fecthing = false;
this.size = 0;
this.ui = null;
this.dl_base_url = null;
}
FlvdlBase.prototype =
{
set_ui : function(ui)
{
this.ui = ui;
},
set_ext : function(ext)
{
this.ext = ext;
},
_get_dl_url : function()
{
return this.dl_base_url + '?c=dl&id='+this.id;
},
_get_process_frame_url : function()
{
var svurl = svurls[Math.floor(Math.random() * svurls.length)];
return svurl + '?c=process&u=' + escape(this.url) + '&e='+this.ext;
},
kick_cancel : function()
{
set_process_frame(null);
},
kick_process : function()
{
set_process_frame(this._get_process_frame_url());
},
on_recieve_json : function(obj)
{
var s = (obj.status == 'ok');
switch(obj.process)
{
case 'connected':
this.ui.on_connected();
break;
case 'initial':
if (s)
{
this.size = obj.size;
this.url = obj.url;
this.id = obj.id;
this.ui.on_file_info_end(obj.size, null);
}
else this.ui.on_file_info_end(0, obj.reason);
break;
case 'start':
if (!s)
{
this.ui.on_start_failed(obj.reason);
}
break;
case 'fetching':
this.ui.on_fetching(s, obj.size==undefined?0:obj.size, this.size);
break;
case 'fetched':
this.ui.on_fetch_end(s);
break;
case 'converted':
this.dl_base_url = obj.dl_base_url;
this.ui.on_convert_end(s, this._get_dl_url());
break;
}
}
}
/////
function FlvdlUI()
{
this.base = null;
}
FlvdlUI.prototype =
{
_is_valid_url : function(url)
{
return url.match(/^http:\/\//);
},
_inputs_disabled : function(dis)
{
$('start_button').disabled = dis;
},
_html_reset : function()
{
Element.hide('process');
Element.hide('download');
Element.hide('input-button-back');
Element.show('input-button');
Element.show('inputbox');
this._set_process_msg(TITLE_INIT);
this._show_process_progress(false);
this._set_progress(0,0,0);
this._inputs_disabled(false);
set_download_frame(null);
$('url').focus();
procStatus = 0;
},
_show_initialize : function()
{
this._set_process_msg(TITLE_CONNECTING);
this._show_process_progress(true);
$('source-url').innerHTML = $('url').value;
$('conv-format').innerHTML = $('format').value;
},
_show_process_progress : function(show)
{
if (show)
{
Element.show('panim');
}
else
{
Element.hide('panim');
}
},
_set_process_msg : function(msg)
{
$('title').innerHTML = msg;
},
_set_progress : function(percent, size, totalsize)
{
var ps = String(percent) + '%';
var ptag = $('progress');
if (percent > 10)
{
ptag.innerHTML = ps;
}
else
{
ptag.innerHTML = '';
}
ptag.style.width = ps;
var cs;
if (totalsize > 0)
{
cs = this._kb(size) + '/' + this._kb(totalsize) + 'KB';
}
else
{
cs ='-/-KB';
}
$('conv-size').innerHTML = cs;
},
_send_cancel : function()
{
if (this.base)
{
this.base.kick_cancel();
this.base = null;
}
},
_clear : function()
{
this.base = null;
this._html_reset();
},
_kb : function(size)
{
return String(Math.floor(Number(size) / 1024));
},
_start_download : function(url)
{
set_download_frame(null);
if (winIe)
{
this._set_process_msg(TITLE_COMPL_DL);
}
else
{
this._set_process_msg(TITLE_COMPL_AT);
set_download_frame(url);
}
Element.hide('process');
Element.hide('input-button');
Element.hide('inputbox');
$('download_a').href = url;
//insert_468x60_cjad('download_ad');
Element.show('download');
if(navigator.userAgent.indexOf("Safari")!=-1)
{
// for safari
$('input-button-back').innerHTML = '<p style="text-align:center;"><a href="http://vixy.net/">Back</a></p>';
}
Element.show('input-button-back');
$('url').value = '';
// urchinTracker('/flvtc_trakcing/dl/'+escape(url));
procStatus = 2;
},
/////
// from base
on_connected : function()
{
this._set_process_msg(TITLE_RESLV);
},
on_file_info_end : function(size, err)
{
if (size > 0)
{
this._set_process_msg(TITLE_STARTING);
}
else
{
this._show_process_progress(false);
var html = "<span style='color:red;'>Error: " + err + "</span>";
this._set_process_msg(html);
procStatus = 0;
}
},
on_start_failed : function(err)
{
this._show_process_progress(false);
var html = "<span style='color:red;'>Error: " + err + "</span>";
this._set_process_msg(html);
procStatus = 0;
},
on_fetching : function(suceeded, size, filesize)
{
if (suceeded)
{
this._set_process_msg(TITLE_PROCESS);
var p = Math.floor(size * 100 / filesize);
this._set_progress(p, size, filesize);
}
},
on_fetch_end : function(succeeded)
{
if (succeeded)
{
}
else
{
this._show_process_progress(false);
this._set_process_msg(TITLE_PROC_FAILED);
procStatus = 0;
}
},
on_convert_end : function(suceeded, dlurl)
{
this._show_process_progress(false);
if (suceeded)
{
this._set_progress(100, 0, 0);
this._start_download(dlurl);
}
else
{
this._set_process_msg(TITLE_CONV_FAILED);
procStatus = 0;
}
},
/////
// from html
on_load : function()
{
},
on_unload : function()
{
this._send_cancel();
},
on_start : function()
{
this.base = null;
var url = $('url').value;
url = url.replace(/\s/ig,'');
if (this._is_valid_url(url))
{
this._inputs_disabled(true);
Element.hide('inputbox');
Element.show('process');
this.base = new FlvdlBase(url);
this.base.set_ui(this);
this.base.set_ext($('format').value);
this.base.kick_process();
this._show_initialize();
// urchinTracker('/flvtc_trakcing/start/'+escape(url));
procStatus = 1;
}
else
{
this._html_reset();
}
},
on_cancel : function()
{
this._send_cancel();
this._clear();
},
on_back : function()
{
location.href="http://vixy.net/";
},
/////
// from process_frame
on_recieve_json : function(obj)
{
if (this.base)
{
this.base.on_recieve_json(obj);
}
}
}
/////
function get_query_url()
{
var q = String(location.href).split('?');
if (q[1] == undefined) return '';
var qs = q[1].split('&');
for(var i = 0; i < qs.length; i++)
{
var qu = qs[i].split('=');
if (qu[0] == 'u')
{
return unescape(qu[1]);
}
}
return '';
}
var flvdlui = new FlvdlUI();
function on_body_load()
{
$('url').focus();
var url = get_query_url();
if (url != '') $('url').value = url;
flvdlui.on_load();
}
function on_body_unload()
{
flvdlui.on_unload();
}
function set_process_frame(url)
{
if (url)
{
$('process_frame').src = url;
}
else
{
$('process_frame').src = 'about:blank';
}
}
function set_download_frame(url)
{
if (url)
{
$('download_frame').src = url;
}
else
{
$('download_frame').src = 'about:blank';
}
}
var recieve_json = function(obj)
{
flvdlui.on_recieve_json(obj);
}
|
(Offline)
|
|
14.05.2007, 15:53
|
#8
|
|
Re: PB 4.0 + JS скрипты
Ах вон оно как... Так вам, уважаемый, надо было бы для начала с самим скриптом разобраться, а уже потом думать, как его из Пурика запустить.
|
|
|
14.05.2007, 17:45
|
#9
|
Нуждающийся
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: PB 4.0 + JS скрипты
Так помаленьку и разбираюсь... и там и там...
|
(Offline)
|
|
14.05.2007, 17:53
|
#10
|
|
Сообщение от [TY]ran
Так помаленьку и разбираюсь... и там и там...
|
Совет: разберись сначала со скриптом. По крайней мере настолько, чтобы понять, нужны ему входные данные или нет.
Хорошо приведем наши доводы, надеюсь все верят AG.RU
|
Я вот не верю. Наидебильнейший ресурс, ИМХО.
Честно говоря, я тоже так считаю ...
Хм, а может кто подсказать хороший сервер с рейтами >1k ?
Как в пуре определить координаты курсора крысы в 3Д???
|
Ну, если ты решил использовать в качестве движка встроенную пародию на OGRE, то это будет проблематично... Если что-то другое - напиши что именно.
Кто-нибудь здесь еще, кроме меня, играл в эту замечательную TBS ?
Сообщение от alcoSHoLiK
Линки?
|
http://www.triumphstudios.com/shadowmagic/index.php подойдет ?
Вот еще центральный фан-сайт, для комплекта: http://aow2.heavengames.com/
прикольно, но герои мну больше нравяцо
|
Чем же ? ИМХО, они (сужу по 1-3 частям, остальных не видела) практически по всем статьям проигрывают AoW...
Гляньте на тот же Warhammer: Online ну дубликат WoW, только они додумались от себя добавить нового, и пробуют переплюнуть WoW, хотя уже 2 раза облажались, один из разов, это из-за недостатка финансов, студия отказалась от разработки.
|
А еще Толкиен, гад, нагло стырил из WoW орков с эльфами .
Почти в тему: http://www.cyty.com/robocom/
Я вот тут думаю: может стоит почистить тему ?
Говорят, что есть Виста совместимый PureBasic v4.10
|
Не совсем так: пока есть только его первая бета-версия.
есть ли существенные изменения
|
Гм, вроде же список представлен: http://www.purebasic.fr/english/viewtopic.php?t=27343 ?
а помоему она уже давно доступна вроде
|
Давно, но не для всех: раньше тестирование было закрытым.
Естественно, читал, но хочется узнать человеческое, "живое" мнение, а не сухие строки листа изменений.
|
Ну это уж точно не к Maxus'у ( )...
Maxus, а вот можно поинтересоваться: нафига ты это написал ? Тебя немного о другом спрашивали, это-то все мы и сами знаем.
Добавила обновление до версии 4.02 (см. первый пост).
Значит так:
До тех пор, пока Maxus будет паразитировать здесь на должности модератора, я отказываюсь посещать данный раздел (с модерацией, я надеюсь, справятся СМы).
Имейте ввиду.
|
|
|
15.05.2007, 09:24
|
#11
|
Оператор ЭВМ
Регистрация: 10.01.2007
Сообщений: 37
Написано 6 полезных сообщений (для 5 пользователей)
|
Re: PB 4.0 + JS скрипты
Если вопрос стоит только в работе с flv файлами, то замем нужен этот скрипт? Проанализировав способы проигрования на сайтах пришёл к выводу, что flv воспроизводиться обыкновенной Flash(.swf) программой, которая в свою очередь воспроизводиться обыкновенным Flash Player. PB умеет через ShockwaveFlash (ActiveX) воспроизводить swf файлы, Найди флешку(сграбь с сайта, где она используеться) которая умеет воспроизводить flv файлы. Осталось только всё это обьединить в одно целое и можно создать flvplayer на PureBasic! Ну, а всё что можно воспроизвести на экране монитора, то можно и захватить и сконвертировать в другой формат, если надо.
|
(Offline)
|
|
15.05.2007, 15:45
|
#12
|
Нуждающийся
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: PB 4.0 + JS скрипты
хм, похоже на идею... интереснее конечно сделать без ActiveX, на чистом коде, но для первого раза пойдет
|
(Offline)
|
|
15.05.2007, 16:35
|
#13
|
Оператор ЭВМ
Регистрация: 10.01.2007
Сообщений: 37
Написано 6 полезных сообщений (для 5 пользователей)
|
Re: PB 4.0 + JS скрипты
|
(Offline)
|
|
15.05.2007, 16:58
|
#14
|
|
Re: PB 4.0 + JS скрипты
flv ето сокращение от Flash Video
и вообще к современым плеерам уже понаделывали плагины которые позволяют flv декодировать ... к примеру jetAudio может
|
|
|
15.05.2007, 19:36
|
#15
|
Нуждающийся
Регистрация: 11.05.2007
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: PB 4.0 + JS скрипты
Все равно своего охота! Kvitalliy ты не против если я поизваращаюсь с этим кодом и попробую сделать реальный flv плеер с конвертацией? Если получицца конечно...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:17.
|