Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Вызвать VB'шный MsgBox из JavaScript


Автор: dstorm81 27.1.2006, 16:30
В общем суть вопроса такова, нужно из яваскрипта вызвать VB функцию MsgBox
Не подскажете ли как это сделать, если это возможно желательно рабочий скриптик, с отлавливание того что нажато, там ведь сразу по несколько кнопок можно вешать

Имитацию через модальные окна не предлагать

Автор: Innuendo 27.1.2006, 17:57
можешь конечно сделать так:
Код

<script language="VBscript">
dim MyBox =  Msgbox(...) // не помню синтаксис ВБ уже
</script>

а вообще в яваскрипт это называется confirm
http://aptem.net.ru/programming/html/design/design/allerts.htm
http://vip.fud.ru/html/document/webmaster/javascript/print/confirm_js.html

Автор: Ciber SLasH 27.1.2006, 21:03
Тут попахивает ActiveX-ом...
Т.к. только при наличие оного можно вызывать системные диалоговые окна.
А для этого можно воспользоваться:
Код

<script type='text/javascript'>
//-- Константы кнопок ----------------------------------------------------------
MB_OK = 0x0;
MB_OKCANCEL = 0x1;
MB_ABORTRETRYIGNORE = 0x2;
MB_YESNOCANCEL = 0x3;
MB_YESNO = 0x4;
MB_RETRYCANCEL = 0x5;
//-- Константы иконок ----------------------------------------------------------
MB_ICONERROR = 0x10;
MB_ICONQUESTION = 0x20;
MB_ICONWARNING = 0x30;
MB_ICONINFORMATION = 0x40;
MB_USERICON = 0x80;
//-- Константы резултата -------------------------------------------------------
ID_OK = 1;
ID_CANCEL = 2;
ID_ABORT = 3;
ID_RETRY = 4;
ID_IGNORE = 5;
ID_YES = 6;
ID_NO = 7;
ID_CLOSE = 8;
ID_HELP = 9;
ID_TRYAGAIN = 10;
ID_CONTINUE = 11;
////////////////////////////////////////////////////////////////////////////////
var WshShell = new ActiveXObject("WScript.Shell");
if (WshShell.Popup('Зю', 0, 'Title', MB_OKCANCEL | MB_ICONINFORMATION) == ID_OK) {
    alert('Фаш HDD успешно отформатирован...');
} else {
    alert('Ну, погоди... !!');
}
WshShell.Quit();
</script>

Об объекте WshShell читать тут: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/60f96092-6021-42f3-9a27-6848f4c38f64.asp

Автор: Innuendo 27.1.2006, 22:49
Ciber SLasH
а почему нельзя обойтись стандартными prompt и confirm?
у конфирма 2 кнопки- да, нет. И их нажатии можно так же отследить.
А у промпта: поле с текстом и так же кнопки. Значение поля по умолчанию так же можно задать smile

Автор: Ciber SLasH 27.1.2006, 23:59
Цитата(Innuendo @ 27.1.2006, 22:49 Найти цитируемый пост)

а почему нельзя обойтись стандартными prompt и confirm?

Обойтись можно. Но как я понял нужно было именно системный бокс. А в сис. боксе может быть и 3 кнопки (типа "Повторить", "Пропустить", "Отменить").

Автор: Sardar 28.1.2006, 00:05
Цитата(Innuendo @ 27.1.2006, 21:49 Найти цитируемый пост)
а почему нельзя обойтись стандартными prompt и confirm?

Потому что не существуют они в в WSH (виндовых скриптах) окружении. В браузере есессно лучше пользоваться только ими, иначе не кроссплатформено и постоянные вопросо к юзеру за разрешением.

Автор: dstorm81 29.1.2006, 19:27
да ребятки....
2Innuendo ну ты меня удивил, я в скриптах не лама и предлагать мне такую гадость...
2Ciber SLasH wsh не катит, черезчур много вопросов возникает.
упростим тему - вообще из javascript можно вызвать vbscrip функцию, или это на грани фантастики

что то типа этого
Код
<script language=javascript>
function prepare()
{
if(x==3){q1()} //вызов  из бейсика
}
</script>
<script language=VBScript>
sub q1()
end sub
</script>

Автор: Sardar 29.1.2006, 20:56
dstorm81 вообще используються два разных совершенно движка, не думаю что это возможно. Сам на VBS никогда не писал (QVB приходилось, до сих пор отплёвываюсь...), но что то не помню таких возможностей которые были бы в VBS и не были бы в JS.

Что выполняет функция на VBS, не проще ли пересмотреть логику?

Автор: nworm 29.1.2006, 20:58
В MSDN есть статья "Using VBScript and JScript on a Web Page"
Можно там почитать. Там есть такой пример:

Код

<script LANGUAGE="VBSCRIPT">
Function makeArrayVB()
    ' Creates a VBScript array
    dim anArray(1,1)
    anArray(0,0) = "0,0"
    anArray(0,1) = "0,1"
    anArray(1,0) = "1,0"
    anArray(1,1) = "1,1"
    makeArrayVB = anArray
End Function

<script LANGUAGE="JavaScript">
// Accesses a VBScript array within a JScript script
function getVBArray(){
    var arrayObj;
    var jsArray;
    arrayObj = makeArrayVB();
    jsArray = VBArray(arrayObj).toArray();
    alert("VBScript array length = " + jsArray.length);
    // Displays the contents of the array
    for(i=1;i<=jsArray.length;i++){
       alert(jsArray[i-1]);
    }
}
</SCRIPT>


Может это чем-то и поможет.

Автор: dstorm81 30.1.2006, 08:27
ладушки ребятки....
видимо придется с модальными окнами работать
всем спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)