Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2014, 19:11   #11
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

пишите запуск агента в VBS.

Примерчик:
Код:
dim txt
txt="Описание API вызова RunGetKeyboardSetcom.VBS.txt" '
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set t_file = FSO.OpenTextFile(txt, 1)
source = t_file.ReadAll
t_file.Close
' Открываем агента установленного в системе по умолчанию
Set myagent = CreateObject("Agent.Control.1")
myagent.Connected = True
myagent.Characters.Load"0"
myagent.Characters("0").MoveTo 500, 50
myagent.Characters("0").Show
myagent.Characters("0").Speak "После закрытия блокнота скрипт запустится автоматически."
myagent.Characters("0").Speak source
' Откроем блокнот и загрузим текст, который читает агент
Dim WshShell 
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("%windir%\notepad " & txt),3, true
WshShell.Run ("rungetkeyboardsetcom.vbs"),3, true
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.01.2014, 20:11   #12
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Чтоб сделать программу (exe-файл) - нужно сделать в Visual Basic 6.0 все тоже самое что в ворде.

Вордовский VBA (Visual Basic for Applications) - это почти один в один Visual Basic 6.0. Только вордовский просто запускает эти программы, а Visual Basic 6.0 сделает тебе EXE-файл на выходе.
blackstrip вне форума Ответить с цитированием
Старый 04.01.2014, 20:13   #13
le@pold
Пользователь
 
Регистрация: 03.01.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
пишите запуск агента в VBS.

Примерчик:
Код:
dim txt
txt="Описание API вызова RunGetKeyboardSetcom.VBS.txt" '
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set t_file = FSO.OpenTextFile(txt, 1)
source = t_file.ReadAll
t_file.Close
' Открываем агента установленного в системе по умолчанию
Set myagent = CreateObject("Agent.Control.1")
myagent.Connected = True
myagent.Characters.Load"0"
myagent.Characters("0").MoveTo 500, 50
myagent.Characters("0").Show
myagent.Characters("0").Speak "После закрытия блокнота скрипт запустится автоматически."
myagent.Characters("0").Speak source
' Откроем блокнот и загрузим текст, который читает агент
Dim WshShell 
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("%windir%\notepad " & txt),3, true
WshShell.Run ("rungetkeyboardsetcom.vbs"),3, true
ничего не понял... видимо я тупой, но это не беда.

Цитата:
Сообщение от blackstrip Посмотреть сообщение
Чтоб сделать программу (exe-файл) - нужно сделать в Visual Basic 6.0 все тоже самое что в ворде.

Вордовский VBA (Visual Basic for Applications) - это почти один в один Visual Basic 6.0. Только вордовский просто запускает эти программы, а Visual Basic 6.0 сделает тебе EXE-файл на выходе.
ааа, т.е. в принципе код можно оставить тот же, только с учетом диалекта vb 6.0?

Последний раз редактировалось Stilet; 05.01.2014 в 12:11.
le@pold вне форума Ответить с цитированием
Старый 04.01.2014, 20:15   #14
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Цитата:
Сообщение от le@pold Посмотреть сообщение
ничего не понял... видимо я тупой, но это не беда.
Это он написал пример скрипта vbs. Если этот текст скопировать в текстовый файл, а файл переименовать в "proga.vbs" - то это будет VB-script, который тоже можно запустить на компьютере.

Цитата:
Сообщение от le@pold Посмотреть сообщение
ааа, т.е. в принципе код можно оставить тот же, только с учетом диалекта vb 6.0?
да, все тоже самое. Там такие же события загрузки и показа форм, такой же точно код будет, также точно на форму кинешь Agent1 и т.д. Только на выходе получится exe.

Последний раз редактировалось Stilet; 05.01.2014 в 12:13.
blackstrip вне форума Ответить с цитированием
Старый 04.01.2014, 20:23   #15
le@pold
Пользователь
 
Регистрация: 03.01.2014
Сообщений: 14
По умолчанию

В общем вышло как раз то что я хотел, только осталось 2 момента:
- как все таки убрать задний фон (белый)
- и возможно ли сделать, чтобы такая программа не открывалась в окне, а сидела в трее?
если это конечно возможно (а то окно Form1 как то вообще не вписывается в идею =)
Изображения
Тип файла: jpg вы.jpg (80.5 Кб, 155 просмотров)
le@pold вне форума Ответить с цитированием
Старый 04.01.2014, 21:02   #16
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Для прозрачности нужно выбрать один цвет - и он на всех кадрах всех анимаций станет прозрачным. Вот здесь:



А форму можно либо скрыть через вызов Form1.Hide, либо задать ей какие нибудь координаты далеко за краями экрана типа Form1.Left=10000 и Form1.Top=10000

