Вопрос

Я пытаюсь разработать, почему я написал плагин NPAPI, который работает нормально с точки зрения выполнения операций, срабатываемых через вызовы Javancip, не может использовать CreateProcess () или Shellexecute (), чтобы запустить приложение с пути, указанного через вызов JavaScript.

Я могу по-видимому, использовать любой из этих методов, и они возвращают успех, то есть без кода ошибок. Но приложение просто не запускается. Я попытался изменить параметры, используемые при вызове их, создать новую группу процессов и т. Д., Но, похоже, без эффекта.

Я знаю, что это может показаться немного опасно, но для самой специфики мы хотим использовать его, потому что это не должно быть проблемой.

Используя Windows XP Pro SP3, Firefox 3.5 и следующий код:

ZeroMemory( &si, sizeof(si) ); 
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) ); 
if( CreateProcess( NULL, wFileName, NULL, NULL, FALSE, 
                  CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP, 
                  NULL, NULL, &si, &pi ) )
{ 
    bSuccess = true; // Close process and thread handles.      
    WaitForSingleObject(pi.hProcess,INFINITE); 
    CloseHandle( pi.hProcess ); 
    CloseHandle( pi.hThread ); 
}
Это было полезно?

Решение

Без какого-либо кода (фрагмент) для жевания на нем действительно трудно дать ценные подсказки:

Я не понимаю, почему это не должно работать на XP. Вы уверены, что CreateProcess () / Shellexecute () звонки добиваются успеха?

Вещи, чтобы попробовать:

  • Вызов Shellexecute () также преуспевает, если вы пройдете неверный путь?

  • Что произойдет, если вы используете жесткий кодированный путь (например, путь к Notepad.exe, путь без пробелов и т. Д.)?

  • Проверьте с Processmonitor (бывший Филем) Если исполняемый файл приложения вы пытаетесь запустить.

Может быть, исполняемый файл не запускается, потому что зависимость DLL не найден.
Имейте в виду, что каталог рабочего / текущего является каталог исполняемого браузера при запуске приложения из плагина.
Поэтому DLL, которые расположены в папке приложения, могут быть не найдены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top