|
I think, Michael wants to create constant environment variable, whereas ::SetEnvironmentVariable works only for the current process.
|
|
|
|
|
if you say so...
"To announce that there must be no criticism of the president, or that we are to stand by the president right or wrong, is not only unpatriotic and servile, but is morally treasonable to the American public."
-- Theodore Roosevelt
|
|
|
|
|
MSDN says
HOWTO: Propagating Environment Variables to the System
ID: Q104011
The information in this article applies to:
SUMMARY
You can modify user environment variables by editing the following Registry key:
HKEY_CURRENT_USER \
Environment
You can modify system environment variables by editing the following Registry key:
HKEY_LOCAL_MACHINE \
SYSTEM \
CurrentControlSet \
Control \
Session Manager \
Environment
Note that any environment variable that needs to be expanded (for example, when you use %SYSTEM%) must be stored in the registry as a REG_EXPAND_SZ registry value. Any values of type REG_SZ will not be expanded when read from the registry.
Note that RegEdit.exe does not have a way to add REG_EXPAND_SZ. Use RegEdt32.exe when editing these values manually.
However, note that modifications to the environment variables do not result in immediate change. For example, if you start another Command Prompt after making the changes, the environment variables will reflect the previous (not the current) values. The changes do not take effect until you log off and then log back on.
To effect these changes without having to log off, broadcast a WM_SETTINGCHANGE message to all windows in the system, so that any interested applications (such as Program Manager, Task Manager, Control Panel, and so forth) can perform an update.
MORE INFORMATION
For example, on Windows NT, the following code fragment should propagate the changes to the environment variables used in the Command Prompt:
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
(LPARAM) "Environment", SMTO_ABORTIFHUNG,
5000, &dwReturnValue);
None of the applications that ship with Windows 95, including Program Manager and the shell, respond to this message. Thus, while this article can technically be implemented on Windows 95, there is no effect except to notify third-party applications. The only method of changing global environment variables on Windows 95 is to modify the autoexec.bat file and reboot.
Additional query words:
Keywords : kbNTOS350 kbNTOS351 kbNTOS400 kbSysSettings kbGrpUser
Issue type : kbhowto
Love MSDN and your life will get better
|
|
|
|
|
Roman Fadeyev wrote:
Love MSDN and your life will get better
It'll be at its best when you just provide KB article ID or link, without copying whole article into the message board.
Tomasz Sowinski -- http://www.shooltz.com
Never argue with an idiot, he'll bring you to his level and beat you with experience.
|
|
|
|
|
Tomasz Sowinski wrote:
It'll be at its best when you just provide KB article ID or link, without copying whole article into the message board.
laziness is engine of progress
by the way, Not such this article big!
|
|
|
|
|
how can I change the background color of a datetimectrl?
I don't talk about the MonthCalCtrl that's quite easy (MCM_SETCOLOR).I tried to override the function OnCtlColor(EditCtrl...) but it don't work. I also tried it by the wm_paint message itself no chance.
Has someone an idea and can help me?
|
|
|
|
|
Hi !
I am trying to use a list control inside a window, not a dialog, so I can resize it. I tried to create a class the inherit from CListCtrl and on it's instance to use the Create function:
CErrReport::CErrReport(CWnd *pParent)<br />
{<br />
Create (WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,CRect (20,30,200,300),pParent,1);<br />
<br />
}
On the paret window I used :
CErrReport *perr=new CErrReport (this);<br />
perr->ShowWindow (SW_SHOWNORMAL);
But the problem is that when the window starts I can't even click on it or move it or close it, nothing.....
What am I doing wrong ?????????????????///
Please help me
Thank you
|
|
|
|
|
Why not use resizable dialogs?
Alberto
|
|
|
|
|
If I use a resizable dialog, then the dialog itself is resized but the control size is fixed, no ?
If I create a dialog based application, and I click on the maximize button, all the control remian in the original size they were created, is there a way to expand them to the size of the whole dialog frame ?
Thank you
Shay
|
|
|
|
|
Anonymous wrote:
If I use a resizable dialog, then the dialog itself is resized but the control size is fixed, no ?
If I create a dialog based application, and I click on the maximize button, all the control remian in the original size they were created, is there a way to expand them to the size of the whole dialog frame ?
You should be able to intercept the WM_SIZE and then, for each control in the window, call SetWindowPos or something like that. The WM_SIZE gets called with the new size as parameters, so you can redraw your controls or child window accordingly.
Albi
|
|
|
|
|
Shouldn't it be created using the WS_CHILD style? All the controls are supposted to be child windows. Just an idea.
Cheers
Steen.
"To claim that computer games influence children is ridiculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
Well, I tried to OR inot the style WS_CHILD and it did not help....
Thank you...
|
|
|
|
|
How about message reflection? I can't remember if it's nescessary to make the control work properly.
Cheers
Steen.
"To claim that computer games influence children is ridiculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
what is message reflection ?
|
|
|
|
|
Look at TN062 in MSDN.
Sorry for not elaborating, but I really have to get home now (it's almost 5 pm in Denmark).
Cheers
Steen.
"To claim that computer games influence children is ridiculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
I think the style is wrong.
WS_CHILD|WS_VISIBLE| ....
don't WS_OVERLAPPEDWINDOW (WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX...)
|
|
|
|
|
suggestion
CErrReportListCtrl:public CListCtrl
{
};
CErrReport:public CWnd
{
private:
CErrReportListCtrl m_ListCtrl;
public:
CErrReport(CWnd* pParent,CRect& r=CRect(0,0,200,200))
{
Create(pParent,r);
}
void Create(CWnd* pParent,CRect& r)
{
Create(WS_OVERLAPPED|..,...,r,pParent,..);
m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|..,.....,this,1);
}
void OnSize(nType, cx, cy)
{
//Maybe
if(GetSafeWnd()!=NULL)
m_ListCtrl.MoveWindow (0, 0, cx, cy);
}
};
CErrReport *p= new CErrReport(this);
The Listctrl is nested in the CWnd
|
|
|
|
|
I will try this one, it looks like it's going to work. I found a similar solution in a book but it was too complicated, yours looks better.
Thank you.
Shay
|
|
|
|
|
Can someone verify my thinking here - I think that a windows message can only be handled by a window-based class. Is this right?
For example: in a MFC app I can handle a message in the view, mainframe, etc. but I can't handle it directly in a non-window class that the view instantiates. (I know I could always call a function in the other class from the view's handler.)
thanks
|
|
|
|
|
Yes, this is true. The exception is WM_COMMAND, which can be handled by CCmdTarget derived classes, like CDocument, CWinApp or CYourOwnCmdTarget.
Tomasz Sowinski -- http://www.shooltz.com
Never argue with an idiot, he'll bring you to his level and beat you with experience.
|
|
|
|
|
Thanks, Tomasz. I thought that was right, but sometimes it helps if you can find someone else that agrees.
|
|
|
|
|
If you really need to provide message handling stuff in classes not derived from CWnd, you may want to use CSubclassWnd by Paul DiLascia (the guy who writes C++ QA column in MSDN Magazine). Just search for CSubclassWnd in MSDN.
Tomasz Sowinski -- http://www.shooltz.com
Never argue with an idiot, he'll bring you to his level and beat you with experience.
|
|
|
|
|
Dear all,
I created a subfolder1 under a shared folder1 which was shared to all users
exp: \\server1\shared folder1\shared subfolder1\
then i need to shared this subfolder1 to a specific user, so i need the local path of this subfolder1 to implement network share
how can i get local path from \\server1\shared folder1??
Thanks for your help.
Tida
|
|
|
|
|
You can use NetShareGetInfo
If you're running on Windows NT/2K/XP you can use level 2 and a structure of type SHARE_INFO_2;
on Windows 9x/ME level 50 and pass in a structure of type share_info_50.
The two structures unfortunately are defined in two different header files and, if you're targeting win9x you'll also need to link to a different library (netapi32.lib for NT/2K/XP and svrapi.lib for 9x)
Hope that helps,
Alberto
|
|
|
|
|
How do I compile Visual C++ .NET projects using the .vcproj file from the command line?
Thanks,
James
|
|
|
|