[解決済み] CreateProcess Failed, unexpected error [closed].
2022-02-16 19:10:03
質問
プロセス(calc.exe)を作成しようとしましたが、プログラムが正しく実行されません。起動後、クラッシュしてしまいます。私は、問題はLPWSTR変数にあると思いますが、私はそれを修正する方法を知りません。
以下、私のコードです。
#include "stdafx.h"
#include <Windows.h>
#include <cstdio>
#include <string>
using namespace std;
void NewProcess(LPWSTR cmd) {
printf("Argv Inside funcion: %s\n", cmd[1]);
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (!CreateProcess(NULL,
cmd,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi)
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
return;
}
printf("Process ID: %d Started", pi.dwProcessId);
WaitForSingleObject(pi.hProcess, INFINITE);
printf("\nProcess ID: %d Terminated!", pi.dwProcessId);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
void main(int argc, TCHAR *argv[])
{
char text[] = "calc.exe";
wchar_t wtext[20];
mbstowcs(wtext, text, strlen(text) + 1);
LPWSTR ptr = wtext;
NewProcess(ptr);
getchar();
}
解決方法は?
あなたの
printf
は、コマンドの最初の文字を(ワイドでない)C文字列へのポインタとして解釈しています。
使用する
wprintf(L"Argv Inside funcion: %s\n", cmd);
と複雑にする必要はありません。
main
にはマルチバイト文字はありません。
"calc.exe"
だから、変換するものがない)。
int main(int argc, TCHAR *argv[])
{
auto application[] = L"calc.exe";
NewProcess(application);
getchar();
}
関連
-
[解決済み] エラー: '...'のメンバー '...'が非クラス型である場合のリクエスト
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み] error: 'this' 引数に xxx を渡すと修飾子が消える
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない