在CBuilder中怎么使用SetEnvVariable这个函数呀?DEMO(200分)

  • 主题发起人 主题发起人 杜成福
  • 开始时间 开始时间
BOOL SetEnvVariable(LPSTR szName, LPSTR szValue, CMO cmo);<br><br>SetEnvVariable sets the specified environment variable to a certain value. The environment variable can also be elongated by specifying the command option flag fAppend or fPrepend. Under Windows NT, the environment variables affected are the ones specified in the registry. Under Windows 95, autoexec.bat is modified to set the values.<br><br>Arguments<br><br>szName<br><br>Specifies the name of the environment variable.<br><br>szValue<br><br>Specifies the new value that you want to associate with the environment variable.<br><br>cmo<br><br>Specifies the command option flag. You can use fOverwrite, fAppend, or fPrepend.<br><br>Return Value<br><br>If the function succeeds, it returns fTrue.<br>If the function fails, it returns fFalse.<br>慢慢看帮助
 
我就是笨, 看不懂呀! 看了也不会用
 
应该是SetEnvironmentVariable()这个函数吧,它的作用是给当前进程设置一个环境变量的值。<br>环境变量是包含诸如驱动器、路径或文件名之类的字符串。环境变量控制着多种程序的行为。例如:<br>TEMP环境变量指定程序放置临时文件的位置。<br>控制面板 --&gt; 系统 --&gt; 高级 --&gt; 环境变量,我这里是Win2000,在Win98中可能稍有不同,在这里你就<br>会看到各种环境变量,你也可以自己增、删、改。<br><br>这个函数一般和GetEnvironmentVariable()配对使用,其用途可以参考下面这个帖子,其中柳五公子的<br>解答就是这两个函数的用法,其实,环境变量在我们平常使用时,一般是用作设置路径,而柳五公子的<br>解答中相当于设置了一个标志<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=119489<br><br>具体语法上比较简单:<br>&nbsp; .................<br>&nbsp; char* EnvirName = "aaa";<br>&nbsp; char* EnvirValue = "bbb";<br>&nbsp; SetEnvironmentVariable(EnvirName, EnvirValue);<br>&nbsp; .................<br>&nbsp; char* EnvirName = "aaa";<br>&nbsp; char GEnvirValue[256] ;<br>&nbsp; GetEnvironmentVariable(EnvirName, GEnvirValue, sizeof(GEnvirValue));<br><br>另外,你最好说出你在程序中要达到什么目的
 
谢谢HD_Copy, 我是要SetEnvVariable的使用方法, 他是设置系统的环境变量, 而<br>SetEnvironmentVariable是设置奔进程的环境变量
 
实在对不起,我在MSDN中没有找到SetEnvVariable(),以为你写错了,<br>不过,我刚才又看了一下,虽然在C++Builder的帮助中找到了SetEnvVariable,但并没有<br>说明这个函数是在哪里声明的,我全文搜索的C++Builder目录下的所有文件,也没有找到<br>这个函数的声明,好像它并不可用啊。<br>你再等等吧,看看别人能否帮你解决这个问题,我是无能为力了。
 
有个变通的方法设置系统的环境变量,你可以试一下:<br><br>#include &lt;stdlib.h&gt;<br>main()<br>{<br>&nbsp; &nbsp; &nbsp; system("set WIND_BASE=D:/Tornado");<br>}
 
在delphi和CB中只支持SetEnvironmentVariable这个函数,不支持SetEnvVariable<br>
 
如果你非用不可得话,可以自己声明,这并不难!
 
yfdciom:<br>&nbsp; &nbsp;能不能给我一个DEMO?
 
很遗憾,我查看了kernel32.dll,那里面只有SetEnvironmentVariable<br>没有SetEnvVariable,看来SetEnvVariable,是早期版本的API函数;<br>在msdn中对SetEnvironmentVariable的解释是:<br>The SetEnvironmentVariable function sets the value of an environment variable for the current process. (设置本进程的环境变量);<br>对SetEnvVariable的解释是:<br>SetEnvVariable sets the specified environment variable to a certain value(对特定的环境变量设置某个指定的值);<br>所以,你真的只能用SetEnvironmentVariable,别无他论;
 
在这个文件里 MSINSSTF.lib,MSINSSTF.def CBuilder目录下有这个文件
 
据说在setupdll.dll 里。<br>其实你不如这样:<br>procedure SetSystemEnvironmentVariable (const name, value : string);<br>var<br>&nbsp; rv : DWORD;<br>begin<br>&nbsp; with TRegistry.Create &nbsp;do<br>&nbsp; try<br>&nbsp; &nbsp; RootKey := HKEY_LOCAL_MACHINE;<br>&nbsp; &nbsp; OpenKey ('SYSTEM/CurrentControlSet/Control/Session <br>Manager/Environment', False);<br>&nbsp; &nbsp; WriteExpandString (name, value);<br>&nbsp; &nbsp; SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0, LParam <br>(PChar ('Environment')), SMTO_ABORTIFHUNG,<br>&nbsp; &nbsp; 5000, rv);<br>&nbsp;finally<br>&nbsp; &nbsp;Free<br>&nbsp;end<br>end;<br>
 
zw84611:<br>&nbsp; 你那样是可以, 但是只要在2000行, 而在98下, 就不行了。
 
接受答案了.
 
后退
顶部