2009-06-11 6 views
4

У меня есть программа, написанная на C++, которая выполняет некоторую компьютерную диагностику. Перед выходом из программы мне нужно запустить Internet Explorer и перейти к определенному URL-адресу. Как это сделать с C++? Спасибо.Запуск IE из C++-программы

ответ

8

Здесь вы ... Я предполагаю, что вы говорите MSVC++ здесь ...

// I do not recommend this... but will work for you 
system("\"%ProgramFiles%\\Internet Explorer\\iexplore.exe\""); 


// I would use this instead... give users what they want 
#include <windows.h> 

void main() 
{ 
    ShellExecute(NULL, "open", "http://stackoverflow.com/questions/982266/launch-ie-from-a-c-program", NULL, NULL, SW_SHOWNORMAL); 
} 
+1

это запустит браузер по умолчанию, и это может быть IE? –

+0

Спасибо, но запускает браузер по умолчанию, который может быть не IE. – Jon

+0

Вы используете какой-то пользовательский плагин или что-то еще? Я бы!% $% $, Если программа открыла для меня что-то другое, кроме Firefox. У пользователей есть выбор в эти дни;) – MichaelICE

2

Используя только стандартный C++, если Iexplore находится на пути, то

#include <stdlib.h> 

... 
string foo ("iexplore.exe http://example.com"); 
system(foo.c_str()); 

Если это не на пути, вам нужно как-то проработать путь и передать все это системному вызову.

string foo ("path\\to\\iexplore.exe http://example.com"); 
system(foo.c_str()); 
+0

Смотрите мое сообщение выше ... вы должны либо использовать genenv, либо% ProgramFiles% – MichaelICE

+0

+1 Этот ответ лучше моего. Ожидайте, что iexplore.exe находится на пути (когда это не будет?) И вызовет в общем случае с системой() –

+0

досадно, iexplore не находится на моем PATH на XP. :-( – Glen

2

Я с Гленом и Джона, кроме того что я предпочел бы использовать вместо CreateProcess. Таким образом, у вас есть дескриптор процесса, с которым вы можете что-то сделать. Примерами могут быть Kill IE, когда вы закончите с ним, или попросите поток наблюдать за тем, как IE заканчивается (WaitForSingleObject с дескриптором процесса), чтобы он мог сделать что-то вроде перезагрузки или отключить вашу программу.

3

Если вам действительно нужно запустить Internet Explorer, вы также должны изучить использование CoCreateInstance (CLSID_InternetExplorer, ...), а затем выполнить навигацию. в зависимости от того, что еще вы хотите сделать, это может быть лучшим вариантом.

2

Вам действительно нужно запустить IE или только некоторый контент в браузере? Функция ShellExecute запустит любой браузер, настроенный на значение по умолчанию. Назовем это так:

ShellExecute(NULL, "open", szURL, NULL, NULL, SW_SHOW); 
+0

Не используйте окно рабочего стола в качестве родительского Если вы не хотите иметь родителя, передайте 'NULL'. Я обновил код здесь, если вы используете его в любой из ваших собственных программ, вы должны его исправить. –

2
include <windows.h> 

int main() 
{ 
    ShellExecute(0, "open", 
        "C:\\progra~1\\intern~1\\iexplore.exe", 
        "http://www.foo.com", 
        "", 
        SW_MAXIMIZE); 
    return 0; 
} 
Смежные вопросы