質問編集履歴

3

不要なコメントの削除

2022/03/26 14:45

投稿

v_v
v_v

スコア47

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

変数名の修正

2022/03/26 14:44

投稿

v_v
v_v

スコア47

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 dest = PWSTR(
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
- dest,
102
+ command_line,
103
103
  null(),
104
104
  null(),
105
105
  false,

1

情報の追記

2022/03/26 14:32

投稿

v_v
v_v

スコア47

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,