How can I capture the program's arguments for a HP printer manager software?

  • Thread starter kandelabr
  • Start date
  • Tags
    Capture
In summary, the program finds an a.exe program that it thinks should send something to the printer, but it can't run by itself. The program suggests renaming the a.exe to aold.exe in order to try and fix the issue.
  • #1
kandelabr
113
0
Hi,

I have a program (it's HP printer manager software) that calls another program to send something to the printer. I found that program, but it can't run alone -- it says "device was not specified".

I am positive there is just some kind of command-line argument missing, but there exists no documentation, so I wonder if there is a way to figure out how printer name is passed to that program. Of course, no source code exists.

Also, in Windows 7 I could create a shortcut to that program (button, actually), but it points to a control panel item (I couldn't make this shortcut in Win XP), and opening this .lnk only throws out a pile of junk (see below).

Code:
LŔF1phî&
*×D“qľ°dɆƒ„!Ţ9qXf©¨}:$DŤ$á€i\zGA™gE3á1SPS˘pˆ‚`¬GŠ«§9ŃŁĂĹYProvider\Microsoft.Base.DeviceDisplayObjects//DDO:{1C852A4D-B800-1F08-ABCD-2C768AB16674}u1SPS0ń·ďGĄń`Śžë¬Y
$HP Officejet 6500 E710n-z (Network)z1SPSł;jeŔěýC„wJŕ@J–Í HPE HP Officejet 6500 E710n-zU1SPSŔÔŤĐž:.F‚{ckvą9
Printers and Faxesä1SPSČOĂxJĘJž¤RMR™nW]ZPrintFax.PrinterImaging.ScannerM˙˙8I9›c:\users\nejc\appdata\local\microsoft\device metadata\dmrccache\en-us\980b8cac-9db5-4165-9da0-1c9e24cd76c7\DeviceInformation\HP Officejet 6500 E710n-z.ico91SPSŇ~ŚŠ?'Hł«®ž®ülHM*…¸«Í,vŠ±ftí1SPS¦jc(=•ŇµÖŔOŮĐŃ_Provider

Any ideas?

Thanks.
 
Technology news on Phys.org
  • #2
You could debug it, but that may violate some agreements you made with HP by installing the software (or setting up your computer, if it came preinstalled).

To debug it, look for a call to some WinAPI function that starts a process. It will pass a pointer to the function. Find that string; it will contain the arguments.

EDIT: Look for a call to this function: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx.

You can look for a call in Olly Debug 2 by right clicking the code window and going to Go to->Expression and typing "CreateProcess."
 
Last edited:
  • #3
kandelabr said:
Hi,

I have a program (it's HP printer manager software) that calls another program to send something to the printer. I found that program, but it can't run alone -- it says "device was not specified".

I am positive there is just some kind of command-line argument missing, but there exists no documentation, so I wonder if there is a way to figure out how printer name is passed to that program. Of course, no source code exists.

Also, in Windows 7 I could create a shortcut to that program (button, actually), but it points to a control panel item (I couldn't make this shortcut in Win XP), and opening this .lnk only throws out a pile of junk (see below).

Any ideas?

Thanks.

Try this.

if the program's name is a a.exe, then rename it as aold.exe.

Write a new program a.exe does the following things
1) Prints out the arguments passed to it in a file
2) Call the original program with the same arguments

Open the file in a text editor & you will see the arguments.
 
  • #4
phiby said:
Try this.

if the program's name is a a.exe, then rename it as aold.exe.

Write a new program a.exe does the following things
1) Prints out the arguments passed to it in a file
2) Call the original program with the same arguments

Open the file in a text editor & you will see the arguments.

Haha! I like that. I should have thought of that.
 
  • #5
The IDEA!

Thanks men, you just made my day.

Thanks to Tyler too, but I'm not that into computing, yesterday I nearly got killed by VC++ :)

A computer shall never win against me (or PF)! .
 
  • #6
kandelabr said:
The IDEA!

Thanks men, you just made my day.

Thanks to Tyler too, but I'm not that into computing, yesterday I nearly got killed by VC++ :)

A computer shall never win against me (or PF)! .


If you want the code for the program I suggested - here

Code:
#include <iostream>
#include <fstream>

using std::ofstream;
int main(int argc, char **argv)
{
        ofstream of("c:/tmp/tst"); // Change this to whatever path you want the
                                            // file to be written to
        while(argc--)
                of<<*argv++<<' ';

        of<<'\n';
}
 
  • #7
Yeah, I was able to do that by myself.
Thanks anyway.
 

What is a capture program's argument?

A capture program's argument is a piece of information or data that is passed to the program when it is executed. It helps the program to determine what actions to perform and how to process the given inputs.

How do I capture program's arguments?

To capture program's arguments, you can use the command line interface or terminal to pass the arguments while executing the program. You can also use an integrated development environment (IDE) to specify the arguments in the program's run configuration settings.

What is the purpose of using arguments in a program?

Using arguments in a program allows for more flexibility and customization. It allows the user to provide different inputs to the program without changing the source code. This makes the program more versatile and efficient.

Can I pass multiple arguments to a program?

Yes, you can pass multiple arguments to a program by separating them with a space. The program can then access each argument individually and perform different actions based on the given inputs.

What happens if I don't specify any arguments in a program?

If no arguments are specified in a program, it will either use a default set of inputs or prompt the user to provide the necessary inputs. It ultimately depends on how the program is designed to handle missing arguments.

Back
Top