Is this possible? Is there a better approach?

Please support our C++ advertiser: Intel Parallel Studio Home
Reply

Join Date: Oct 2004
Posts: 2
Reputation: lvdude is an unknown quantity at this point 
Solved Threads: 0
lvdude lvdude is offline Offline
Newbie Poster

Is this possible? Is there a better approach?

 
0
  #1
Oct 26th, 2004
Hi all,

First off, I'm relatively new to the world of C/C++. I've taken some courses in University years ago and haven't used it much since.

What brings me back is the following dilema I have:

I've built an application using National Instruments LabVIEW (www.ni.com). For those not familiar its a graphical programming language used mostly for customized data acquisition and control applications. A requirement of software built with LabVIEW is that it requires the LabVIEW runtime engine. It comes packed as an installer and it must be installed before the labview created exe can run.

What we'd like to do is put this application on a cd and have it autorun when the user inserts the cd. This works fine if they have the run time engine installed but won't work if its not installed.

So what I was thinking is:
autorun a C created program to detect if the runtime engine is installed (I would have to check for a registry key)
- If it is installed, run my exe
- If not installed, run runtime engine setup,the my exe

Is this hard to do? Anyone tried something like this before? Is this something installshield is designed for? How can I detect if a registry key exists?

Thanks for any help you can provide.

Jay
Reply With Quote Quick reply to this message  
Join Date: Sep 2004
Posts: 185
Reputation: Stack Overflow is an unknown quantity at this point 
Solved Threads: 4
Stack Overflow's Avatar
Stack Overflow Stack Overflow is offline Offline
C Programmer

Re: Is this possible? Is there a better approach?

 
0
  #2
Oct 27th, 2004
Greetings lvdude,

Doing this is not hard. There is a simple approach to this.

Understanding that you are talking about Windows, hence the "Registry", it is not hard to check for a key and its existance.

I just wrote an example of how to query a registry key. It may help gear you in the right direction:
#include <windows.h>
#include <stdio.h>

int checkKey(HKEY tree, const char *folder, char *key) {
	long lRet;
	HKEY hKey;
	char temp[150];
	DWORD dwBufLen;

	// Open location
	lRet = RegOpenKeyEx( tree, folder, 0, KEY_QUERY_VALUE, &hKey );
	if (lRet != ERROR_SUCCESS)
		return 0;

	// Get key
	dwBufLen = sizeof(temp);
	lRet = RegQueryValueEx( hKey, key, NULL, NULL, (BYTE*)&temp, &dwBufLen );
	if (lRet != ERROR_SUCCESS)
		return 0;

	printf("Key value: %s\n", temp);

	// Close key
	lRet = RegCloseKey( hKey );
	if (lRet != ERROR_SUCCESS)
		return 0;

	// Got this far, then key exists
	return 1;
}

int main() {
	printf("Checking for key: HKEY_CURRENT_USER -> Control Panel -> Desktop -> Wallpaper\n");

	if (checkKey(HKEY_CURRENT_USER, "Control Panel\\Desktop", "Wallpaper"))
		printf("Key Exists.\n");
	else
		printf("Key Does Not Exist.\n");

	return 0;
}
Hope this helps.
RegQueryValueEx()
The RegQueryValueEx function retrieves the type and data for a specified value name associated with an open registry key.
LONG RegQueryValueEx(
    HKEY hKey,		// handle of key to query

    LPTSTR lpValueName,	// address of name of value to query

    LPDWORD lpReserved,	// reserved

    LPDWORD lpType,	// address of buffer for value type

    LPBYTE lpData,	// address of data buffer

    LPDWORD lpcbData	// address of data buffer size
);
Or learn more about it here.

There are other functions, though simply doing an MSDN search may pull up further documentation on such functions within the windows header file.

I hope this does help, and if you have any further questions please feel free to ask.


- Stack Overflow
Following the rules will ensure you get a prompt answer to your question. If posting code, please include BB [code][/code] tags. Your question may have been asked before, try the search facility.

IRC
Channel: irc.daniweb.com
Room: #c, #shell
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 2
Reputation: lvdude is an unknown quantity at this point 
Solved Threads: 0
lvdude lvdude is offline Offline
Newbie Poster

Re: Is this possible? Is there a better approach?

 
0
  #3
Oct 27th, 2004
Thanks for the excellent post, I'm sure that will save me allot of time.
I'm in the process of setting up a c++ compiler and re-acquainting myself, then I'll try to get your example working.
One more simple question: How do you run an exe from a C program? I'm thinking theres probably a OPEN or RUN command or such?
BTW, I did a quick search on MSDN to try to find such a function, but didn't get anything helpful. Is there an easy way to look functions up?

Thanks again
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the C++ Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC