Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Замена кодом нажатия Shift+Alt (http://www.flasher.ru/forum/showthread.php?t=115117)

DDcH 19.08.2008 21:19

Замена кодом нажатия Shift+Alt
 
Можно ли функцией в Экшене заменить нажатие Shift+Alt на клавиатуре (смена языка)?

alexcon314 19.08.2008 23:37

Информация о сочетании клавиш переключения раскладки клавы хранится в реестре. AS не может работать с реестром. Доступа к API-функциям в AS тоже нету.

etc 20.08.2008 10:34

А если у пользователя другая система или другое сочетание клавиш?

DDcH 20.08.2008 13:21

НЕт я не об этом! Я про реал тайм: Нажимаем Shift + Alt Печатает по Англ, Еще раз и печатает по Русс. Вот нужно заменить это разовое нажатие Кнопкой в Ролике: Нажали на нарисованную кнопку: и Язык ввода переключился!!!

Неважно Какое сочетание клавиш я имею ввиду событие смены ввода языка!

etc 20.08.2008 13:24

Это невозможно.

alexcon314 20.08.2008 13:33

DDсH, пользуйтесь кнопкой "Изменить", чтобы редактировать ваши посты.
То, о чем вы говорите, реализуется оболочкой.

DDcH 20.08.2008 21:29

Цитата:

Сообщение от alexcon314 (Сообщение 759250)
То, о чем вы говорите, реализуется оболочкой.

Например какой (оболочкой)?

alexcon314 20.08.2008 23:29

Я делал на цинке (mdm Zinc).
http://www.flasher.ru/forum/showpost...96&postcount=6

DDcH 21.08.2008 12:54

установил цинк в поле input file указал swf

вот с этим кодом на первом кадре:

Код:

// подключаем системную DLL user32.dll
var user32 = new mdm.DLL(mdm.System.Paths.windows + "\\system32\\user32.dll");
// создаем текстовые поля для отображения результатов
createTextField("out1", 1, 20, 20, 200, 20);
out1.type = "dynamic";
out1.border = true;
createTextField("out2", 2, 20, 50, 200, 200);
out2.type = "input";
out2.multiline = true;
out2.border = true;
//go-это стандаотная кнопка
go.onRelease = Go;
function Go() {
// формируем список параметров вызова функции ActivateKeyboardLayout
// в оригинале она выглядит так
//        HKL ActivateKeyboardLayout(
    HKL hkl,        // handle to keyboard layout
    UINT Flags        // keyboard layout flags
  );
        var parameter1 = user32.addParameter("integer", "1");
        var parameter2 = user32.addParameter("integer", "8");
        var res = user32.call("boolean", "ActivateKeyboardLayout");
        out1.text = res;
        user32.clear();
}

Сделал кнопку и назвал ее Go

ничего не происходит после компиляции в цинке. Я жму кнопку и ничего не происходит.

alexcon314 21.08.2008 14:25

А что должно происходить по-вашему?
Kнопку надо назвать не "Go", а "go".
...
Только что проверил - все работает.
При нажатии на кнопку меняется раскладка. В поле out1 пишется "true".
Версия цинка 2.5.0.34.
В версии 3.0.0.0 пишет "null", но по-прежнему работает.
В поле out2 вводим текст, то на русском, то на английском, если нажимать на кнопку.

Переехали.

DDcH 21.08.2008 15:32

У меня не работает.

Может это из за того что у меня flash 6 версии?

alexcon314 21.08.2008 16:21

Возможно. У меня после публикации под шестерку тоже не работает.
В Zinc IDE на вкладке Flash Settings установите флажок Embedded flash control и в комбобоксе Flash Player Version укажите Flash 8. Компилироваться будет несколько дольше, но работает.
...
Второй вариант из FAQ'a не пробовали?

DDcH 21.08.2008 16:29

Нет. Пишет что Скрипт будет очень тормозить систему. Вы желаете остановить выполнение сценария? Говорю нет. Ничего не происходит и через некоторое время снова открывается этот же диалог.

alexcon314 21.08.2008 16:39

Сорри. Посмотрите мой пост после редактирования.

DDcH 21.08.2008 17:02

Простите что такое пост?

Может нужно особо конфигурировать Цинк?

alexcon314 21.08.2008 17:05

Пост - сообщение пользователя на форуме.
Посмотрите мой пост №12 в этой теме еще раз. Я дополнил его важной информацией.
Цитата:

В Zinc IDE на вкладке Flash Settings установите флажок Embedded flash control и в комбобоксе Flash Player Version укажите Flash 8. Компилироваться будет несколько дольше, но работает.
В цинке версии 3.0.0.0 все работает по-прежнему, даже после публикации swf под шестую версию плеера.

DDcH 21.08.2008 17:17

Выдает 2 ошибки, Иконки и Иконки Ехе файла После чего создает приложение, Запускает и вылетает ошибка что Приложение не является приложением Win 32

Получается дело действительно в Версии Flash ? Нужно компилировать 7?

alexcon314 21.08.2008 17:23

У себя я делаю так:
- Flash 8;
- Zinc 2.5.0.34;
Все работает. Zinc 3.0.0.0 я практически не использую, разве что для тестов.
Цитата:

Получается дело действительно в Версии Flash ? Нужно компилировать 7?
Видимо, да. Попробуйте.

DDcH 21.08.2008 19:14

Можно сделать раздельные кнопки "Рус" и "Англ"
Чтобы нажимая одну можно кнопку можно было включить только конкретный язык.

В Delphi я бы делал так
Код:

ActivateKeyboardLayout(LoadKeyboardLayout('00000409', 0), 0);
Но заменя

Код:

        var parameter1 = user32.addParameter("integer", "1");
        var parameter2 = user32.addParameter("integer", "8");
        var res = user32.call("boolean", "ActivateKeyboardLayout");

        out1.text = res;
        user32.clear();

на

Код:

var parameter1 = user32.addParameter("integer", "1");
        var parameter2 = user32.addParameter("integer", "8");
        //var res = user32.call("boolean", "ActivateKeyboardLayout");
        var res = user32.call("boolean", "ActivateKeyboardLayout(LoadKeyboardLayout('00000409', 0), 0)")
        out1.text = res;
        user32.clear();

Ругается на то что многовато параметров итп

Подскажите Как можно прописать пораметры команды

DDcH 27.08.2008 08:44

Вот как выглядят операторы переключения раскладки:

Код:

// Переключение на английскую раскладку
LoadKeyboardLayout("00000409", &H1)

// Переключение на русскую раскладку
LoadKeyboardLayout("00000419", &H1)

Вот кнопка переключения раскладки:
Код:

var parameter1 = user32.addParameter("integer", "1");
var parameter2 = user32.addParameter("integer", "8");
var res = user32.call("boolean", "ActivateKeyboardLayout");

out1.text = res;
user32.clear();

Как можно вставить Эти операторы в код переключения раскладки, так чтобы кнопки получились отдельно (каждая переключала на свой язык)

alexcon314 27.08.2008 09:32

Код:

var parameter1 = user32.addParameter("string", "00000419");//русский
//var parameter1 = user32.addParameter("string", "00000409");//английский
var parameter2 = user32.addParameter("integer", "9");
var res = user32.call("integer", "LoadKeyboardLayoutA");
out1.text = res;
user32.clear();

Повесьте на кнопку вот такой код. (8-й плеер, zinc 2.5.0.34)

DDcH 28.08.2008 09:24

alexcon314, Респект!


Часовой пояс GMT +4, время: 11:24.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.