回答編集履歴

1

文章の改善

2018/06/27 01:36

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -1,13 +1,13 @@
1
- やったことはないですが、
1
+ やったことはありませんが、
2
- ①`CreateProcess` API呼び出しついでにLPPROCESS_INFORMATIONからプロセスIDを取得しておきます。
2
+ まず`CreateProcess` API呼び出しついでにLPPROCESS_INFORMATIONからプロセスIDを取得しておきます。
3
3
 
4
- 次に起動したプロセスのメインウィンドウハンドルを取得します。
4
+ 次に起動したプロセスのメインウィンドウハンドルを取得します。
5
- これはおそらく`EnumWindows` API等で全トップレベルウィンドウを列挙し、`GetWindowThreadProcessId` APIでそのウィンドウのプロセスIDを取得して、①で取得したIDと一致するかどうかで定できます。
5
+ これはおそらく`EnumWindows` API等で全トップレベルウィンドウを列挙し、`GetWindowThreadProcessId` APIでウィンドウのプロセスIDを取得して、①で取得したIDと一致するかどうかで定できます。
6
- ただ、起動直後にウィンドウが存在しているとは限らないため、Sleepやリトライの機構がおそらく必要す。
6
+ ただ、起動直後にウィンドウが存在しているとは限らないため、Sleepやリトライの機構が必要になると予想されます。
7
7
 
8
8
  あとは取得したウィンドウハンドルを`SetParentで親を差し替えればいけるのではないかと思います。
9
9
 
10
- ただ、SetParent APIの[日本語のリファレンス](https://msdn.microsoft.com/ja-jp/library/cc411061.aspx)には
10
+ 懸案事項として`SetParent` APIの[日本語のリファレンス](https://msdn.microsoft.com/ja-jp/library/cc411061.aspx)には
11
11
 
12
12
  > 新しい親ウィンドウと子ウィンドウは、同一アプリケーションに属していなければなりません。
13
13