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
STARTF_FORCEONFEEDBACK
0x00000040
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.

STARTF_FORCEOFFFEEDBACK
0x00000080
Menunjukkan bahwa kursor umpan balik dipaksa mati saat proses dimulai. Kursor Pilih Normal ditampilkan.
STARTF_PREVENTPINNING
0x00002000
Menunjukkan bahwa jendela apa pun yang dibuat oleh proses tidak dapat disematkan pada taskbar.

Bendera ini harus digabungkan dengan STARTF_TITLEISAPPID.

STARTF_RUNFULLSCREEN
0x00000020
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.

STARTF_TITLEISAPPID
0x00001000
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.

STARTF_TITLEISLINKNAME
0x00000800
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.

STARTF_UNTRUSTEDSOURCE
0x00008000
Baris perintah berasal dari sumber yang tidak tepercaya. Untuk informasi selengkapnya, lihat Keterangan.
STARTF_USECOUNTCHARS
0x00000008
Anggota dwXCountChars dan dwYCountChars berisi informasi tambahan.
STARTF_USEFILLATTRIBUTE
0x00000010
Anggota dwFillAttribute berisi informasi tambahan.
STARTF_USEHOTKEY
0x00000200
Anggota hStdInput berisi informasi tambahan.

Bendera ini tidak dapat digunakan dengan STARTF_USESTDHANDLES.

STARTF_USEPOSITION
0x00000004
Anggota dwX dan dwY berisi informasi tambahan.
STARTF_USESHOWWINDOW
0x00000001
Anggota wShowWindow berisi informasi tambahan.
STARTF_USESIZE
0x00000002
Anggota dwXSize dan dwYSize berisi informasi tambahan.
STARTF_USESTDHANDLES
0x00000100
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

CreateProcess

CreateProcessAsUser

CreateProcessWithLogonW

CreateProcessWithTokenW

GetStartupInfo