[问题] console模式下 使否有类似WndProc的方法取得message?

楼主: godzilla1954 (阿维)   2017-09-15 13:45:02
这问题困扰我好久 希望知道的高手能够指点一下
问题:
原本有一个C#视窗程式 这个程式呼叫别人写的API
[DllImport(@"..\API.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern bool GetInformation(IntPtr app );
呼叫这个API 他就会把一些资讯用Message回传
并且将一些参数 或是特定资讯纪录在Msg LParam WParam 等等
为了要取得这些资讯 在视窗程式中会去复写WndProc这个方 去取得Message
并且过滤只拿GetInformation所回传的讯息:
protected override void WndProc(ref Message m)
{
if (m.Msg == APIMessage)
{
int wParam = m.WParam.ToInt32();
int lParam = m.LParam.ToInt32();
switch (wParam)
{
case (int)......
break;
....
}
}
base.WndProc(ref m);
}
我的问题是 今天如果我采用console模式去呼叫API
我想请问 在console模式下 使否有类似WndProc 这样的方法
可以去取得呼叫API后所回传的Message呢???
作者: pzyc79   2017-09-17 16:10:00
我试了 最后都得到Error: Access is denied.
楼主: godzilla1954 (阿维)   2017-09-18 16:16:00
请问您是用怎样方法 可以分享一下吗
作者: pzyc79   2017-09-18 17:03:00
The console window belongs to the CSRSS process, notthe CMD.EXE process. CSRSS is a critical system servicthat is protected and cannot be hooked without specialdebug privileges.我是用 user32::SetWindowProc
作者: hatasum (我很可爱)   2017-11-03 14:01:00
如果用console呼叫一个隐藏的winform,那个winform接受wndproc呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com