|
i'm fairly certain VC6 has a similar interface.
in VC6 we can use the "Build All" option from the UI to build our 5 different targets, but VS.Net's dependency checker handles .LIBs differently, so we have to simulate a Build All with a .BAT file.
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
Makefiles are actually simple once you peel away all of the unnecessary stuff. For example:
myproject.exe : myproject.obj file1.obj file2.obj myproject.res
link.exe /out:myproject.exe myproject.obj file1.obj file2.obj myproject.res
myproject.obj : myproject.cpp
cl.exe /W4 myproject.cpp
file1.obj : file1.cpp
cl.exe /W4 file1.cpp
file2.obj : file2.cpp
cl.exe /W4 file2.cpp
myproject.res : myproject.rc
rc.exe /fo myproject.res myproject.rc says that myproject.exe depends on myproject.obj, file1.obj, file2.obj, and myproject.res; myproject.exe is created by executing link.exe /out:myproject.exe myproject.obj file1.obj file2.obj myproject.res. Also, myproject.obj depends on myproject.cpp; myproject.obj is created by executing cl.exe /W4 myproject.cpp. The files listed on the right side of ':' are what get compiled or linked together to create the file on the left side of ':'.
Any clearer?
There's also the IDE that can be launched without any human intervention. Check out its command-line arguments.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
Ahhhh... much clearer. This is very helpful. Thanks a bunch!
-- modified at 16:52 Wednesday 30th November, 2005
Again, thanks for taking the time to post such a great response. I really appreciate it.
-Ian
|
|
|
|
|
VC6 has the ability to export .mak files that you can use with nmake.exe (project -> Export Makefile). If you add file or projects to your workspace you simply generate a new .mak file. From there it is simply a matter of writing a .bat file for setting up all the proper nmake options.
Note that I hvae never done this for anything more than simply trying it out. Most of my apps compile very quickly, so I usually just wait for them to compile from the IDE.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
That sounds great! I'll look into this right now. Thanks!
-Ian
|
|
|
|
|
You can just build the .dsw file from the command line. Saves the risk of the .mak getting out of step with the main project.
|
|
|
|
|
You don't need extra .mak files, just use a .dsw file from a batch file. We use:
@msdev "components.dsw" /MAKE ALL > BuildComponents.log 2>&1
That's an excerpt from our automated build. Here we have one batch file that
- compiles .mc files
- builds all the projects (the .dsw file above is simply a workspace with all the projects in it)
- parses the build log for errors
- compiles the HTML help
- builds the base InstallShield installations
- builds self-extracting installtions for the web site
- builds the CD-ROM images for CDs
It is a bit of effort automating the whole build process, but believe me, it's well worth it.
|
|
|
|
|
Ian Bowler wrote: I've been tasked with creating an automated build process in a Visual Studio 6.0 environment. This is not something I'm familiar with and I'm hoping some of you may be able to point be to some tools or articles that would help me in this area.
Automated Builds in DevStudio, or the Night Build Scenario [^]
|
|
|
|
|
Hey
I have an app that needs to be able to connect to the internet at anytime, unattended, day or night. What I have done in the past is called InternetAttemptConnect() . But in order for this to work I had to make sure that I allowed my dialup connection to connect automatically. But thanks to some poorly written apps (Firefox, ZoneAlarm) that option is no longer becoming viable as those apps are also able to connect at any time (and they do). So what I did was change the connection call from InternetAttemptConnect() to InternetAutodial(INTERNET_AUTODIAL_FORCE_UNATTENDED,...) which allows me to clear the automatically connect flag in the dialup dialog and still be able to make the internet connection my app has to make, but stop the other apps from doing the same.
But that has lead to another problem. If the dialup dialog is started by one of the other apps and is waiting for user input, InternetAutodial will also hang, waiting for the same user input.
So what I would like to know is if there is an API or other way of telling if the dialup dialog is already present, and if so how can I kill it so that my call to InternetAutodial() will succeed? I could use FindWindow to look for a dialog with the caption "Dial-up Connection" but to me that just doesn't seem to be a very safe or portable way to it.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
PJ Arends wrote: So what I would like to know is if there is an API or other way of telling if the dialup dialog is already present...
Do you know what process owns that dialog?
PJ Arends wrote: I could use FindWindow to look for a dialog with the caption "Dial-up Connection" but to me that just doesn't seem to be a very safe or portable way to it.
Agreed.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
DavidCrow wrote: Do you know what process owns that dialog?
No, If I did I could do a search by processID.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
Does the dialog show up on the Applications tab of Task Manager?
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
DavidCrow wrote: Does the dialog show up on the Applications tab of Task Manager?
No, but according to Spy++ it is a top level window.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
PJ Arends wrote: No...
That's unfortunate. One of my computers uses AT&T Global Network Client and its process is netclient.exe.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
It's the standard windows/IE dialup connection dialog box. It is used by almost every app I have that needs an internet connection. Only MS Outlook 2000 uses a different one that does not interfere with my app.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
PJ Arends wrote: It's the standard windows/IE dialup connection dialog box.
Ahhh, it's been a while since I used that one. It seems like it would belong to the explorer.exe process. Yes? Not that that's any more help, however.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
DavidCrow wrote: It seems like it would belong to the explorer.exe process.
One would think so. But according to spy++ it belongs to the process that started it. That is how I figured out that firefox and zonealarm are popping the dialog up at random points in time.
DavidCrow wrote: Not that that's any more help, however.
No, it's not.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
This might be overkill, but perhaps you could set up a second (non-default) connection that will be used only by this program, and connect through it using InternetDial() ?
You must be careful in the forest
Broken glass and rusty nails
If you're to bring back something for us
I have bullets for sale...
|
|
|
|
|
That may just work!
Now all I have to do is figure out how to programatically set up a second connection. It would have to be either through my app or have a seperate app that does this via my app's installer.
I am not a network/dialup person so any hints as to APIs to use would be helpful.
Thanks Josh for the pointer in the hopefully right direction.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
PJ Arends wrote: I am not a network/dialup person so any hints as to APIs to use would be helpful.
I'm not really familiar with any of this either... just glancing over the Remote Access APIs is a bit intimidating. Might still be worth a look though, especially if you can dig up some sample code.
|
|
|
|
|
PJ Arends wrote: Now all I have to do is figure out how to programatically set up a second connection...I am not a network/dialup person so any hints as to APIs to use would be helpful.
Use:
RASENTRY re = {0};
re.dwSize = sizeof(re);
lstrcpy(re.szAreaCode, ???);
lstrcpy(re.szLocalPhoneNumber, ???);
RasSetEntryProperties(NULL, "Second Connection", &re, sizeof(re), NULL, 0); You might then have to call:
RASDIALPARAMS rdp = {0};
rdp.dwSize = sizeof(rdp);
lstrcpy(rdp.szUserName, "PJ");
lstrcpy(rdp.szPassword, "pwd");
lstrcpy(rdp.szEntryName, "Second Connection");
RasSetEntryDialParams(NULL, &rdp, FALSE);
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
Thanks David, I will look into these functions.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
I am writing a program that does installations similar to InstallShield or MindVision's Installer VISE. I know that a good installer should have an option to allow the user to select an install directory but I was wondering if there was any alternative to SHBrowseForFolder() that is more flexible to browse for folders without writing a total custom dialog.
Pplshero54 thanks you for your assistance
|
|
|
|
|
pplshero54 wrote: ...I was wondering if there was any alternative to SHBrowseForFolder() that is more flexible to browse for folders...
What is it (not) doing?
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
Sorry, i meant that is there a way to specify a starting folder, create folders, and/or limit the user to select locations on a hard drive by using SHBrowseForFolder().
Pplshero54 thanks you for your assistance
|
|
|
|