Как вызвать приложение с параметрами в NPAPI для Mac - PullRequest
0 голосов
/ 01 декабря 2011

Я пытаюсь создать простой NPAPI, который передает URL в Safari.

метод plugin_invoke приведен ниже:

    bool plugin_invoke(NPObject *obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result) {
        // Make sure the method called is "open".
        NPUTF8 *name = npnfuncs->utf8fromidentifier(methodName);
        if(strcmp(name, plugin_method_name_open) == 0) {
            npnfuncs->memfree(name);
            BOOLEAN_TO_NPVARIANT(false, *result);
            // Meke sure the arugment has at least one String parameter.
            if(argCount > 0 && NPVARIANT_IS_STRING(args[0])) {
                // Build CFURL object from the arugment.
                NPString str = NPVARIANT_TO_STRING(args[0]);
                CFURLRef url = CFURLCreateWithBytes(NULL, (const UInt8 *)str.UTF8Characters, str.UTF8Length, kCFStringEncodingUTF8, NULL);
                if(url) {
                    // Open URL with the default application by Launch Service.
                    //OSStatus res = LSOpenCFURLRef(url, NULL);
                    //CFRelease(url);


                    OSStatus resultt = eventNotHandledErr;

                    //FSRef appRef;

                    FSRef appRef = {0};
                    Boolean isDir =true;

                    resultt = FSPathMakeRef((UInt8 *) "/Applications/Safari.app", &appRef,
                                            &isDir);

                    LSApplicationParameters appParams = {0, kLSLaunchDefaults};

                    appParams.application = &appRef;
                    appParams.version = 0;
                    appParams.flags = kLSLaunchDefaults;

                    resultt = LSOpenApplication(&appParams, NULL);

                    BOOLEAN_TO_NPVARIANT(resultt == noErr, *result);



                }
            }
            return true;
        }
        npnfuncs->memfree(name);
        return false;
    }

В настоящее время он просто запускает Safari, но URL не может быть передан.

Как я могу передать пример URL в Safari в NPAPI? Я прочитал, что LSOpenFromURLSpec может работать, но я не смог создать код.

1 Ответ

1 голос
/ 01 декабря 2011

Прочитайте документацию для Launch Services , особенно LSOpenURLsWithRole.

К вашему сведению, ваш вопрос не имеет отношения к NPAPI, это просто запуск приложения Mac из другого процесса. В общем, вы получите больше ответов, если не будете публиковать общие вопросы как вопросы NPAPI, поскольку way больше людей знают ответы на общие вопросы Mac, чем на вопросы, относящиеся к NPAPI.

...