2013-12-15 1 views
1

Я использую javascript внутри своего плагина для Indesign CS6.Получить возвращенный текст из ScriptManager (javascript) - плагин INDESIGN SDK

Он отлично работает.

Но мне нужно вернуть значение из моего кода javascript внутри моего кода на C++.

Я использую этот сайт в качестве справки:

https://blogs.adobe.com/indesignsdk/running-a-script-from-an-indesign- плагин/

мне нужно что-то вроде этого:

scriptRunner-> RunScript ("функция xpto() {возвращение«Hello World ';}; xpto() ", params);

// поддельной метод

Const символ * string_return = scriptRunner-> getReturnCode();

Есть ли что-то подобное в scriptManager?

ps: это не сервер indesign. Я ставлю этот тег, потому что этот сайт не позволяет мне создать новый тег ...

С наилучшими пожеланиями,

ответ

0

Используйте RunScriptParams :: QueryScriptRequestData().

Из SDK документов:

Опросить IScriptRequestData, который используется для передачи аргументов и возвращать результат.

+0

Я пытаюсь найти QueryScriptRequestData в google и на моих документах из SDK indesign CS6 и не могу найти его ... – ricardo

0

Ключом является получение объекта iScript из объекта «RunScriptParams» после запуска сценария. Тогда это прямо. Вот пример кода:

RunScriptParams params(scriptRunner); 
IScriptRequestData* requestData = params.QueryScriptRequestData(); 
params.SetUndoMode(RunScriptParams::kFastUndoEntireScript); 

if (scriptRunner->RunScript(script,params) != kSuccess) return NULL; 

IScript *iScript = params.QueryTarget(); 
int resultsCount = requestData->GetNumReturnData(iScript); 
PMString resultString; 
if (resultsCount > 0) { 
    ScriptReturnData resultOne = requestData->GetNthReturnData(iScript,0); 
    ScriptData scriptReturnOne = resultOne.GetReturnValue(); 


    scriptReturnOne.GetPMString(resultString); 
} 

Возвращаемое значение в resultString.

+0

Привет, спасибо за ответы. Но это не работает для меня. Я изменяю этот 'if (scriptRunner-> RunScript (script, params)! = KSuccess) возвращает NULL;' this this if if (scriptRunner-> RunScript ("function test() {return 56;} test();", params)! = kSuccess) return; 'и поместить' CAlert :: InformationAlert (resultString); 'в и. Но получил пустое всплывающее окно. – ricardo

+0

следуйте коду, который я использую: [http://ideone.com/Rjy0il](http://ideone.com/Rjy0il) – ricardo

Смежные вопросы