質問編集履歴
3
不要なコメントの削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -90,7 +90,6 @@
|
|
90
90
|
start_info.cb = size_of::<STARTUPINFOW>() as u32;
|
91
91
|
let mut proc_info = zeroed::<PROCESS_INFORMATION>();
|
92
92
|
println!("command line: {}", command_line);
|
93
|
-
// let dest = command_line;
|
94
93
|
let command_line= PWSTR(
|
95
94
|
OsString::from(&command_line)
|
96
95
|
.encode_wide()
|
2
変数名の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -91,7 +91,7 @@
|
|
91
91
|
let mut proc_info = zeroed::<PROCESS_INFORMATION>();
|
92
92
|
println!("command line: {}", command_line);
|
93
93
|
// let dest = command_line;
|
94
|
-
let de
|
94
|
+
let command_line= PWSTR(
|
95
95
|
OsString::from(&command_line)
|
96
96
|
.encode_wide()
|
97
97
|
.collect::<Vec<u16>>()
|
@@ -99,7 +99,7 @@
|
|
99
99
|
);
|
100
100
|
let err = CreateProcessW(
|
101
101
|
null(),
|
102
|
-
de
|
102
|
+
command_line,
|
103
103
|
null(),
|
104
104
|
null(),
|
105
105
|
false,
|
1
情報の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,19 +1,21 @@
|
|
1
|
-
|
1
|
+
# やりたいこと
|
2
|
+
下記のラッパーAPIの CreateProcessW を使い、プロセス(calc.exe)を起動することです。
|
2
|
-
RustのMicrosoft公式のWindows APIラッパーを使って
|
3
|
+
RustのMicrosoft公式のWindows APIラッパーを使っています。
|
3
4
|
URL:https://github.com/microsoft/windows-rs
|
4
5
|
|
5
|
-
やりたいこととしては、上記のラッパーAPIの CreateProcessW を使い、プロセス(calc.exe)を起動することです。
|
6
6
|
数回に1回程度起動しますが、大抵の場合失敗し、エラーコード(GetLastErrorで取得したもの)が
|
7
7
|
2(指定されたファイルが見つかりません。)と出てしまいます。
|
8
8
|
|
9
|
-
確実に存在するパスのはずなのに、数回に1回しか起動せず、しかも起動しない理由が指定されたパスがない
|
9
|
+
確実に存在するプログラム名・パスのはずなのに、数回に1回しか起動せず、しかも起動しない「理由が指定されたパスがない」と言う内容です。(もちろん、`"C:\\Windows\\System32\\calc.exe"`と絶対パス表記にしても同様の確率で失敗します。)
|
10
|
-
以下
|
10
|
+
以下コードのどこに問題点ありそうでしょうか。
|
11
11
|
|
12
|
-
開発環境
|
12
|
+
## 開発環境
|
13
13
|
OS: Windows 10 21H1 build 19043.1586
|
14
14
|
Rustツールチェイン:stable-x86_64-pc-windows-gnu (default)
|
15
15
|
Rustコンパイラ:rustc 1.59.0 (9d1b2106e 2022-02-23)
|
16
16
|
Cargo:cargo 1.59.0 (49d8809dc 2022-02-10)
|
17
|
+
|
18
|
+
## コード(設定ファイル)
|
17
19
|
|
18
20
|
```cargo.toml
|
19
21
|
[package]
|
@@ -55,6 +57,7 @@
|
|
55
57
|
panic = "abort"
|
56
58
|
```
|
57
59
|
|
60
|
+
## コード本体
|
58
61
|
|
59
62
|
``` main.rs
|
60
63
|
pub(crate) fn main() {
|
@@ -100,7 +103,7 @@
|
|
100
103
|
null(),
|
101
104
|
null(),
|
102
105
|
false,
|
103
|
-
CREATE_SUSPENDED,
|
106
|
+
CREATE_SUSPENDED, // この状態で起動するとWindowは出ないがタスクマネージャでは確認できる
|
104
107
|
null(),
|
105
108
|
PCWSTR::default(),
|
106
109
|
&mut start_info,
|