Sign in to follow this  

Coding a shortcut?

This topic is 4839 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey guys im trying to mess around with diablo II and I want to make a .exe that will open DiabloII.exe can anybody help me out (ps this isnt for *hacking* i am just trying to learn C++ in as many ways as possible....this is actually for a lazy mans needs i want to be able to type something such as !log in game and have the program log everything I type in the game in a .txt file until i type like !stop; its so I can avoid alt+tabbing when i take down peoples emails and such. thanks!)

Share this post


Link to post
Share on other sites
Quote:
Original post by Oluseyi
Look up the following families of functions:
CreateProcess[Ex]
spawn
exec


I recommend using the _exec-family, because the parameters actually WORK. I've had trouble using more than 1 parameter with the other functions.

Clicky!

Share this post


Link to post
Share on other sites
Or if you want to stay within the Standard you could try std::system(). It doesn't give you that much control but might be sufficient if you don't have complex needs.

- Pete

Share this post


Link to post
Share on other sites
// crt_args.c
/* Illustrates the following variables used for accessing
* command-line arguments and environment variables:
* argc argv envp
* This program will be executed by crt_exec which follows.
*/


#include <stdio.h>

int main( int argc, /* Number of strings in array argv */
char *argv[], /* Array of command-line argument strings */
char **envp ) /* Array of environment variable strings */
{
int count;

/* Display each command-line argument. */
printf( "\nCommand-line arguments:\n" );
for( count = 0; count < argc; count++ )
printf( " argv[%d] %s\n", count, argv[count] );

/* Display each environment variable. */
printf( "\nEnvironment variables:\n" );
while( *envp != NULL )
printf( " %s\n", *(envp++) );

return;
}



.. is from that website. But it got scrambled, so I copied it and pasted it here. It's cool here.

[VERY LATE edit] Oh now I see it's wrong code.

[Edited by - Pipo DeClown on September 16, 2004 12:18:24 PM]

Share this post


Link to post
Share on other sites
it might help you all to know I only know C++ not c....and this is written in c (does it matter?) it runs but I dont understand what its opening and where its doing it in the code :/

Share this post


Link to post
Share on other sites
// Very basic _execv - example
#include <process.h>


int main()
{
char *args[4];

args[0] = "d2.exe"; // Executable file
args[1] = "windowed"; // Argument 1
args[2] = "1"; // Argument 2
args[3] = NULL; // Always end with NULL

_execv( "d2.exe", args ); // Executable file, arguments list

/*
-Note that the executable file is passed twice (once as cmd and one as argument).
-The arguments list should end with NULL.
-Try different arguments, if this style doesn't work ("windowed","1" => "windowed 1").
*/

}



This _should_ work. I haven't found time to compile it yet.

Share this post


Link to post
Share on other sites

// Very basic _execv - example
#include <process.h>
#include <fstream>


int main()
{
char *args[4];

args[0] = "C:'\'Program Files'\'Diablo II'\'Diablo II.exe"; // Executable file
args[1] = "windowed 1"; // Argument 1
args[2] = "windowed 1"; // Argument 2
args[3] = NULL; // Always end with NULL

_execv( "Diablo II.exe", args ); // Executable file, arguments list

/*
-Note that the executable file is passed twice (once as cmd and one as argument).
-The arguments list should end with NULL.
-Try different arguments, if this style doesn't work ("windowed","1" => "windowed 1").
*/


}



this is what I have now...ive tried using args 2 and 3 as the following:
1: windowed 1/Normal window/Maximized/Minimized
2: 1,Normal window/windowed 1/Maximized/Minimized/windowed/NULL

Ive also tried giving full and partial paths to the Diablo II.exe directory in both spots :-/

none work....help plz? :)

Share this post


Link to post
Share on other sites

#include <process.h>
#include <fstream>


int main()
{
char *args[4];

args[0] = "C:\\Program Files\\Diablo II\\Diablo II.exe";
args[1] = "windowed";
args[2] = "1";
args[3] = NULL;

_execv( "C:\\Program Files\\Diablo II\\Diablo II.exe", args );
}




Changes:
1) \\ is \ in a char array.
2) I put absolute paths.
3) I used the arguments "<abs. path to exe>" and "windowed" and "1".

Share this post


Link to post
Share on other sites

This topic is 4839 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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