|
Hi Master,
I need to get the environment Temporary Path (TMP/TEMP). I look at the API function and it gaves me two options:
1. using GetEnvironmentVariable(...)
2. using GetTempPath(...)
However, both of this function will return the TMP/TEMP value of User Variables instead of System Variables.
How do I retrieve both User Variables and System Variables TEMP value?
Thanks for any help in advance...
Cheers
PS. To get the environment variables:
- Right Click on "My Computer"
- Click on "Advanced" Tab
- Click on "Environment Variable"
- You will see that TMP/TEMP belong to two sections (User Variables and System Variables).
|
|
|
|
|
RYU^^ wrote:
However, both of this function will return the TMP/TEMP value of User Variables instead of System Variables.
If you have similar environment variable defined as system and user then the API would first get User variable.
In order to access system variables remove any duplicate entries existing in your user section.
<bold>- Nilesh
<italics>"Reading made Don Quixote a gentleman. Believing what he read made him mad" -George Bernard Shaw
|
|
|
|
|
Hi Nilesh,
Thanks for the prompt reply
The TEMP/TMP System Variables is required when the application is running from the WEB. (for example, ASP code calling Server.CreateObject(...) and the object will use StgCreateDocFile(...) that will put the temporary file into System Variables)
The TEMP/TMP User Variables is required when the application running under local machine that does NOT have administrator privilege. Therefore, both of them are required.
Thanks
Please note:
System Variables normally write the file into C:\Windows\Temp or C:\WinNT\Temp. Without administrator privilege, the application will fails when attempt to create the temporary file
|
|
|
|
|
In that case I doubt if you would be able to do much about it.
<bold>- Nilesh
<italics>"Reading made Don Quixote a gentleman. Believing what he read made him mad" -George Bernard Shaw
|
|
|
|
|
Both come from the registry. GetEnvironmentVariable() reads from the process' environment block, which has already queried the registry. Check out HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment and HKEY_CURRENT_USER\Environment.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
system A am on a LAN. is it possible for system A to know the MAC address of all systems on the LAN. if so, how?
|
|
|
|
|
Check this[^]
<bold>- Nilesh
<italics>"Reading made Don Quixote a gentleman. Believing what he read made him mad" -George Bernard Shaw
|
|
|
|
|
Depends on what you have - hardcore solution is to ping every machine on the LAN (for that you need to have IP addresses of the computers on the LAN) and if you'll get packet on the ethernet level you can get the MAC address from here (if there's no router or something between you and the machine, on LAN I assume there's nothing)
But if you have some access to the computers (uid and password) I would try to use the WMI and the Win32_NetworkAdapterConfiguration ManagementClass.
|
|
|
|
|
Dear All,
I have a problem with DrawText window sdk ApI.
I calcuale rectangle by DT_CalcRect flag and draw text, but text doesnot align to top of rectangle.
I have subtracted extenalleading fatctor from the top of rectangle, still it doesnot align to top of retangle.
There is small gap betwenn text and top of rectangle.
CString stHeaderCenter = _T("ABC");
CRectr rtDraw(0, 0, 0, 0);
// Calculate required rectangle area
DrawText(hdc, stHeaderCenter, stHeaderCenter.GetLength(), &rtDraw,
DT_CALCRECT | DT_EDITCONTROL );
int nRtWidth = rtDraw.Width();
int nRtHeight = rtDraw.Height();
TEXTMETRIC tm;
ZeroMemory(&tm, sizeof(tm));
GetTextMetrics(hdc, &tm);
LONG lextLeading = tm.tmExternalLeading ;
// Subtract extenal leading factor
rtDraw.top = rtDraw.top - lextLeading ; // show the text on top in bounding rectangle
rtDraw.right = rtDraw.left + nRtWidth;
rtDraw.bottom = rtDraw.top + nRtHeight;
// Main header center
DrawText(hdc, stHeaderCenter, stHeaderCenter.GetLength(), &rtDraw,
DT_EDITCONTROL | DT_EXPANDTABS | DT_TOP);
/**********************************************************/
Can anyone help me in solving the issue or any other approach that i should try to solve this probelem
Sudhir Mangla
http://Programmerworld.net
(Free books , articles , Source Code and Programming Tools and Utilities)
|
|
|
|
|
I have not tested this but I suspect you need DT_TOP as well as DT_CALCRECT in your first call to DrawText
|
|
|
|
|
I have a pure white background imagelist which is used for the TabCtrl. But what the problem is when I add this icon to the TabCtrl, it seems it didn't mask the white back ground out. The following is the code
imgList.Create(16, 16, ILC_COLORDDB | ILC_MASK, 6, 1);
bitmap.LoadBitmap(IDB_ICON);
imgList.Add(&bitmap, RGB(255, 255, 255)); // mask out the white bkgrd
tabctrl.SetImageList(&imgList);
tabctrl.InsertItem(0, "", 0);
I've tried
imglist.SetBKColor(CLR_NONE);
the result is still the same!
Can anyone help me fix the problem?
|
|
|
|
|
Hey Guys, I'm looking for a bit of guidance on an intermittant crashing issue I'm having with WindowsXP.
I have an MFC based SDI app that loads a dll, but apart from that its pretty bog standard. It was written using Visual C++ 6.0. Anyway very occassionally on some machines running WindowsXP the app won't even boot up. I'm fairly sure the failure is due to the fact that ProcessShellCommand must be returning false. However I could be jumping to conclusions, it may be a dodgy install shield.
Would any one have any thoughts or guidance on this issue.
Best Regards
Danny Nowlan
|
|
|
|
|
Okay, 'fail to boot up' would imply what? Not even RUN at all?
Of course, if you even suspect your program is starting okay, then add more of your own error handling to the application and maybe write to a text log file only when something is wrong. Then your customers could send this file to you when your app will not 'boot up' on their machines.
It IS entirely likely you are at least getting into WinMain unless a critical statically linked DLL is missing, in which case Windows would normally tell you that a required DLL is missing.
I suspect, as do you, that some part of your framework or app path is failing, but there is no visible external notification. You need to bring that out, either with message boxes or with text file logging. I usually favor the text file logging, as the user does not have to retype or 'interpret' anything. They can usually e-mail you a text file.
|
|
|
|
|
Hey,
is it possible to show an cdialog (created with resource editor and WS_CHILD attribute) modal? I tried to use ModifyStyle but it did not work.
When I tried this, my main application was in front of the "modal" dialog...
I need this, because I have to show the (same) dialog as a child in a CFormView and later as a "modal" dialog. Do I have to create 2 different dialogs (with only different styles) for this task?
|
|
|
|
|
Having created lots of mickey mouse applications using the wizard, as well as trying out examples in the half dozen fat books I have bought, I am nowhere nearer to understanding the what where and how of how to structure an application. I have nice examples of how to output text in a window, how to draw lines, OR how to read in data from the keyboard, but there seems to be Jack Beep around on how to tie any two of these obviously mind-boggling concepts into the same app.
What I want to do is read and process data from a binary file (done, that was easy) and then use some of that data (actually x-y positional data) to write shapes to the window. Any help or ideas much appreciated.
E Dyot
|
|
|
|
|
This sounds like a good job for an SDI application. Read the data into the document. The document then notifies the view that new data needs to be rendered. In in the view, ask the document for the new data and render it accordingly. Look at the MSDN's Scribble tutorial.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
E Dyot wrote:
Look at the MSDN's Scribble tutorial.
Scribble, what a great learning tool. When I started with MFC (had used OWL before) I printed out the entire tutorial, followed it from start to end, and then started adding my own stuff. CP was not around at the time, so I don't think I could have figured out so much about MFC without it.
|
|
|
|
|
"Read the data into the document" - done. Because it's binary, I thought it needed to be read in and processed byte by byte. To do this I wrote a routine :
BOOL CMyDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// lots of my code to convert various doubles, ulongs, ushorts etc into physical numbers and attributes //
// all data processed, ready for display//
//Now we're stuck. //
}
Now, the problem I have is, *how* do I pass the data to - and to *which* routine - in order to paint, say, a box on the screen, using that data? Automatically, i.e. no mouse input, no keyboard input. I don't want to draw using the mouse, and it is not a dead text file that I am reading. The whole concept is an automatic process, in which the user is prompted for a path, and then the application processes a bunch of different files, mostly binary, and then *should* output a simple graphical representation of some mechanical items on the window, based on the data that was processed.
E Dyot
|
|
|
|
|
E Dyot wrote:
Now, the problem I have is, *how* do I pass the data to - and to *which* routine - in order to paint, say, a box on the screen, using that data?
Handle the OnDraw function in your CView based class. From OnDraw, you can call GetDocument() to retrieve a pointer to your document.
CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->GetDataUsedToDrawStuff();
if (pDC->RectVisible(blah))
pDC->SelectObject(brush/font/pen);
pDC->FrameRect(blah);
pDC->TextOut(blah);
etc...
}
Pssst. You see that little light on your monitor? That's actually a government installed spy camera. Smile and wave to big brother!
|
|
|
|
|
For some unknown reason my system has changed language for error messages. When I call CException::GetErrorMessage( buf, maxSize ) I get error messages in German, which might not be too bad if I knew German, but I only speak American English. While I admit this makes me less interesting as a person, it makes my error reporting useless. Historically speaking, this language change is recent, perhaps following the use of someone's submitted article on this site. My question is, how do I change the default error message language back to English?
Anyone... anyone?
Stumped
|
|
|
|
|
NGS 549672 wrote:
My question is, how do I change the default error message language back to English?
Anyone... anyone?
Wouldn't that be in the Regional Options applet in Control Panel?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
No..., that's the first think I checked and it is set at American English, which of course is why the rest of the OS is in English...
|
|
|
|
|
I have a fairly small project (main window with about 6 dialogs) that I have built using VC6. Our marketing dept. has decided that we need to make it a multi-language app. He wants to be able to give a text file to someone and let them translate from the english text to their language and give the file back to us. Our program would then read in the translated text and replace each instance.
It sounds like a real nightmare. Are there better ways to go about this? It's a technical app with references to things such as Ethernet switches, controllers, ... so I don't know if any of the auto-translation products would be able to handle it correctly.
Also - how to people deal with the text field lengths (static boxes, group boxes, buttons, ...) when the translations end up needing more space?
Thanks so much for any help you might be able to provide.
Dave
|
|
|
|
|
2 things :
first technically, doing this is simple, create a resource DLL for each language and load it dynamically when the application starts; you will have to translate each version of the RC file; I don't think there's an easy way to make sure that each dialog layout is ok for each language but to test them.
for example :
...
m_hInstDLL = ::LoadLibrary(_T("English.dll"));
...
AfxSetResourceHandle(m_hInstDLL);
...
second, translation of technical terms should be precise, you should contract that to a professional.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Hello,
Earlier I have plans on releasing such translation system as commercial, but thought that nobody need it at the era of .Net I'm using it in my file comparison software (http://www.grigsoft.com/), you can check results. I can share it with you, to see how easy it can be included in new application. Please contact me personally at support--grigsoft.com
Igor Green
http://www.grigsoft.com/ - files and folders comparison tools
|
|
|
|
|