Struktur STARTUPINFOA (processthreadsapi.h)
Menentukan stasiun jendela, desktop, handel standar, dan tampilan jendela utama untuk proses pada waktu pembuatan.
Sintaks
typedef struct _STARTUPINFOA {
DWORD cb;
LPSTR lpReserved;
LPSTR lpDesktop;
LPSTR 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;
} STARTUPINFOA, *LPSTARTUPINFOA;
Anggota
cb
Ukuran struktur, dalam byte.
lpReserved
Dipesan; harus NULL.
lpDesktop
Nama desktop, atau nama stasiun desktop dan 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 CreateWindow untuk membuat jendela yang tumpang tindih jika parameter xCreateWindow CW_USEDEFAULT.
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 CreateWindow untuk membuat jendela yang tumpang tindih jika parameter yCreateWindow CW_USEDEFAULT.
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 nWidth dari CreateWindow 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 nHeight dari CreateWindow CW_USEDEFAULT.
dwXCountChars
Jika dwFlags menentukan STARTF_USECOUNTCHARS, jika jendela konsol baru dibuat dalam proses konsol, anggota ini menentukan lebar buffer layar, di 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 dalam aplikasi konsol. Jika tidak, anggota ini diabaikan.
Nilai ini bisa berupa kombinasi apa pun dari 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 | Makna |
---|---|
|
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 tersebut, 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 taskbar.
Bendera ini harus digabungkan 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 yang benar dan Jump Lists. Umumnya, aplikasi akan menggunakan fungsi SetCurrentProcessExplicitAppUserModelID dan GetCurrentProcessExplicitAppUserModelID 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 lpTitle berisi jalur file pintasan (.lnk) yang dipanggil pengguna untuk memulai proses ini. Ini biasanya diatur oleh shell ketika file .lnk menunjuk ke aplikasi yang diluncurkan dipanggil. Sebagian besar aplikasi tidak perlu mengatur nilai ini.
Bendera ini tidak dapat digunakan dengan STARTF_TITLEISAPPID. |
|
Baris perintah berasal dari sumber yang tidak tepercaya. Untuk informasi selengkapnya, lihat Keterangan. |
|
Anggota dwXCountChars dan dwYCountChars berisi informasi tambahan. |
|
Anggota dwFillAttribute berisi informasi tambahan. |
|
Anggota hStdInput berisi informasi tambahan.
Bendera ini tidak dapat digunakan dengan STARTF_USESTDHANDLES. |
|
Anggota dwX dan dwY berisi informasi tambahan. |
|
Anggota wShowWindow berisi informasi tambahan. |
|
Anggota dwXSize dan dwYSize berisi informasi tambahan. |
|
Anggota hStdInput, hStdOutput, dan hStdError 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 GetStartupInfo , anggota ini adalah nilai handel yang ditentukan selama pembuatan proses atau INVALID_HANDLE_VALUE. Handel harus ditutup dengan CloseHandle saat tidak lagi diperlukan. Bendera ini tidak dapat digunakan dengan STARTF_USEHOTKEY. |
wShowWindow
Jika dwFlags menentukan STARTF_USESHOWWINDOW, anggota ini dapat menjadi salah satu nilai yang dapat ditentukan dalam parameter nCmdShow untuk fungsi ShowWindow , kecuali untuk SW_SHOWDEFAULT. Jika tidak, anggota ini diabaikan.
Untuk proses GUI, pertama kali ShowWindow dipanggil, parameter nCmdShow-nya diabaikan wShowWindow menentukan nilai default. Dalam panggilan berikutnya ke ShowWindow, anggota wShowWindow digunakan jika parameter nCmdShowshowWindow diatur ke SW_SHOWDEFAULT.
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 dari 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 tersebut 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 handel kesalahan standar untuk proses tersebut. Jika tidak, anggota ini diabaikan dan default untuk kesalahan standar adalah buffer jendela konsol.
Keterangan
Untuk proses antarmuka pengguna grafis (GUI), informasi ini memengaruhi jendela pertama yang dibuat oleh fungsi CreateWindow dan ditunjukkan oleh fungsi ShowWindow . Untuk proses konsol, informasi ini memengaruhi jendela konsol jika konsol baru dibuat untuk proses tersebut. Proses dapat menggunakan fungsi GetStartupInfo untuk mengambil struktur STARTUPINFO yang ditentukan saat proses dibuat.
Jika proses GUI sedang dimulai dan tidak ada STARTF_FORCEONFEEDBACK atau STARTF_FORCEOFFFEEDBACK yang ditentukan, kursor umpan balik proses digunakan. Proses GUI adalah proses yang subsistemnya ditentukan sebagai "jendela."
Jika proses diluncurkan dari taskbar atau jump list, sistem mengatur GetStartupInfo untuk mengambil struktur STARTUPINFO dan memeriksa apakah hStdOutput diatur. Jika demikian, gunakan GetMonitorInfo untuk memeriksa apakah hStdOutput adalah handel monitor yang valid (HMONITOR). Proses ini kemudian dapat menggunakan handel untuk memposisikan jendelanya.
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, tetapi aplikasi yang memanggil CreateProcess didorong untuk mengatur bendera ini saat meluncurkan program dengan argumen baris perintah yang tidak tepercaya (seperti 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 SDK Windows 10. Untuk menggunakan bendera dalam versi sebelum Windows 10, Anda dapat menentukannya secara manual dalam program Anda.
Contoh
Contoh kode berikut menunjukkan penggunaan StartUpInfoA.
#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.
Catatan
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
Persyaratan | 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
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