CSDN论坛 > Windows专区 > 非技术区

Windows 9X和Office使用板块需要版主,有意者请留意 [问题点数:0分]

Bbs9
本版专家分:53749
Blank
红花 2005年9月 Windows专区大版内专家分月排行榜第一
2005年8月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2006年10月 Windows专区大版内专家分月排行榜第二
2006年9月 Windows专区大版内专家分月排行榜第二
2006年8月 Windows专区大版内专家分月排行榜第二
2005年10月 Windows专区大版内专家分月排行榜第二
2004年8月 Windows专区大版内专家分月排行榜第二
2004年7月 Windows专区大版内专家分月排行榜第二
结帖率 98.65%
CSDN今日推荐
Bbs7
本版专家分:19278
Blank
蓝花 2004年11月 Windows专区大版内专家分月排行榜第三
Bbs9
本版专家分:89954
版主
Blank
优秀版主 2016年8月优秀大版主
Blank
微软MVP 2018年7月 荣获微软MVP称号
2017年7月荣获微软MVP称号
2016年10月荣获微软MVP称号
2015年10月荣获微软MVP称号
2014年10月荣获微软MVP称号
2013年10月 荣获微软MVP称号
2012年10月 荣获微软MVP称号
2011年10月 荣获微软MVP称号
2009年10月 荣获微软MVP称号
2010年10月 荣获微软MVP称号
2005年9月 荣获微软MVP称号
2008年10月 荣获微软MVP称号
2007年10月 荣获微软MVP称号
2006年10月 荣获微软MVP称号
Blank
红花 2018年6月 Windows专区大版内专家分月排行榜第一
2018年5月 Windows专区大版内专家分月排行榜第一
2018年4月 Windows专区大版内专家分月排行榜第一
2018年2月 Windows专区大版内专家分月排行榜第一
2017年12月 Windows专区大版内专家分月排行榜第一
2017年11月 Windows专区大版内专家分月排行榜第一
2017年10月 Windows专区大板内专家分月排行榜第一
2017年9月 Windows专区大版内专家分月排行榜第一
2017年7月 Windows专区大版内专家分月排行榜第一
2017年6月 Windows专区大版内专家分月排行榜第一
2017年5月 Windows专区大版内专家分月排行榜第一
2016年10月 Windows专区大版内专家分月排行榜第一
2016年7月 Windows专区大版内专家分月排行榜第一
2016年5月 Windows专区大版内专家分月排行榜第一
2016年4月 Windows专区大版内专家分月排行榜第一
2016年2月 Windows专区大版内专家分月排行榜第一
2015年12月 Windows专区大版内专家分月排行榜第一
2015年10月 Windows专区大版内专家分月排行榜第一
2015年5月 Windows专区大版内专家分月排行榜第一
2015年1月 Windows专区大版内专家分月排行榜第一
2016年9月 Windows专区大版内专家分月排行榜第一
2014年4月 Windows专区大版内专家分月排行榜第一
2013年8月 Windows专区大版内专家分月排行榜第一
2013年7月 Windows专区大版内专家分月排行榜第一
2013年5月 Windows专区大版内专家分月排行榜第一
2013年4月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2018年3月 Windows专区大版内专家分月排行榜第二
2018年1月 Windows专区大版内专家分月排行榜第二
2017年8月 Windows专区大版内专家分月排行榜第二
2017年4月 Windows专区大版内专家分月排行榜第二
2017年3月 Windows专区大版内专家分月排行榜第二
2017年2月 Windows专区大版内专家分月排行榜第二
2017年1月 Windows专区大版内专家分月排行榜第二
2016年11月 Windows专区大版内专家分月排行榜第二
2016年8月 Windows专区大版内专家分月排行榜第二
2016年6月 Windows专区大版内专家分月排行榜第二
2016年3月 Windows专区大版内专家分月排行榜第二
2016年1月 Windows专区大版内专家分月排行榜第二
2015年7月 Windows专区大版内专家分月排行榜第二
2015年3月 Windows专区大版内专家分月排行榜第二
2014年2月 Windows专区大版内专家分月排行榜第二
2014年5月 Windows专区大版内专家分月排行榜第二
2013年11月 Windows专区大版内专家分月排行榜第二
2013年10月 Windows专区大版内专家分月排行榜第二
2013年6月 Windows专区大版内专家分月排行榜第二
2013年3月 Windows专区大版内专家分月排行榜第二
2006年1月 Windows专区大版内专家分月排行榜第二
Bbs7
本版专家分:21943
Bbs8
本版专家分:43548
Blank
微软MVP 2005年7月 荣获微软MVP称号
2008年7月 荣获微软MVP称号
2007年7月 荣获微软MVP称号
2006年7月 荣获微软MVP称号
Blank
红花 2005年5月 Windows专区大版内专家分月排行榜第一
2005年4月 Windows专区大版内专家分月排行榜第一
2005年3月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2005年6月 Windows专区大版内专家分月排行榜第二
Bbs8
本版专家分:30468
Bbs5
本版专家分:3636
Blank
蓝花 2006年2月 VC/MFC大版内专家分月排行榜第三
Bbs6
本版专家分:6852
Blank
红花 2004年11月 硬件使用大版内专家分月排行榜第一
Blank
黄花 2005年1月 硬件使用大版内专家分月排行榜第二
2004年12月 硬件使用大版内专家分月排行榜第二
Bbs9
本版专家分:89954
版主
Blank
优秀版主 2016年8月优秀大版主
Blank
微软MVP 2018年7月 荣获微软MVP称号
2017年7月荣获微软MVP称号
2016年10月荣获微软MVP称号
2015年10月荣获微软MVP称号
2014年10月荣获微软MVP称号
2013年10月 荣获微软MVP称号
2012年10月 荣获微软MVP称号
2011年10月 荣获微软MVP称号
2009年10月 荣获微软MVP称号
2010年10月 荣获微软MVP称号
2005年9月 荣获微软MVP称号
2008年10月 荣获微软MVP称号
2007年10月 荣获微软MVP称号
2006年10月 荣获微软MVP称号
Blank
红花 2018年6月 Windows专区大版内专家分月排行榜第一
2018年5月 Windows专区大版内专家分月排行榜第一
2018年4月 Windows专区大版内专家分月排行榜第一
2018年2月 Windows专区大版内专家分月排行榜第一
2017年12月 Windows专区大版内专家分月排行榜第一
2017年11月 Windows专区大版内专家分月排行榜第一
2017年10月 Windows专区大板内专家分月排行榜第一
2017年9月 Windows专区大版内专家分月排行榜第一
2017年7月 Windows专区大版内专家分月排行榜第一
2017年6月 Windows专区大版内专家分月排行榜第一
2017年5月 Windows专区大版内专家分月排行榜第一
2016年10月 Windows专区大版内专家分月排行榜第一
2016年7月 Windows专区大版内专家分月排行榜第一
2016年5月 Windows专区大版内专家分月排行榜第一
2016年4月 Windows专区大版内专家分月排行榜第一
2016年2月 Windows专区大版内专家分月排行榜第一
2015年12月 Windows专区大版内专家分月排行榜第一
2015年10月 Windows专区大版内专家分月排行榜第一
2015年5月 Windows专区大版内专家分月排行榜第一
2015年1月 Windows专区大版内专家分月排行榜第一
2016年9月 Windows专区大版内专家分月排行榜第一
2014年4月 Windows专区大版内专家分月排行榜第一
2013年8月 Windows专区大版内专家分月排行榜第一
2013年7月 Windows专区大版内专家分月排行榜第一
2013年5月 Windows专区大版内专家分月排行榜第一
2013年4月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2018年3月 Windows专区大版内专家分月排行榜第二
2018年1月 Windows专区大版内专家分月排行榜第二
2017年8月 Windows专区大版内专家分月排行榜第二
2017年4月 Windows专区大版内专家分月排行榜第二
2017年3月 Windows专区大版内专家分月排行榜第二
2017年2月 Windows专区大版内专家分月排行榜第二
2017年1月 Windows专区大版内专家分月排行榜第二
2016年11月 Windows专区大版内专家分月排行榜第二
2016年8月 Windows专区大版内专家分月排行榜第二
2016年6月 Windows专区大版内专家分月排行榜第二
2016年3月 Windows专区大版内专家分月排行榜第二
2016年1月 Windows专区大版内专家分月排行榜第二
2015年7月 Windows专区大版内专家分月排行榜第二
2015年3月 Windows专区大版内专家分月排行榜第二
2014年2月 Windows专区大版内专家分月排行榜第二
2014年5月 Windows专区大版内专家分月排行榜第二
2013年11月 Windows专区大版内专家分月排行榜第二
2013年10月 Windows专区大版内专家分月排行榜第二
2013年6月 Windows专区大版内专家分月排行榜第二
2013年3月 Windows专区大版内专家分月排行榜第二
2006年1月 Windows专区大版内专家分月排行榜第二
Bbs7
本版专家分:17136
Bbs5
本版专家分:3156
Bbs7
本版专家分:21943
Bbs5
本版专家分:3156
Bbs7
本版专家分:21943
Bbs7
本版专家分:21943
Bbs5
本版专家分:3636
Blank
蓝花 2006年2月 VC/MFC大版内专家分月排行榜第三
Bbs5
本版专家分:3156
Bbs7
本版专家分:13778
Bbs7
本版专家分:25352
Blank
微软MVP 2005年7月 荣获微软MVP称号
2007年7月 荣获微软MVP称号
2006年7月 荣获微软MVP称号
Bbs3
本版专家分:595
Bbs5
本版专家分:3156
Bbs5
本版专家分:3156
Bbs7
本版专家分:17136
Bbs5
本版专家分:3156
Bbs8
本版专家分:43548
Blank
微软MVP 2005年7月 荣获微软MVP称号
2008年7月 荣获微软MVP称号
2007年7月 荣获微软MVP称号
2006年7月 荣获微软MVP称号
Blank
红花 2005年5月 Windows专区大版内专家分月排行榜第一
2005年4月 Windows专区大版内专家分月排行榜第一
2005年3月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2005年6月 Windows专区大版内专家分月排行榜第二
Bbs7
本版专家分:11822
Bbs6
本版专家分:6852
Blank
红花 2004年11月 硬件使用大版内专家分月排行榜第一
Blank
黄花 2005年1月 硬件使用大版内专家分月排行榜第二
2004年12月 硬件使用大版内专家分月排行榜第二
Bbs9
本版专家分:53749
Blank
红花 2005年9月 Windows专区大版内专家分月排行榜第一
2005年8月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2006年10月 Windows专区大版内专家分月排行榜第二
2006年9月 Windows专区大版内专家分月排行榜第二
2006年8月 Windows专区大版内专家分月排行榜第二
2005年10月 Windows专区大版内专家分月排行榜第二
2004年8月 Windows专区大版内专家分月排行榜第二
2004年7月 Windows专区大版内专家分月排行榜第二
Bbs6
本版专家分:8187
Bbs8
本版专家分:43548
Blank
微软MVP 2005年7月 荣获微软MVP称号
2008年7月 荣获微软MVP称号
2007年7月 荣获微软MVP称号
2006年7月 荣获微软MVP称号
Blank
红花 2005年5月 Windows专区大版内专家分月排行榜第一
2005年4月 Windows专区大版内专家分月排行榜第一
2005年3月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2005年6月 Windows专区大版内专家分月排行榜第二
Bbs5
本版专家分:3089
Blank
微软MVP 2005年7月 荣获微软MVP称号
2006年7月 荣获微软MVP称号
Blank
红花 2005年4月 Web 开发大版内专家分月排行榜第一
Blank
黄花 2005年2月 硬件使用大版内专家分月排行榜第二
Blank
蓝花 2006年5月 Web 开发大版内专家分月排行榜第三
2005年12月 Web 开发大版内专家分月排行榜第三
2005年5月 Web 开发大版内专家分月排行榜第三
2004年10月 Web 开发大版内专家分月排行榜第三
2004年9月 Web 开发大版内专家分月排行榜第三
Bbs6
本版专家分:6852
Blank
红花 2004年11月 硬件使用大版内专家分月排行榜第一
Blank
黄花 2005年1月 硬件使用大版内专家分月排行榜第二
2004年12月 硬件使用大版内专家分月排行榜第二
Bbs7
本版专家分:17136
Bbs6
本版专家分:8187
Bbs7
本版专家分:21943
Bbs7
本版专家分:25352
Blank
微软MVP 2005年7月 荣获微软MVP称号
2007年7月 荣获微软MVP称号
2006年7月 荣获微软MVP称号
Bbs9
本版专家分:89954
版主
Blank
优秀版主 2016年8月优秀大版主
Blank
微软MVP 2018年7月 荣获微软MVP称号
2017年7月荣获微软MVP称号
2016年10月荣获微软MVP称号
2015年10月荣获微软MVP称号
2014年10月荣获微软MVP称号
2013年10月 荣获微软MVP称号
2012年10月 荣获微软MVP称号
2011年10月 荣获微软MVP称号
2009年10月 荣获微软MVP称号
2010年10月 荣获微软MVP称号
2005年9月 荣获微软MVP称号
2008年10月 荣获微软MVP称号
2007年10月 荣获微软MVP称号
2006年10月 荣获微软MVP称号
Blank
红花 2018年6月 Windows专区大版内专家分月排行榜第一
2018年5月 Windows专区大版内专家分月排行榜第一
2018年4月 Windows专区大版内专家分月排行榜第一
2018年2月 Windows专区大版内专家分月排行榜第一
2017年12月 Windows专区大版内专家分月排行榜第一
2017年11月 Windows专区大版内专家分月排行榜第一
2017年10月 Windows专区大板内专家分月排行榜第一
2017年9月 Windows专区大版内专家分月排行榜第一
2017年7月 Windows专区大版内专家分月排行榜第一
2017年6月 Windows专区大版内专家分月排行榜第一
2017年5月 Windows专区大版内专家分月排行榜第一
2016年10月 Windows专区大版内专家分月排行榜第一
2016年7月 Windows专区大版内专家分月排行榜第一
2016年5月 Windows专区大版内专家分月排行榜第一
2016年4月 Windows专区大版内专家分月排行榜第一
2016年2月 Windows专区大版内专家分月排行榜第一
2015年12月 Windows专区大版内专家分月排行榜第一
2015年10月 Windows专区大版内专家分月排行榜第一
2015年5月 Windows专区大版内专家分月排行榜第一
2015年1月 Windows专区大版内专家分月排行榜第一
2016年9月 Windows专区大版内专家分月排行榜第一
2014年4月 Windows专区大版内专家分月排行榜第一
2013年8月 Windows专区大版内专家分月排行榜第一
2013年7月 Windows专区大版内专家分月排行榜第一
2013年5月 Windows专区大版内专家分月排行榜第一
2013年4月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2018年3月 Windows专区大版内专家分月排行榜第二
2018年1月 Windows专区大版内专家分月排行榜第二
2017年8月 Windows专区大版内专家分月排行榜第二
2017年4月 Windows专区大版内专家分月排行榜第二
2017年3月 Windows专区大版内专家分月排行榜第二
2017年2月 Windows专区大版内专家分月排行榜第二
2017年1月 Windows专区大版内专家分月排行榜第二
2016年11月 Windows专区大版内专家分月排行榜第二
2016年8月 Windows专区大版内专家分月排行榜第二
2016年6月 Windows专区大版内专家分月排行榜第二
2016年3月 Windows专区大版内专家分月排行榜第二
2016年1月 Windows专区大版内专家分月排行榜第二
2015年7月 Windows专区大版内专家分月排行榜第二
2015年3月 Windows专区大版内专家分月排行榜第二
2014年2月 Windows专区大版内专家分月排行榜第二
2014年5月 Windows专区大版内专家分月排行榜第二
2013年11月 Windows专区大版内专家分月排行榜第二
2013年10月 Windows专区大版内专家分月排行榜第二
2013年6月 Windows专区大版内专家分月排行榜第二
2013年3月 Windows专区大版内专家分月排行榜第二
2006年1月 Windows专区大版内专家分月排行榜第二
Bbs7
本版专家分:17136
Bbs5
本版专家分:3156
Bbs1
本版专家分:1
Bbs1
本版专家分:1
Bbs1
本版专家分:1
Bbs6
本版专家分:6852
Blank
红花 2004年11月 硬件使用大版内专家分月排行榜第一
Blank
黄花 2005年1月 硬件使用大版内专家分月排行榜第二
2004年12月 硬件使用大版内专家分月排行榜第二
Bbs5
本版专家分:3156
Bbs6
本版专家分:8187
Bbs5
本版专家分:3089
Blank
微软MVP 2005年7月 荣获微软MVP称号
2006年7月 荣获微软MVP称号
Blank
红花 2005年4月 Web 开发大版内专家分月排行榜第一
Blank
黄花 2005年2月 硬件使用大版内专家分月排行榜第二
Blank
蓝花 2006年5月 Web 开发大版内专家分月排行榜第三
2005年12月 Web 开发大版内专家分月排行榜第三
2005年5月 Web 开发大版内专家分月排行榜第三
2004年10月 Web 开发大版内专家分月排行榜第三
2004年9月 Web 开发大版内专家分月排行榜第三
Bbs7
本版专家分:17136
Bbs9
本版专家分:53749
Blank
红花 2005年9月 Windows专区大版内专家分月排行榜第一
2005年8月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2006年10月 Windows专区大版内专家分月排行榜第二
2006年9月 Windows专区大版内专家分月排行榜第二
2006年8月 Windows专区大版内专家分月排行榜第二
2005年10月 Windows专区大版内专家分月排行榜第二
2004年8月 Windows专区大版内专家分月排行榜第二
2004年7月 Windows专区大版内专家分月排行榜第二
Bbs9
本版专家分:89954
版主
Blank
优秀版主 2016年8月优秀大版主
Blank
微软MVP 2018年7月 荣获微软MVP称号
2017年7月荣获微软MVP称号
2016年10月荣获微软MVP称号
2015年10月荣获微软MVP称号
2014年10月荣获微软MVP称号
2013年10月 荣获微软MVP称号
2012年10月 荣获微软MVP称号
2011年10月 荣获微软MVP称号
2009年10月 荣获微软MVP称号
2010年10月 荣获微软MVP称号
2005年9月 荣获微软MVP称号
2008年10月 荣获微软MVP称号
2007年10月 荣获微软MVP称号
2006年10月 荣获微软MVP称号
Blank
红花 2018年6月 Windows专区大版内专家分月排行榜第一
2018年5月 Windows专区大版内专家分月排行榜第一
2018年4月 Windows专区大版内专家分月排行榜第一
2018年2月 Windows专区大版内专家分月排行榜第一
2017年12月 Windows专区大版内专家分月排行榜第一
2017年11月 Windows专区大版内专家分月排行榜第一
2017年10月 Windows专区大板内专家分月排行榜第一
2017年9月 Windows专区大版内专家分月排行榜第一
2017年7月 Windows专区大版内专家分月排行榜第一
2017年6月 Windows专区大版内专家分月排行榜第一
2017年5月 Windows专区大版内专家分月排行榜第一
2016年10月 Windows专区大版内专家分月排行榜第一
2016年7月 Windows专区大版内专家分月排行榜第一
2016年5月 Windows专区大版内专家分月排行榜第一
2016年4月 Windows专区大版内专家分月排行榜第一
2016年2月 Windows专区大版内专家分月排行榜第一
2015年12月 Windows专区大版内专家分月排行榜第一
2015年10月 Windows专区大版内专家分月排行榜第一
2015年5月 Windows专区大版内专家分月排行榜第一
2015年1月 Windows专区大版内专家分月排行榜第一
2016年9月 Windows专区大版内专家分月排行榜第一
2014年4月 Windows专区大版内专家分月排行榜第一
2013年8月 Windows专区大版内专家分月排行榜第一
2013年7月 Windows专区大版内专家分月排行榜第一
2013年5月 Windows专区大版内专家分月排行榜第一
2013年4月 Windows专区大版内专家分月排行榜第一
Blank
黄花 2018年3月 Windows专区大版内专家分月排行榜第二
2018年1月 Windows专区大版内专家分月排行榜第二
2017年8月 Windows专区大版内专家分月排行榜第二
2017年4月 Windows专区大版内专家分月排行榜第二
2017年3月 Windows专区大版内专家分月排行榜第二
2017年2月 Windows专区大版内专家分月排行榜第二
2017年1月 Windows专区大版内专家分月排行榜第二
2016年11月 Windows专区大版内专家分月排行榜第二
2016年8月 Windows专区大版内专家分月排行榜第二
2016年6月 Windows专区大版内专家分月排行榜第二
2016年3月 Windows专区大版内专家分月排行榜第二
2016年1月 Windows专区大版内专家分月排行榜第二
2015年7月 Windows专区大版内专家分月排行榜第二
2015年3月 Windows专区大版内专家分月排行榜第二
2014年2月 Windows专区大版内专家分月排行榜第二
2014年5月 Windows专区大版内专家分月排行榜第二
2013年11月 Windows专区大版内专家分月排行榜第二
2013年10月 Windows专区大版内专家分月排行榜第二
2013年6月 Windows专区大版内专家分月排行榜第二
2013年3月 Windows专区大版内专家分月排行榜第二
2006年1月 Windows专区大版内专家分月排行榜第二
Bbs5
本版专家分:3156
Bbs7
本版专家分:21742
Blank
蓝花 2003年7月 Windows专区大版内专家分月排行榜第三
匿名用户不能发表回复!登录|注册
其他相关推荐
模拟bitset
这并不是真正的bitset,只是用一些简单的c++知识来模仿bitset,所以数据类型跟真正的bitset会有所不同,请留意算术右移跟逻辑右移的问题。#define N 5 const int max_length = 32 * N;//这个数字共有32*5位。从第0位到第max_length-1位,第0位是最低位。 class bitset { private: int a[N];//一个int...
windows编程资料大全
在编写程序的过程中,我遇到了这样的需求:在基于Windows 9x 或 Windows NT4.0 的程序中,要求确定键盘、鼠标处于空闲状态的时间。查询了有关资料文档以后,发现Windows 9x和Windows NT4.0 没有提供API或系统调用来实现这样的功能。但是,在Windows 2000中提供了一个新的函数:GetLastInputInfo(),这个函数使用结构 LASTINPUTINFO 作为参数: LASTINPUTINFO lpi; lpi.cbSize = sizeof(lpi); GetLastInputInfo(&lpi); 调用函数GetLastInputInfo()以后, 结构成员lpi.dwTime 中的值便是自上次输入事件发生以后的毫秒数。这个值也就是键盘、鼠标处于空闲状态的时间。可惜的是这个函数只能在Windows 2000中使用,Windows 9x 或Windows NT4.0不提供此API函数。那么,如何在Windows 9x 或Windows NT4.0中实现GetLastInputInfo()的功能呢?笔者的方法是利用系统钩子对键盘、鼠标进行监控。 Windows中的钩子实际上是一个回调函数,当用户有输入动作的时候,Windows要调用这个函数。比较典型的系统钩子应用就是键盘钩子和鼠标钩子: HHOOK g_hHookKbd = NULL; HHOOK g_hHookMouse = NULL; 在Windows中,一个系统(相对于一个特定进程而言)钩子必须用一个动态链接库(DLL)来实现。不妨将这个动态链接库命名为IdleUI.dll。 这个动态链接库在Windows 9x和Windows NT4.0 中实现了GetLastInputInfo()的功能。IdleUI.dll中有三个函数: BOOL IdleUIInit() void IdleUITerm(); DWORD IdleUIGetLastInputTime(); IdleUIInit()是环境初始化函数,IdleUITerm()是环境清理函数,分别在MFC应用程序的InitInstance() 和 ExitInstance()中调用它们。当用IdleUIInit()做完初始化后,就可以调用第三个函数IdleUIGetLastInputTime()来获取最后一次输入事件后的时钟。从而实现与GetLastInputInfo()一样的功能。程序TestIdleUI.exe是用来测试IdleUI动态库的,程序中调用了IdleUIInit 和 IdleUITerm,同时在程序的客户区中间显示键盘、鼠标空闲的秒数。 void CMainFrame::OnPaint() { CPaintDC dc(this); CString s; DWORD nsec = (GetTickCount() - IdleUIGetLastInputTime())/1000; s.Format( "鼠标或键盘空闲 %d 秒。",nsec); CRect rc; GetClientRect(&rc); dc.DrawText(s, &rc, DT_CENTER|DT_VCENTER|DT_SINGLELINE); } 图一显示了TestIdleUI运行时的情形。 图一 TestIdleUI运行画面 为了连续的显示,TestIdleUI设置刷新定时器间隔为一秒。 void CMainFrame::OnTimer(UINT) { Invalidate(); UpdateWindow(); } 运行TestIdleUI,当键盘和鼠标什么也不做时,可以看到计时器跳动,当移动鼠标或按键时,计时器又恢复到零,这样就实现了对输入设备空闲状态的监控。实现细节请看下面对IdleUI.dll工作原理的描述: 首先调用IdleUIInit ()进行初始化,安装两个钩子:一个用于监控鼠标输入,一个用于监控键盘输入。 HHOOK g_hHookKbd; HHOOK g_hHookMouse; g_hHookKbd = SetWindowsHookEx(WH_KEYBOARD,MyKbdHook,hInst, 0); g_hHookMouse = SetWindowsHookEx(WH_MOUSE,MyMouseHook,hInst, 0); 当用户移动鼠标或按下键盘键时,Windows调用其中的一个钩子并且钩子函数开始记录时间: LRESULT CALLBACK MyMouseHook(int code,WPARAM wp,LPARAM lp) { if (code==HC_ACTION) { // note the tick count g_dwLastInputTick = GetTickCount(); } return ::CallNextHookEx(g_hHookMouse,code,wp,lp); } 如法炮制MyKbdHook。IdleUIGetLastInputTime 返回结果g_dwLastInputTick, 并且IdleUITerm 卸载两个钩子。 这个程序中有一个细节使用了一些技巧:通常,建立一个动态链接库时,链接器将静态数据标记为非共享,也就是说,每一个调用DLL的进程都获得自己的数据拷贝------在本程序中是g_hHookKbd、g_hHookMouse和g_dwLastInputTick。当在整个进程空间中需要且只需要一个这些数据的实例时,这样的静态数据标记就不适合了,为了解决这个问题,必须实现数据共享。为此得把数据放入一个特定的段地址中,然后将它们标记为共享。实现代码如下: #pragma data_seg (".IdleUI") // 可以取任何别的名字 HHOOK g_hHookKbd = NULL; HHOOK g_hHookMouse = NULL; DWORD g_dwLastInputTick = 0; #pragma data_seg () 这段代码告诉链接器将三个变量放到叫“.IdleUI”的数据段中。然后在模块定义文件.DEF中加入下面的代码来共享这个数据段: SECTIONS .IdleUI READ WRITE SHARED // in IdleUI.def IdleUI的头文件和实现文件 面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助。 关于进程的隐藏,98下的例子数不胜数。WinNT/Win2K下的隐藏方法,西祠的高手shotgun在去年的6月就已经在网上发布出实例《揭开木马的神秘面纱<四>》 ,我也多次拜读他的文章,对他的计算机水平及热心帮助朋友的作风十分敬佩。这里也可算是对shotgun的文章的补充与深入介绍吧,好了,闲话少说。 在WinNT下"真正隐藏进程"这一说法,可以讲是根本不可能实现,只要我们的程序是以进程内核的形式运行,都是不可能逃离CTRL+ALT+DEL的法眼。那么奇怪了,这岂不是与我们的标题《WinNT & Win2K下实现进程的完全隐藏》相矛盾吗?是的,实际上应该是:以非进程方式执行目标代码,而逃避进程查看器的检查,从而达到"进程隐藏"的目的。 我们这里用的,是在宿主进程中,以线程的方式执行我们的代码。实现起来非常简单。首先,我们先建立一个不执行任何语句的线程 DWORD stdcall ThreadProc(LPVOID *lpVoid){ return 0; } 然后,将线程代码拷备至宿主进程所能够执行的任何地方(即页面属性为PAGGE_EXECUTE_READWRITE),如:共享内存影射区、宿主进程内。这里我们选择宿主进程,拷备的时侯,我们需要先在宿主进程中使用VirtualAllocEx函数申请一段内存,然后再使用WriteProcessMemory将线程体写入宿主进程中。 以上工作完成后,我们便可CreateRemoteThread函数激活其执行。下面给出一个完整的例子 //远程线程执行体 DWORD __stdcall ThreadProc (void *lpPara){ return 0; } int main(int argc, char* argv[]){ const DWORD THREADSIZE=1024*4;//暂定线程体大小为4K,实际上没这么大,稍后我将会介绍 DWORD byte_write; //获得指定进程ID句柄,并设其权限为PROCESS_ALL_ACCESS,992是宿进程的ID号,获取ID号的方法这里我就不多讲了 HANDLE hWnd = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,992); if(!hWnd) return 0; void *pRemoteThread =::VirtualAllocEx(hWnd,0,THREADSIZE,MEM_COMMIT| MEM_RESERVE,PAGE_EXECUTE_READWRITE);//申请 if(!pRemoteThread) return 0; if(!::WriteProcessMemory(hWnd,pRemoteThread,&ThreadProc,THREADSIZE,0))//写入进程 return 0; //启动线程 HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,NULL,0,&byte_write); if(!hThread){ //还有内存分配未释放 return 0; } return 0; } 到这里,对于隐藏的方法就算告一段落,相信看过的朋友对这个思路有个非常明确的概念了吧。 在理解隐藏的方法后,我们着重开始写线程的执行部分了。如下: DWORD __stdcall ThreadProc(void *lpPara){ MessageBox(NULL,"hello","hello",0); return 0; } 编译执行后,你会发现出现一个非法操作错误,为什么呢?在我们以段页式内存管理的win2K操作系统中,编译时会把所有的常量编译在PE文件的.data节中,而代码段则在.text中,所以,我们拷备到宿主进程中的代码是在.text中的代码,MessageBox(NULL,(char *)指针,p,0);所指向的地址是本进程的内存虚拟地址。而在宿主进程中是无法访问的。解决的方法很简单,按旧照搬的将"hello"也拷备到目标进程中,然后再引用。同理,MessageBox函数地址编译时,也是保存在.Import中,写过Win2k病毒的朋友都知道,所有常量与函数入口地址都需在代码段定义与得出,我们这里也与他有点类似。言归正传,同样情况我们也把函数的入口地址一起写入目标进程中。 //先定义参数结构 typedef struct _RemotePara{//参数结构 char pMessageBox[12]; DWORD dwMessageBox; }RemotePara; //赋值 RemotePara myRemotePara; ::ZeroMemory(&myRemotePara,sizeof(RemotePara)); HINSTANCE hUser32 = ::LoadLibrary ("user32.dll"); myRemotePara.dwMessageBox =(DWORD) ::GetProcAddress (hUser32 , "MessageBoxA"); strcat(myRemotePara.pMessageBox,"hello\0"); //写进目标进程 RemotePara *pRemotePara =(RemotePara *) ::VirtualAllocEx (hWnd ,0,sizeof(RemotePara),MEM_COMMIT,PAGE_READWRITE);//注意申请空间时的页面保护属性 if(!pRemotePara) return 0; if(!::WriteProcessMemory (hWnd ,pRemotePara,&myRemotePara,sizeof myRemotePara,0)) return 0; //启动进将参数传递进入 HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,pRemotePara,0,&byte_write); if(!hThread){ return 0; } 好了,就这么简单,下在给出一个弹出一个MessageBox的实例: // RemoteThread.cpp : Defines the entry point for the console application. // #include "stdafx.h" typedef struct _RemotePara{//参数结构 char pMessageBox[12]; DWORD dwMessageBox; }RemotePara; //远程线程 DWORD __stdcall ThreadProc (RemotePara *lpPara){ typedef int (__stdcall *MMessageBoxA)(HWND,LPCTSTR,LPCTSTR,DWORD);//定义MessageBox函数 MMessageBoxA myMessageBoxA; myMessageBoxA =(MMessageBoxA) lpPara->dwMessageBox ;//得到函数入口地址 myMessageBoxA(NULL,lpPara->pMessageBox ,lpPara->pMessageBox,0);//call return 0; } void EnableDebugPriv();//提升应用级调试权限 int main(int argc, char* argv[]){ const DWORD THREADSIZE=1024*4; DWORD byte_write; EnableDebugPriv();//提升权限 HANDLE hWnd = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,992); if(!hWnd) return 0; void *pRemoteThread =::VirtualAllocEx(hWnd,0,THREADSIZE,MEM_COMMIT| MEM_RESERVE,PAGE_EXECUTE_READWRITE); if(!pRemoteThread)return 0; if(!::WriteProcessMemory(hWnd,pRemoteThread,&ThreadProc,THREADSIZE,0)) return 0; //再付值 RemotePara myRemotePara; ::ZeroMemory(&myRemotePara,sizeof(RemotePara)); HINSTANCE hUser32 = ::LoadLibrary ("user32.dll"); myRemotePara.dwMessageBox =(DWORD) ::GetProcAddress (hUser32 , "MessageBoxA"); strcat(myRemotePara.pMessageBox,"hello\0"); //写进目标进程 RemotePara *pRemotePara =(RemotePara *) ::VirtualAllocEx (hWnd ,0,sizeof(RemotePara),MEM_COMMIT,PAGE_READWRITE);//注意申请空间时的页面属性 if(!pRemotePara) return 0; if(!::WriteProcessMemory (hWnd ,pRemotePara,&myRemotePara,sizeof myRemotePara,0))return 0; //启动线程 HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,pRemotePara,0,&byte_write); if(!hThread){ return 0; } return 0; } //提升权限 void EnableDebugPriv( void ) { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if ( ! OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ) return; if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ){ CloseHandle( hToken ); return; } tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ) CloseHandle( hToken ); } 好了,程序编译执行后会在进程号为992的进程中创建一线程,弹出hello对话框。是不是非常简单呢! 这里有几个地方需要注意的: 1、远程线程在宿主进程中申请空间时,空间大小的确定了是我一直无法解决的问题。我曾使用两个贴近一起的线程,以线程间的距离大小,并加上参数大小,作为申请空间时,仍然会出现非法操作,如下: static void StartThread (LPVOID *lpPara){ return ; } static void EndThread(LPVOID *lpPara){ return; } 然后使用DWORD dwLenght = (DWORD)((char *)&StartThread - (char *)&EndThread);//得到StartThread线程代码长度, dwLenght += sizeof(ThreadPara); 仍会出现非法操作让我很迷惑。在win2k中,线程的默认堆栈的页大小是4KB,这里我在为线程申请内存时,申请的大小暂时使用一个常数,始终为4KB的倍数,选取时尽量取大,在线程可成功运行后,再一点点改小。办法是笨了点,如这里的朋友有更好的方法,请不吝赐教。 2、什么时侯,什么参数是需要从外部传递进来的呢?我这里并没有一个十分有力的答案,我的理解是:PE文件中除了.text节以外的所有节,均需使用外部参数传递到线程中使用,如:.rsrc、.data、rdata等其他的15个节。在我们实际编写的过程中,初学者并不知道我们的代码会编译在什么地方,这个时侯,我们可以在运行的时侯ALT + 8(VC中快捷键)反编译过来,一般有lea eax p、push offset p等取地址语句,这个时侯,我们大都需要以参数传递进来。所以,大家在编写的时侯,一定要注意参数,因为线程的执行是在别的进程中,一个普通权限的应用程序是无法跨越进程来调试其他进程的。包括VC,也无法调试我们的远程线程,熟悉汇编的朋友,可用softice调试,这需要一定的功底。 3、权限,这一点很重要,shotgun在这方面也介绍得很清楚了,网上相关的文章也很多,我就不多说了。文中的EnableDebugPriv函数可使本进程在internet、winLogin、lsass等进程中创建线程。win2k的进程查看器无法将其杀除。 4、进程ID获方法较多,如:EnumProcesses、CreateToolhelp32Snapshot/Process32First/Process32Next、NtQuerySystemInformation等函数均可,为减少代码,例子中的进程ID是直接在进程查看器中得到的。 最后,我们再回到shotgun的文章中,这时侯我们因已经非常清楚他的方法中为何会多出一个DLL文件了。远程线程的线程体本身就是LoadLibrary函数,即,线程的入口地址就是LoadLibrary的入口地址,这是系统Kernel32.dll中的函数,任何进程都可调用。线程中使用LoadLibrary函数将我们的DLL加载到系统空间内,线程一执行,我们的DLL就开始工作了。线程执行结束后,别忘了使用VirtualFreeEx将其申请的内存区释放。 两种方法一比较,很明显: 1、在使用DLL时,创建十分简单,也不需要太多的操作系统与内存操作知识,并可直接调试DLL文件。实现起来比较简单。 2、直接拷备到进程中的方法稍为复杂一点,一不小心,很容易出现非法操作。当然,也去掉那了个让人讨厌DLL文件。程序执行后,很难找到他的来源地,是除了病毒以外的木马隐藏的首选方法。 这里我大量参考了nongmin.cn(农民)程序的源码,他的程序对我的帮助非常大。虽然未有谋面,但对他的计算机水平与作为十分的敬佩,并尊从他的作风,以后我所写的所有非商业软件或小代码,均以源码形式出现。这里写得有点乱,希望对大家能够有所帮助,愿与所有爱好计算机,从事计算机工作的朋友们共勉。 东西太多了,都是自己从不同的网站上下载下来的。
Windows 95/98 in DOSBOX vbemp 9x, S3 Trio 32/64 PCI驱动
参考文章《DOS的古董美》 摘选段落: 有了以上的工具,后就可以开始安装操作系统了。除DOSBOX仅支持 DOS 和 Windows 3.x 外,其它工具基本上支持各种操作系统的安装。具体安装过程序就不展开了,对于 DOSBOX,配置命令比较容易掌握,相当于使用DOS系统,用它来安装 Windows 3.x 就像在DOS安装其它程序一样。使用内置的 Mount 来映射安装目录来一个当作C盘的目录即可以运行 Windows 3.x 安装程序。DOSBOX 也可以安装Windows 95,借用Bochs的磁盘工具bximage来创建用于安装Windows95的系统盘,再用这个盘来启动就可以了。D-Fend是一个DOSBOX配置的图形界面工具,如果不熟悉DOSBOX则可以使用它来帮助配置。当然不用配置也可以直接运行 DOSBOX,像以下这条命令就可以开始无调试窗口运行,并且将 watcom 目录加载为 C 盘,同时还设置了 CPU 的模拟速度: DOSBox.exe -noconsole -c "mount c c:\watcom" -c "config -set 'cpu cycles=10000'" DOSBOX安装 Windows95B OSR2.1 步骤参考,安装光盘已经上传。注意imgmount命令执行方式选择很重要,不正确的参数可能导致磁盘不被识别。本机使用官方的0.74版本,系统为 Windows 7 64位。DosBox-X是不错的版本,在GitHub上有下载,还有DosBox Svn Daum 版。借用Bochs的磁盘工具bximage创建一个160MB的flat模式硬盘映像c.img,得到参数CHS=325/16/63,扇区大小使用默认的512字节,将这些参数用来设备DOSBOX的映像装载命令,如下如果第一条命令装入磁盘无法识别,可以替换第二条试试。然后,通过Windows 98引导盘来分区、格式化,最后安装系统到映像上,最后修改DOSBOX为硬盘启动。期间可能需要用到Bootice这个工具来修改引导区的信息。安装完后,进行系统可能会花屏,没有系统更新一下默认的S3显卡驱动就好了,下载地址在后面使用S3 Trio 32/64 PCI驱动。不更新驱动,直接使用16色模式也不会花屏。如果使用 DOSBox Daum,还可以加载显卡BIOS,S3 Trio 64 BIOS。 # 1. load image into dosbox IMGMOUNT 2 .\bochs\c.img -t hdd -fs none -size 512,63,16,325 IMGMOUNT c .\bochs\c.img -t hdd # 2. load floppy into dosbox and boot it IMGMOUNT a .\bochs\win98.img -t floppy boot .\vpc\win98.img -l a # 3. use fdisk to create primary partition & format it fdisk format /q /v:win95 c: # 4. mount windows cdrom or image & setup & boot windows # SMARTDRV.EXE & #13895-OEM-0000716-68627 may be useful IMGMOUNT D .\win95b_osr2.1.iso -t iso boot -l c ![getting_start_95.png][111] 提示,可以用winimage工具来管理img磁盘映射,也可以用Windows系统自带的diskpart磁盘工具来加载img磁盘映射,通过计算机管理中的磁盘页面操作,或都通过命令行来实现,以下是两个脚本文件分别用来加载和卸载,保存为txt文件就可以了,使用 diskpart /s 命令来执行脚本: REM diskpart /s mount.txt select vdisk file="c:\win3x\vpc\d3.vhd" attach vdisk REM diskpart /s unload.txt select vdisk file="c:\win3x\vpc\d3.vhd" detach vdisk
一个不留意,又是4篇,不好意思
作者: 对方辩友请回[34646266] 2001-07-23 07:56:08 [回复] 我很虚伪,我承认,哈哈哈哈,我就灌了,你就删除吧,天使 哪怕很压抑 哪怕痛苦多 哪怕没结果 请你要相信 我没有欺骗你 永远不会 公元2001年7月4日我解脱了 公元2001年7月13日申奥成功了 能够平静的看着你 心中竟是莫名巨大的喜悦 如此而已 作者:
Windows 正在配置 Microsoft Office Professional Edition 2003
最近重装了系统,之后发现access 2003 不能用了,说是在进行配置工作,点确定,就没了,之后来回试了几次都是这样,卸了重装还是这样,晕了!差了一些资料,终于让我找到了,先拿来分享下:症状在安装 Microsoft Office 2003 Service Pack 2 (SP2) 后,Microsoft Office Access 2003 可能无法正常启动。您可能会收到一条与以下内容类似的消息:Windows 正在配置 Microsoft Office Professional Edition 200
discuz 获取所有版块并按父子层级排版
discuz 本身已将所有版块按照父子层级写入缓存中,我们需要做的是将其遍历数来; loadcache('forums');//获取所有版块 foreach($_G['cache']['forums'] as $fid => $forum) {//遍历版块 $settings[] = array($fid, ($forum['type'] == 'forum' ? str_repeat('
PostgreSQL 9X之巅(原书第2版)
新书备忘PostgreSQL 9X之巅(原书第2版)作者:[美] 艾博拉·艾哈迈德(Ibrar Ahmed) 格利高里·史密斯(Gregory Smith) 著译者:范翊 彭煜玮 唐成 等译丛书名:数据库技术丛书出版日期 :2018-04-27ISBN:978-7-111-59619-6定价:89.00元纸质书购买扩展信息图书简介图书特色图书前言专家评论上架指导封底文字作者简介译者序推荐序图书目录...
discuz!主题列表页显示每个帖子的版块名
如何让discuz!主题列表页显示每个帖子的版块名?很多同学可能不解,为什么要这么做?当我在A版块时这些帖子当然都属于A版块了,这个一看就知道了,何必加这一项?其实不然,至少全局置顶的帖子就看不出属于哪个版块,更重要的是这么做有利于SEO,可以增加各个版块的权重。 下面以discuz! x2.5为例讲解如何让discuz!主题列表页显示每个帖子的版块名,此方法不适用其它版本的discuz!
Windows for WorkGroup 3.11 简体中文版
Windows for WorkGroup 3.11 简体中文版
bochs安装win98
本来是要写在上一个文章里的,没想到报服务器错误。。。先存在这里。参考文章 install windows 98下iso的地方, 解压缩: 7za X xxx.7z配置文件:############################################################### # Configuration file for Bochs ###################
关闭