Bagaimana cara menggunakan proses pembuatan untuk menjalankan program adb di PATH?

Saya telah menambahkan lokasi adb ke dalam PATH. Dalam proyek C saya, saya ingin menjalankan cmd yang mengalir:

char *broadcastStop = "adb shell am broadcast -a NotifyServiceStop";

char *forward = "adb forward tcp:12582 tcp:10086";

char *broadcastStart = "adb shell am broadcast -a NotifyServiceStart";

Saya dapat menjalankan hal di atas menggunakan system() dengan baik. Sekarang saya ingin menjalankan mereka yang menyembunyikan konsol. Saya telah menemukan banyak pertanyaan serupa, dan memberi tahu CreateProcess dapat melakukannya.

Ini kode saya:

void system_hide(char *cmd)
{
    STARTUPINFOW si;
    PROCESS_INFORMATION pi;

    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));

    if (CreateProcessW(NULL, cmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
    {
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);

    }
}

Itu tidak berjalan dengan benar,

Saya rasa parameter CreateProcess salah.

Berharap untuk versi yang benar. Terima kasih sebelumnya.


person chenzhongpu    schedule 11.01.2015    source sumber
comment
omong-omong, parameter cmd di system_hide mengacu pada broadcastStop,....   -  person chenzhongpu    schedule 11.01.2015
comment
Tahukah Anda apa kepanjangan W dalam CreateProcessW? Apakah Anda memperhatikan peringatan kompiler?   -  person n. 1.8e9-where's-my-share m.    schedule 11.01.2015
comment
W berarti versi Unicode dari fungsi ini, bukan? Kode akan dikompilasi ke dll, jadi saya tidak dapat melihat info detail runtime.   -  person chenzhongpu    schedule 11.01.2015
comment
Ya. Tetapi Anda mencoba meneruskan string ANSI ke sana.   -  person Ari0nhh    schedule 11.01.2015
comment
terima kasih banyak. Saya mengubah CreateProcessW menjadi CreateProcess, dan berhasil.   -  person chenzhongpu    schedule 11.01.2015