Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menentukan stasiun jendela, desktop, handel standar, dan tampilan jendela utama untuk proses pada waktu pembuatan.
Sintaksis
typedef struct _STARTUPINFOW {
DWORD cb;
LPWSTR lpReserved;
LPWSTR lpDesktop;
LPWSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFOW, *LPSTARTUPINFOW;
Anggota
cb
Ukuran struktur, dalam byte.
lpReserved
Dipesan; harus NULL.
lpDesktop
Nama desktop, atau nama desktop dan stasiun jendela untuk proses ini. Garis miring terbelakang dalam string menunjukkan bahwa string menyertakan nama stasiun desktop dan jendela.
Untuk informasi selengkapnya, lihat Koneksi Utas ke desktop.
lpTitle
Untuk proses konsol, ini adalah judul yang ditampilkan di bilah judul jika jendela konsol baru dibuat. Jika NULL, nama file yang dapat dieksekusi digunakan sebagai judul jendela sebagai gantinya. Parameter ini harus NULL untuk PROSES GUI atau konsol yang tidak membuat jendela konsol baru.
dwX
Jika dwFlags menentukan STARTF_USEPOSITION, anggota ini adalah offset x dari sudut kiri atas jendela jika jendela baru dibuat, dalam piksel. Jika tidak, anggota ini diabaikan.
Offset berasal dari sudut kiri atas layar. Untuk proses GUI, posisi yang ditentukan digunakan pertama kali proses baru memanggil
dwY
Jika dwFlags menentukan STARTF_USEPOSITION, anggota ini adalah offset y dari sudut kiri atas jendela jika jendela baru dibuat, dalam piksel. Jika tidak, anggota ini diabaikan.
Offset berasal dari sudut kiri atas layar. Untuk proses GUI, posisi yang ditentukan digunakan pertama kali proses baru memanggil
dwXSize
Jika dwFlags menentukan STARTF_USESIZE, anggota ini adalah lebar jendela jika jendela baru dibuat, dalam piksel. Jika tidak, anggota ini diabaikan.
Untuk proses GUI, ini hanya digunakan pertama kali proses baru memanggil CreateWindow untuk membuat jendela yang tumpang tindih jika parameter nWidthCreateWindow CW_USEDEFAULT.
dwYSize
Jika dwFlags menentukan STARTF_USESIZE, anggota ini adalah tinggi jendela jika jendela baru dibuat, dalam piksel. Jika tidak, anggota ini diabaikan.
Untuk proses GUI, ini hanya digunakan pertama kali proses baru memanggil CreateWindow untuk membuat jendela yang tumpang tindih jika parameter nHeightCreateWindow CW_USEDEFAULT.
dwXCountChars
Jika dwFlags menentukan STARTF_USECOUNTCHARS, jika jendela konsol baru dibuat dalam proses konsol, anggota ini menentukan lebar buffer layar, dalam kolom karakter. Jika tidak, anggota ini diabaikan.
dwYCountChars
Jika dwFlags menentukan STARTF_USECOUNTCHARS, jika jendela konsol baru dibuat dalam proses konsol, anggota ini menentukan tinggi buffer layar, dalam baris karakter. Jika tidak, anggota ini diabaikan.
dwFillAttribute
Jika dwFlags menentukan STARTF_USEFILLATTRIBUTE, anggota ini adalah teks awal dan warna latar belakang jika jendela konsol baru dibuat di aplikasi konsol. Jika tidak, anggota ini diabaikan.
Nilai ini bisa berupa kombinasi nilai berikut: FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, dan BACKGROUND_INTENSITY. Misalnya, kombinasi nilai berikut menghasilkan teks merah pada latar belakang putih:
FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE
dwFlags
Bitfield yang menentukan apakah anggota STARTUPINFO tertentu digunakan saat proses membuat jendela. Anggota ini bisa menjadi satu atau beberapa nilai berikut.
| Nilai | Arti |
|---|---|
|
Menunjukkan bahwa kursor berada dalam mode umpan balik selama dua detik setelah CreateProcess dipanggil. Kursor Bekerja di Latar Belakang ditampilkan (lihat tab Penunjuk di utilitas panel kontrol Mouse).
Jika selama dua detik itu, proses melakukan panggilan GUI pertama, sistem memberikan lima detik lagi untuk prosesnya. Jika selama lima detik tersebut, proses menunjukkan jendela, sistem memberikan lima detik lagi ke proses untuk menyelesaikan menggambar jendela. Sistem menonaktifkan kursor umpan balik setelah panggilan pertama ke GetMessage, terlepas dari apakah proses menggambar. |
|
Menunjukkan bahwa kursor umpan balik dipaksa mati saat proses dimulai. Kursor Pilih Normal ditampilkan. |
|
Menunjukkan bahwa jendela apa pun yang dibuat oleh proses tidak dapat disematkan pada bilah tugas.
Bendera ini harus dikombinasikan dengan STARTF_TITLEISAPPID. |
|
Menunjukkan bahwa proses harus dijalankan dalam mode layar penuh, bukan dalam mode berjendela.
Bendera ini hanya berlaku untuk aplikasi konsol yang berjalan di komputer x86. |
|
Anggota lpTitle berisi AppUserModelID. Pengidentifikasi ini mengontrol bagaimana bilah tugas dan menu Mulai menyajikan aplikasi, dan memungkinkannya dikaitkan dengan pintasan dan Jump List yang benar. Umumnya, aplikasi akan menggunakan SetCurrentProcessExplicitAppUserModelID dan GetCurrentProcessExplicitAppUserModelID fungsi alih-alih mengatur bendera ini. Untuk informasi selengkapnya, lihat ID Model Pengguna Aplikasi.
Jika STARTF_PREVENTPINNING digunakan, jendela aplikasi tidak dapat disematkan pada taskbar. Penggunaan properti jendela terkait AppUserModelID oleh aplikasi mengambil alih pengaturan ini hanya untuk jendela tersebut. Bendera ini tidak dapat digunakan dengan STARTF_TITLEISLINKNAME. |
|
Anggota Bendera ini tidak dapat digunakan dengan STARTF_TITLEISAPPID. |
|
Baris perintah berasal dari sumber yang tidak tepercaya. Untuk informasi selengkapnya, lihat Keterangan. |
|
dwXCountChars dan dwYCountChars anggota berisi informasi tambahan. |
|
Anggota |
|
Anggota Bendera ini tidak dapat digunakan dengan STARTF_USESTDHANDLES. |
|
Anggota dwX dan dwY berisi informasi tambahan. |
|
Anggota wShowWindow berisi informasi tambahan. |
|
dwXSize dan dwYSize anggota berisi informasi tambahan. |
|
hStdInput, hStdOutput, dan hStdError anggota berisi informasi tambahan.
Jika bendera ini ditentukan saat memanggil salah satu fungsi pembuatan proses, handel harus dapat diwariskan dan parameter bInheritHandles fungsi harus diatur ke TRUE. Untuk informasi selengkapnya, lihat Menangani Pewarisan. Jika bendera ini ditentukan saat memanggil fungsi Handel harus ditutup dengan CloseHandle ketika tidak lagi diperlukan. Bendera ini tidak dapat digunakan dengan STARTF_USEHOTKEY. |
wShowWindow
Jika
Untuk proses GUI, pertama kali
cbReserved2
Dicadangkan untuk digunakan oleh Run-time C; harus nol.
lpReserved2
Dicadangkan untuk digunakan oleh Run-time C; harus NULL.
hStdInput
Jika dwFlags menentukan STARTF_USESTDHANDLES, anggota ini adalah handel input standar untuk proses tersebut. Jika STARTF_USESTDHANDLES tidak ditentukan, default untuk input standar adalah buffer keyboard.
Jika dwFlags menentukan STARTF_USEHOTKEY, anggota ini menentukan nilai hotkey yang dikirim sebagai parameter wParam pesan WM_SETHOTKEY ke jendela tingkat atas pertama yang memenuhi syarat yang dibuat oleh aplikasi yang memiliki proses. Jika jendela dibuat dengan gaya jendela WS_POPUP, jendela tidak memenuhi syarat kecuali gaya jendela WS_EX_APPWINDOW diperluas juga diatur. Untuk informasi selengkapnya, lihat CreateWindowEx.
Jika tidak, anggota ini diabaikan.
hStdOutput
Jika dwFlags menentukan STARTF_USESTDHANDLES, anggota ini adalah handel output standar untuk proses tersebut. Jika tidak, anggota ini diabaikan dan default untuk output standar adalah buffer jendela konsol.
Jika proses diluncurkan dari taskbar atau jump list, sistem mengatur hStdOutput ke handel ke monitor yang berisi taskbar atau jump list yang digunakan untuk meluncurkan proses. Untuk informasi selengkapnya, lihat Keterangan.Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP dan Windows Server 2003: Perilaku ini diperkenalkan di Windows 8 dan Windows Server 2012.
hStdError
Jika dwFlags menentukan STARTF_USESTDHANDLES, anggota ini adalah penanganan kesalahan standar untuk proses tersebut. Jika tidak, anggota ini diabaikan dan default untuk kesalahan standar adalah buffer jendela konsol.
Komentar
Untuk proses antarmuka pengguna grafis (GUI), informasi ini memengaruhi jendela pertama yang dibuat oleh fungsi
Jika proses GUI sedang dimulai dan tidak ada STARTF_FORCEONFEEDBACK atau STARTF_FORCEOFFFEEDBACK yang ditentukan, kursor umpan balik proses digunakan. Proses GUI adalah salah satu yang subsistemnya ditentukan sebagai "windows."
Jika proses diluncurkan dari taskbar atau jump list, sistem mengatur GetStartupInfo
Jika bendera STARTF_UNTRUSTEDSOURCE ditentukan, aplikasi harus mengetahui bahwa baris perintah tidak tepercaya. Jika bendera ini diatur, aplikasi harus menonaktifkan fitur yang berpotensi berbahaya seperti makro, konten yang diunduh, dan pencetakan otomatis. Bendera ini bersifat opsional. Aplikasi yang memanggil CreateProcess didorong untuk mengatur bendera ini saat meluncurkan program dengan argumen baris perintah yang tidak tepercaya (misalnya yang disediakan oleh konten web) sehingga proses yang baru dibuat dapat menerapkan kebijakan yang sesuai.
Bendera STARTF_UNTRUSTEDSOURCE didukung mulai dari Windows Vista, tetapi tidak ditentukan dalam file header SDK sebelum Windows 10 SDK. Untuk menggunakan bendera dalam versi sebelum Windows 10, Anda dapat menentukannya secara manual dalam program Anda.
Contoh
Contoh kode berikut menunjukkan penggunaan StartUpInfoW.
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
void _tmain( int argc, TCHAR *argv[] )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if( argc != 2 )
{
printf("Usage: %s [cmdline]\n", argv[0]);
return;
}
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line)
argv[1], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
Untuk informasi selengkapnya tentang contoh ini, lihat Membuat Proses.
Nota
Header processthreadsapi.h mendefinisikan STARTUPINFO sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor 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
| Syarat | Nilai |
|---|---|
| klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
| server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
| Header |
processthreadsapi.h (termasuk Windows.h pada Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Lihat juga