А вот значок в трей (чтоб около часов висел, да еще и по клику, например, меню выдавал с пунктом "Выход" хотя бы) - это надо использовать ShellNotifyIcon функцию, но там не так легко.

Последний раз редактировалось blackstrip; 04.01.2014 в 21:50.
blackstrip вне форума Ответить с цитированием
Старый 05.01.2014, 00:34   #17
le@pold
Пользователь
 
Регистрация: 03.01.2014
Сообщений: 14
По умолчанию

вариант с "далеко за пределами рабочего стола" вполне устроит, буду пытаться. Еще раз спасибо)

последний наверное вопрос, и пойду я учебники штудировать, хорошо когда за тебя напишут все, скажут куда вставить, но так дело не пойдет.
Если я хочу создать трехмерную модель и заставить её выполнять определенные действия - допустим она появляется в строго определенном месте, идет туда то делает что-то, говорит и т.д., какими вы бы программами (языками программирования) воспользовались?
p.s. просто хочу понять, что мне изучать, в каком направлении двигаться, чтобы сделать задуманное
p.s.s. заранее спасибо

Последний раз редактировалось Stilet; 05.01.2014 в 12:13.
le@pold вне форума Ответить с цитированием
Старый 05.01.2014, 12:17   #18
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Можно все это сделать с помощью MS Agenta. Вот, например, трехмерный мерлин (встроенный в windows)


Он был смоделирован в какой нибудь 3ds max, но потом из его анимаций была сделана нарезка bmp-кадров, которая потом была вставлена в Microsoft Agent Character Editor.

А все остальное (появляется в строго определенном месте, идет туда то, делает что-то, говорит) - как раз эти анимации и закладываются в списке States:
Showing - анимация появления
Hiding - анимация пропадания (при выходе, закрытии)
GesturingLeft - показывает влево
GesturingRight - показывает вправо
GesturingUp - показывает вверх
GesturingDown - показывает вниз
Listening - начинает слушать (с микрофона)
Hearing - в процессе слушания с микрофона
IdlingLevel1, IdlingLevel2, IdlingLevel3 - анимации бездействия
MovingLeft,MovingRight,MovingUp,Mov ingDown - анимации ходьбы по экрану в разные стороны
Speaking - анимация разговора

Запрограммировать последовательности этих действий и даже реакцию на действия пользователя - все это можно сделать и в Visual Basic, и в Delphi и в любой другой среде программирования, куда можно подключить activex элемент MS Agent. Microsoft Agent как раз был придуман для таких задач.

Но иногда можно и велосипед изобрести, заново сделав подобный софт с нуля, не пользуясь готовым. Но 3d на экране не бывает. Всегда бывает картинка (результат render-инга, т.е. отрисовки модели). Другое дело, можно рендеринг сделать заранее если все кадры всех анимаций известные - и это будет точно как в MS Agente, туда закладываются сразу отрендеренные ранее BMP кадры. А можно сделать рендеринг в процессе отрисовки, в процессе работы программы. Чтобы накладывать анимации друг на друга. Т.е. стоит персонаж чешется, а ты его мышкой кликнул - и он назад отлетает, и продолжает чесаться в полете. Две анимации - чесания и полета от удара наложились друг на друга. Это будет выглядеть поживее, чем статичные анимации MS Agent-а, но и сделать это сложнее. Для работы с 3D написана уже куча модулей. Копать стоит в сторону технологий DirectX, OpenGL и т.д. А использовать их можно в любом языке программирования, хоть в Visual Basic, хоть в Delphi, хоть в C#.

Главное чтоб энтузиазма хватило =) А то можно запнуться на половине пути. Мне кажется, использование готового движка MS Agent и своего персонажа позволит оценить сложность отрисовки даже простых анимаций для него и сконцентрироваться именно на них, а не на разработке движка. Для первого раза это как раз хватит. А вот потом можно и свой движок попробовать сделать (ключевое слово "попробовать", не факт, что доделать до конца).

А если сразу схватиться за отрисовку своей 3D модели (особенно так с нуля, не имея опыта), то скорее всего через месяц захочется плеваться от всей этой работы с 3D, с 3D форматами файлов, с наборами вершин, трансформациями, текстурами. А потом будет вообще страх продолжать проект, запускать редактор кода, т.к. будешь думать "опять купаться в этом, не, лучше пойду поиграю")
blackstrip вне форума Ответить с цитированием
Старый 06.01.2014, 01:54   #19
le@pold
Пользователь
 
Регистрация: 03.01.2014
Сообщений: 14
Хорошо

очень толково и грамотно расписано, жаль больше репутацию поднять пока не могу.
'внимание детский лепет не имеющий никакого отношения к программированию'

