无我

让内心永远燃烧着伟大的光明的精神之火!
灵活的思考,严谨的实现
豪迈的气魄、顽强的意志和周全的思考

GetConsoleWindow

在控制台程序中,要得到当前程序的句柄,最好的方法是调用GetConsoleWindow 。
然而,在代码中却无法直接调用GetConsoleWindow,因为GetConsoleWindow 是 Kernel32.dll 中部分未公布的API。
在用eXeScope导出 Kernel32.dll 中控制台相关的API之后,可以发现有一个名为GetConsoleWindow的API。查找参考了部分资料后,提供如下代码,能够动态载入这个API并获 得窗口句柄。

首先需要全局声明:

typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)();
PROCGETCONSOLEWINDOW GetConsoleWindow;

然后再Main()函数开头中输入以下内容:

HMODULE hKernel32 = GetModuleHandle("kernel32");
GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");

完成了动态载入API函数GetConsoleWindow的任务。需要使用时可如下:

HWND cmd = GetConsoleWindow();

posted on 2015-01-09 10:36 Tim 阅读(5845) 评论(0)  编辑 收藏 引用 所属分类: C/C++语言


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2017年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

公告

本博客原创文章,欢迎转载和交流。不过请注明以下信息:
作者:TimWu
邮箱:timfly@yeah.net
来源:www.cppblog.com/Tim
感谢您对我的支持!

留言簿(9)

随笔分类(173)

IT

Life

搜索

积分与排名

最新随笔

最新评论

阅读排行榜