Solved

__argv[1]

Posted on 2003-11-14
10
856 Views
Last Modified: 2013-11-20
Hi All:

I am using vc++.NET and have "12345" as a command line argument. I am trying to access this argument using my program. InitInstance function is shown below.

Please

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable
      
   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
   CW_USEDEFAULT, CW_USEDEFAULT, 310, 250, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   AfxMessageBox(__argv[1],MB_OK);

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

I get __argv[0] correctly but do not get __argv[1]. Kindly suggest something here...

Thanks,
Chirag
0
Comment
Question by:cmandan
  • 5
  • 4
10 Comments
 
LVL 1

Author Comment

by:cmandan
ID: 9752094
Hello Experts:

I am able to display __argv[0] with the code below, but I get blank when I try to display __argv[1].......I am using vc++.NET

This is the code again,

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable
      
   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
   CW_USEDEFAULT, CW_USEDEFAULT, 310, 250, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   AfxMessageBox(__argv[0],MB_OK);
   ::MessageBox(0,__argv[1],"command1",MB_OK);

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

so I get argv[0] OK, but I get a blank dialog box for argv[1]....waiting for your kind suggestions..

Thanks,
Chirag
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 9753903
I have tried your code as the first line of an app.  I get the path of the exe as the first and then 1234 as the second message box.

Does yours still behave oddly with

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
  AfxMessageBox(__argv[0],MB_OK);
   ::MessageBox(0,__argv[1],"command1",MB_OK);

   HWND hWnd;
....
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 9753911
Another possibility is to check starting your app from a shortcut to make certain you are passing 1234 as a parameter.
0
 
LVL 1

Author Comment

by:cmandan
ID: 9754886
Well, when i type the same code in vc++ 6.0, I get the value of __argv[1]. But I don't get it in vc++.NET.....pls guide. I know the code is right, but it could be the settings....

Thanks,
Chirag
0
 
LVL 1

Author Comment

by:cmandan
ID: 9758013
AfxMessageBox(__argv[0]);
AfxMessageBox(__argv[1]);

Output:
1st dialog box
"C:\test.exe"
2nd dialog box
blank

I checked Properties>debugging>Command Line arguments and it is 123.

I would really appreciate your suggestions here ASAP..

Thanks,
Chirag
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 44

Expert Comment

by:AndyAinscow
ID: 9758260
Is this a new improved feature of VC.Net to improve productivity?
Sorry, no further ideas.  The code looks OK and functions in an earlier VC++ version.
0
 
LVL 16

Expert Comment

by:_nn_
ID: 9759132
Wondering if it wouldn't be a ansi/unicode problem. What happens if you replace __argv by __targv or __wargv ?
0
 
LVL 1

Author Comment

by:cmandan
ID: 9760197
I found out this problem which is very strange....when I try to execute the code from the .exe file after double clicking on it, it  gives me a blank argv[1] value, but when I click on start to debug the file, it gives me the __argv[1] value correctly. In the earlier version of vc++ 6.0, this was not the case, but I don't know if there are some special settings required in this new version.

--chirag
0
 
LVL 44

Accepted Solution

by:
AndyAinscow earned 50 total points
ID: 9761915
when I try to execute the code from the .exe file after double clicking on it

If you double click on it it doesn't have any startup command line hence the behaviour qou experience.
You need a shortcut supplying the parameters.
0
 
LVL 1

Author Comment

by:cmandan
ID: 9762019
Great....got the explanation!! Thanks Andy, you get all the points...here you go!!

-Chirag
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: Displaying information on the statusbar.   Continuing from the third article about sudoku.   Open the project in visual studio. Status bar – let’s display the timestamp there.  We need to get the timestamp from the document s…
Introduction: Dialogs (1) modal - maintaining the database. Continuing from the ninth article about sudoku.   You might have heard of modal and modeless dialogs.  Here with this Sudoku application will we use one of each type: a modal dialog …
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now