Sign in to follow this  

When opening a file using default program in windows..

Recommended Posts

lride    674

I made a small video player and I want my video player to be the default program for opening video files.

Does the video file's name become the argument(char** argv) to my program? (Windows)

Share this post

Link to post
Share on other sites
Digivance    1724

You would have to modify the registry to have it open with your program.  You can do this yourself on your own machine you will need to create an installer program of some sort to do it on other people's machines (and in most cases may need to run the installer as admin to write to the correct registry locations.).  When you create the registry entries you can set what arguments it will send to your program, I think the default setup if you just right click, open with your program would be the same as calling "C:\full\path\to\myprogram.exe C;\full\path\to\video.mpg" or whatever the case may be from the console (dos) window.

Share this post

Link to post
Share on other sites
Khatharr    8812
Does the video file's name become the argument(char** argv) to my program? (Windows)
If you compiled as a console program then your main function's prototype should be something like:

int main(int argc, char** argv);

The argc is the ARGument Count. The argv is the ARGument Values.

argv[0] is the name of your executable (the program's own file name).
argv[1] is the first command-line argument
argv[2] is the second command-line argument

etc. The command-line arguments are separated by spaces, except when enclosed by double quotes:

myprog -play my test video.mp4

argc[0] -> myprog
argc[1] -> -play
argc[2] -> my
argc[3] -> test
argc[4] -> video.mp4

myprog -play "my test video.mp4"

argc[0] -> myprog
argc[1] -> -play
argc[2] -> my test video.mp4

If you compiled the program as a windows program then your entry point prototype looks something like:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);

hInstance is the instance handle for your program, which is required by some functions. This is incidentally the base address of the module in memory, but that's trivia. You can also get this value by calling GetModuleHandle(0).

hPrevInstance is typically not used and is shrouded in ancient secrets kept by a select order of monks who never leave the basement of the Redmond campus.

lpCmdLine is a pointer to your command line, excluding the program itself.

nCmdShow is just something to pass to ShowWindow() if you want. It has the indicated user preference for how the window should be shown at program start (start minimized, etc).

lpCmdLine is something like this:

Typed at command line:

myprog -play my test video.mp4

Contents of lpCmdLine:

-play my test video.mp4

In other words, it's everything that came after the program name except for the first space.

Share this post

Link to post
Share on other sites
ArunHaridas    155

Create a batch file and write code like this


@echo off

assoc .mpeg=YourVPlayer

assoc .mp4=YourVPlayer

assoc .mp3=YourVPlayer

assoc .wav=YourVPlayer

[Write all the extensions that your software supports

type YourVPlayer=[Your software exe file path]


save as anyname.bat

You can use in you vedio player setup file or SFX file and run it automatically after installation


I think usefull.

Arun Haridas

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this