创建进程默认浏览器 [英] Create Process default browser

查看:22
本文介绍了创建进程默认浏览器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用 ShellExecute打开"在用户浏览器中打开 URL,但在 Win7 和 Vista 中遇到了一些麻烦,因为该程序作为服务运行.

I'm currently using ShellExecute "open" to open a URL in the user's browser, but running into a bit of trouble in Win7 and Vista because the program runs elevated as a service.

我想获取线程 id,因此 ShellExecute 无法获取线程 id,因此我开始使用CreateProcess"但我没有看到打开默认浏览器的任何帮助,无论是来自 CreateProcess.

I want to get thread id so ShellExecute is not possible to get thread id so i started using "CreateProcess" But i don't see any help on opening default browser whichever is it from CreateProcess.

推荐答案

这是您想要的另一个答案.只要你希望它作为一个新窗口打开.可以为IE、opera等扩展...

Here is another answer as you wanted. As far as you want it open as a new window. You can expand it for IE, opera, and so on...

DWORD size = MAX_PATH;
char buff[MAX_PATH];

int err = AssocQueryStringA(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, ".html", NULL, buff, &size);
STARTUPINFOA si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

CStringA command_line;
CStringA target_url( "http://google.com/" );


if( strcmp( "chrome.exe", PathFindFileNameA(buff)) == 0 )
    command_line.Format("%s --new-window %s", buff, target_url);
else if( strcmp( "firefox.exe", PathFindFileNameA(buff)) == 0 )
    command_line.Format("%s -new-instance %s", buff, target_url);
else 
    command_line.Format("%s %s", buff, target_url);


if (!CreateProcessA(NULL,     // No module name (use command line)
    command_line.GetBuffer(),
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inhberitable
    FALSE,          // Set handle inheritance to FALSE
    0,              // No creation flags
    NULL,           // Use parent's environment block
    NULL,           // Use parent's starting directory 
    &si,            // Pointer to STARTUPINFO structure
    &pi)           // Pointer to PROCESS_INFORMATION structure
)
{
    //... error handling
    return;
}

这篇关于创建进程默认浏览器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