Единственное что меня смущает в программе MAC (ты поймешь я думаю), это её "урезанность". Т.е., да круто можно прорисовать что персонаж делает при определенных действиях - ты говоришь - он слушает, ты кликаешь не него он реагирует. Нет именно того, что я хочу, возможности сделать подобие AI, чтобы персонаж сам решал что и когда ему делать. С помощью меню чтобы он выполнял определенные действия (до этого еще конечно далеко, но все же). Т.е. пока ты его не трогаешь он живет своей жизнью - ходит по экрану, чешется и т.п., пока он тебе не понадобится. А когда ты его нажимаешь (кстати, то что его можно переносить куда захочется тоже не тот вариант), он запускает меню в котором ты выбираешь что ты от него хочешь.

Не пугай меня сложностями, я могу годы убить лишь бы добиться намеченной цели, потому что эта программа уже как идея фикс.
Опыт работы с 3d графикой у меня тоже есть, это в программировании я пока ноль, так я занимаюсь мувиками, поэтому кое-какие представления имею =)

p.s. кстати, возникла трудность с запуском программы на другом компьютере. Вроде файлы, которые подключаются к программе все есть, лежат в нужном месте, а программа ни в какую не хочет запускаться.
le@pold вне форума Ответить с цитированием
Старый 06.01.2014, 14:12   #20
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Если на том компьютере стоит старый windows (xp и старее) - то туда надо один раз поставить пакет библиотек от Visual Basic 6.0, потом все программы от VB6.0 будут работать нормально.

Этот пакет включает в себя несколько библиотек, в т.ч. библиотеку msvbvm60.dll (microsoft visual basic virtual machine 6.0), если ее на компьютере нет - то ни одна программа от vb6.0 не запустится.

У тебя она уже была (если у тебя win7, win8, или старый windows, но ты на него ставил раньше какую либо программу, написанную в vb6), либо она точно появилась когда ты установил себе visual basic 6.0.

А вот для других обладателей старых компов программу надо отдавать лучше с этим пакетом библиотек. Я не помню как он точно называется, но должно быть что-то типа "vb6 redistributable", это помоему один самораспаковывающийся архив vb6redis.exe.

Или можно делать в vb6.0 программу установки для твоей написанной программы (там есть спецвозможность для создания программы установки). Тогда на выходе получится setup.exe и набор файлов. Пользователь запустит setup.exe, а уже setup.exe поставит и msvbvm60.dll, и твою программу.

Цитата:
Единственное что меня смущает в программе MAC (ты поймешь я думаю), это её "урезанность". Т.е., да круто можно прорисовать что персонаж делает при определенных действиях - ты говоришь - он слушает, ты кликаешь не него он реагирует. Нет именно того, что я хочу, возможности сделать подобие AI, чтобы персонаж сам решал что и когда ему делать. С помощью меню чтобы он выполнял определенные действия (до этого еще конечно далеко, но все же). Т.е. пока ты его не трогаешь он живет своей жизнью - ходит по экрану, чешется и т.п., пока он тебе не понадобится. А когда ты его нажимаешь (кстати, то что его можно переносить куда захочется тоже не тот вариант), он запускает меню в котором ты выбираешь что ты от него хочешь.
По идее все это можно сделать. Просто в states не добавляй никаких действий (чтоб эта автоматика не работала и чтоб твой персонаж стоял на месте и ничего не делал когда запустится). А потом уже в VB руководи им, вызывай определенные анимации по имени вот так (во всплывающей подсказке пишется, что вводи имя анимации как строку, по англ. string):



И вызов Play("myanim1") заставит персонажа показать именно анимацию "myanim1". Добавь в персонажа 10 своих анимаций и вызывай их из VB когда потребуется.

В VB (как и в других языках) полно возможностей, таймеров, например. Можешь сам раз в минуту вызывать какую либо анимацию (подобно действию States, но сам). Можешь сделать меню и в нем набор команд. И по вызову каждой из команд через Play вызывать анимацию или даже несколько. И это все сделать очень просто - твоя программа в VB, на таймерах, на реакциях на внешние действия и пр. - она и будет AI твоего персонажа.

Последний раз редактировалось blackstrip; 06.01.2014 в 14:17.
blackstrip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен специалист по программированию AVRок Intern Фриланс 3 05.02.2013 01:04
Нужен совет по программированию Ден81 Microsoft Office Excel 1 31.03.2012 09:02
Нужен совет... Finadel Общие вопросы C/C++ 4 06.05.2011 16:57
Нужен совет, просто совет kardinal94 Общие вопросы Delphi 7 16.12.2010 22:16