c++でCreateProcess を使用してadbコマンドを実行したいのですが、コードの書き方がわかりません。
https://learn.microsoft.com/ja-jp/windows/win32/procthread /creating-processes
のtmain関数はmain関数とは違うのでしょうか?
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;
}
if( !CreateProcess( NULL, argv[1], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi )) {
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
これのargv[1]のところを例えば"adb device"とすればこのコマンドが実行される感じですか?
それで実行し終わったら
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
でプロセスを終了するというイメージでいいですか?
(mallocとfreeみたいな感じ?)
また、tmain関数はmain関数が違った場合ですが、
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
void _tmain( int argc, TCHAR *argv[] ){
(中略)
}
int main(void) {
_tmain( , &(TCHAR)"adb device");
_tmain( , &(TCHAR)"adb shell input touchscreen tap x y");
return 0;
}
でコマンドの実行が可能ですか?
何かほかに処理が必要であれば教えてほしいです。
あとargcは何の役割があるのでしょうか?
回答1件