How to open the default web browser in Windows in C?

In Windows, you can use start http://url on the command line to open an URL in the default browser. However, this seems to be specific to the command prompt and is not a real executable, so I don't think you can start it from your C/C++ program.


To open a URL in your default browser you could use shell commands and system() like this:

#include <stdlib.h>

int main(void)
{
  system("open https://example.com");
}

open is the default command to open stuff on MacOS, but what happens when you want to open a URL on Windows, Linux, or another operating system?

Well, you will need to change that open command.

On Linux

xdg-open <link>

On Windows

start <link>

On MacOS

open <link>

But there is good news, you don't need to handle that, I already created a module/package/library and you can install it using CLIB. It is cross-platform, already handle the operating systems stuff, and it is super easy to include it on your project.

Installation

$ clib install abranhe/opener.c

Usage

#include "opener.h"

int main(void)
{
    opener("https://example.com");
    return 0;
}

Since it is written using the shell commands, you are also able to open local directories.

// Open current directory
opener(".");

You have to use ShellExecute().

The C code to do that is as simple as:

ShellExecute(NULL, "open", "http://url", NULL, NULL, SW_SHOWNORMAL);

This was documented by Microsoft Knowledge Base article KB 224816, but unfortunately the article has been retired and there's no archived version of it.

Tags:

Windows

C