回答編集履歴
1
出力について追記
answer
CHANGED
@@ -1,3 +1,14 @@
|
|
1
1
|
こちらではそのコードを、ほぼコピペしてちゃんとフックされましたよ。(メモ帳にstd::coutの出力結果は出ないので適当なファイルをfopenしてfprintfするコードに変更した程度)
|
2
2
|
|
3
|
-
hHookを.sharedにおくのは、c#側exeのHookProc.dllのhHook (SetWindowsHookEx呼んだ結果)をnotepad.exeのHookProc.dllと共有してCallNextHookExに有効なhHookを渡せるようにする意図ですかね。ただ、CallNextHookExでは「HHOOK hhk : This parameter is ignored.」なので必要は無いですが。
|
3
|
+
hHookを.sharedにおくのは、c#側exeのHookProc.dllのhHook (SetWindowsHookEx呼んだ結果)をnotepad.exeのHookProc.dllと共有してCallNextHookExに有効なhHookを渡せるようにする意図ですかね。ただ、CallNextHookExでは「HHOOK hhk : This parameter is ignored.」なので必要は無いですが。
|
4
|
+
|
5
|
+
追記
|
6
|
+
まず、CallWndProcはnotepad.exeのプロセス側で動いているんですが、それは大丈夫ですか?
|
7
|
+
notepad.exeのcoutと、自プロセス(C#exe)のcoutは別で、フックしたくらいで混ざったりしません。
|
8
|
+
表示するだけなら、下記のようにnotepad側にコンソールを割り当てるとかAttachConsoleする方法が楽でしょう。
|
9
|
+
```cpp
|
10
|
+
if( GetStdHandle(STD_OUTPUT_HANDLE) == 0 ) {
|
11
|
+
AllocConsole();
|
12
|
+
freopen( "CONOUT$", "w", stdout);
|
13
|
+
}
|
14
|
+
```
|