teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

出力について追記

2021/06/13 09:05

投稿

matukeso
matukeso

スコア1685

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
+ ```