Fungsi DoEnvironmentSubstA (shellapi.h)
[Fungsi ini hanya dipertahankan untuk kompatibilitas mundur. Gunakan ExpandEnvironmentStrings sebagai gantinya.]
Mengurai string input yang berisi referensi ke satu atau beberapa variabel lingkungan dan menggantinya dengan nilai yang sepenuhnya diperluas.
Sintaks
DWORD DoEnvironmentSubstA(
[in, out] LPSTR pszSrc,
UINT cchSrc
);
Parameter
[in, out] pszSrc
Jenis: LPTSTR
Penunjuk ke string yang dihentikan null yang berisi referensi ke satu atau beberapa variabel lingkungan, masing-masing dalam formulir berikut. Kasus diabaikan.
%VariableName%
Karakter apa pun dalam string yang tidak diapit dalam karakter '%' diabaikan dan dikembalikan tidak berubah. Oleh karena itu, jika string Anda berisi beberapa variabel lingkungan, Anda dapat menggunakan karakter apa pun selain '%' sebagai pemisah, termasuk spasi atau tanpa pemisah.
Ketika fungsi ini berhasil dikembalikan, setiap %VariableName% diganti dengan nilai yang diperluas. Aturan penggantian sama dengan yang digunakan oleh penerjemah perintah. Jika nama variabel tidak ditemukan pada sistem, %variableName% dibiarkan seperti yang dikirimkan pada entri.
Jika fungsi ini gagal karena string yang diperluas terlalu besar untuk buffer, konten buffer ini dibiarkan tidak berubah.
cchSrc
Jenis: UINT
Ukuran, dalam karakter, dari buffer yang ditujukkan oleh pszSrc. Perhatikan bahwa buffer harus cukup besar untuk menahan string yang dikembalikan.
Mengembalikan nilai
Jenis: DWORD
Jika string yang diperluas pas di buffer, TRUE dikembalikan dalam HIWORD dan panjangnya, dalam karakter, pszSrc baru dikembalikan dalam LOWORD.
Jika string yang diperluas terlalu besar untuk buffer, FALSE dikembalikan dalam HIWORD dan cchSrc di LOWORD.
Keterangan
Parameter harus berisi nilai non-NULL yang valid. Anda harus memvalidasi nilai-nilai ini. Kegagalan untuk melakukannya dapat memberikan hasil yang tidak terduga.
Karena string yang dikembalikan dalam pszSrc biasanya akan lebih panjang dari string input, pastikan bahwa buffer cukup besar untuk menahan versi string yang diperluas. Ukuran buffer cchSrc yang dialokasikan untuk string ANSI harus satu lebih besar dari buffer untuk string Unicode. Saat berhadapan dengan string ANSI, gunakan ukuran buffer rumus = panjang string + mengakhiri karakter null + 1 untuk menentukan ukuran buffer minimum yang benar.
Karena variabel lingkungan dapat ditambahkan oleh pengguna atau aplikasi, daftar lengkapnya tergantung pada sistem. Variabel lingkungan berikut adalah standar dan tersedia untuk aplikasi dan layanan interaktif.
- ALLUSERSPROFILE
- APPDATA
- COMPUTERNAME
- LOCALAPPDATA
- NUMBER_OF_PROCESSORS
- OS
- PROCESSOR_ARCHITECTURE
- PROCESSOR_IDENTIFIER
- PROCESSOR_LEVEL
- PROCESSOR_REVISION
- ProgramData
- ProgramFiles
- PUBLIC
- SystemDrive
- SystemRoot
- USERPROFILE
- windir
- HOMEDRIVE
- HOMEPATH
- LOGONSERVER
- USERDOMAIN
- NAMA PENGGUNA
Contoh
Aplikasi konsol berikut menunjukkan penggunaan DoEnvironmentSubstW.
#include "stdafx.h"
#include "windows.h"
#include "windef.h"
#include "shellapi.h"
int _tmain(int argc, _TCHAR* argv[])
{
WCHAR szSrc[MAX_PATH] = L"%OS%;%HOMEPATH%";
DWORD result = DoEnvironmentSubstW(szSrc, MAX_PATH);
WORD success = HIWORD(result);
WORD string_length = LOWORD(result);
return 0;
}
Catatan
Header shellapi.h mendefinisikan DoEnvironmentSubst sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | shellapi.h |
Pustaka | Shell32.lib |
DLL | Shell32.dll (versi 4.0 atau yang lebih baru) |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk