My program got an option to start it every time you turn on the pc.
The problem is that I got no idea how to do it. :D
I know you can put a .job file in C:\WINDOWS\Tasks, but how would I go on making a .job file?
Any other easier way?
Thanks
Printable View
My program got an option to start it every time you turn on the pc.
The problem is that I got no idea how to do it. :D
I know you can put a .job file in C:\WINDOWS\Tasks, but how would I go on making a .job file?
Any other easier way?
Thanks
There are some registry start-up options that you can do. Check out how programs like Sub7 and the like start up and you'll see what I mean.
The best method is to add a shortcut to the start menu startup folder.
> Check out how programs like Sub7
Next time you feel like mentioning trojans as a way of doing things, forget it :mad:
Alright why I get errors here?
I did exactly as it said.
Pictures:Code:#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
char x;
cout << "A) Add this program to startup";
cout << "B) Exit \n\n";
cin >> x;
if(x == 'a')
{
extern "C" BOOL xAddSelfAsStartupShortcut(LPCTSTR szLinkTitle, LPCTSTR szDescription, LPCTSTR szArguments, int IconResourceID);
xAddSelfAsStartupShortcut(TEXT("My Program"), TEXT("My description"), NULL, -1);
return 0;
}
if(x == 'b')
{
return 0;
}
else
{
cout << "Wrong input! \n\n";
main();
}
return 0;
}
I got the startup code added to my project as a .c file
I got the linker options added to the project
The errors
Whats wrong?
I used anonytmouse's code from his link.
Alright I did something wrong.
I needed this at the top instead:
But Im still getting errors!Code:extern "C" BOOL xAddSelfAsStartupShortcut bla bla bla...
How I fix this?
Picture
(From the .c file)
something like this.
Code:#include <stdio.h>
#include <windows.h>
#define RUN_KEY "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
void addRun(char *valueName, char *valueData);
int main(void)
{
addRun("ProgName", "c:\\myprog.exe");
return 0;
}
void addRun(char *valueName, char *valueData)
{
HKEY key;
if (RegOpenKeyEx(HKEY_CURRENT_USER, RUN_KEY, 0, KEY_WRITE, &key)
!= ERROR_SUCCESS) {
/* Unable to open registry key */
return;
}
if (RegSetValueEx(key, valueName, 0, REG_SZ, valueData, strlen(valueData) + 1)
!= ERROR_SUCCESS) {
/* Unable to set registry value */
RegCloseKey(key);
return;
}
RegCloseKey(key);
}
That adds it to the registry?
Well, how I remove it again then?
And for my program:
"c:\\myprog.exe"
How I know where the ones using my program having it installed there?
Just tell me how to fix the startup folder code instead. :p
That startup code doesn't need fixing. It's in C. C++ is just an overly hyped addition to C, with object oriented programming and some nifty STL things.
For such a simple group of functions, the addition of OOP does nothing for you. This is why using C is as good, if not better than using C++ for these functions. You might want to utilize the string class, but aside from that I see no reason to convert anything in that program to C++.
As for this... I'm not sure what you're asking. Do you want to know if users will be installing it to c:\myprog.exe ? Or do you want to know what the current location of your file will be?Quote:
And for my program:
"c:\\myprog.exe"
How I know where the ones using my program having it installed there?
If you want to know the current location of the file, it'll be a parameter of int main(), called argv[0].
Dev-C++ sometimes insists on compiling .c files as C++. This can be easily fixed. Goto Project->Project Options->Files->Click on the .c file->Make sure the 'Compile file as C++' option is not ticked.Quote:
Originally Posted by XunTric
Thanks!
Compiles and works!
First time I got a really good answer. =P
But how would I remove it from starting when my pc starts up?
There is a function in the linked thread (below). It should be added to the bottom of the .c file.
Code:// In the .cpp file
extern "C" BOOL xDeleteSelfAsStartupShortcut(LPCTSTR szLinkTitle);
Code:// At the bottom of the .c file.
BOOL xDeleteSelfAsStartupShortcut(LPCTSTR szLinkTitle)
{
TCHAR szLinkName[MAX_PATH + MAX_PATH + 10];
if (FAILED(xGetFolderPath(szLinkName, CSIDL_STARTUP)))
{
return FALSE;
}
lstrcat(szLinkName, TEXT("\\"));
lstrcat(szLinkName, szLinkTitle);
lstrcat(szLinkName, TEXT(".lnk"));
return DeleteFile(szLinkName);
}