高手请进:关于Windows控制台

lr_eagle 2004-12-28 05:53:19
TCHAR ch[50];
string strInput = "\nusers\n";
DWORD nwrt, d;
DWORD dw;
BOOL bb;
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);

//用WriteFile错误,报句柄无效
//BOOL b = WriteFile(hInput, strInput.c_str(), strInput.size(), &nwrt, NULL);

//用WriteConsoleInput成功,nwrt返回7
BOOL b = WriteConsoleInput(hInput, (INPUT_RECORD *)(strInput.c_str()),
strInput.size(),&nwrt);
//用WriteConsole同WriteFile
//BOOL b = WriteConsole(hInput, strInput.c_str(), strInput.size(), &nwrt, NULL);

//GetNumberOfConsoleInputEvents返回0
BOOL bb = GetNumberOfConsoleInputEvents(hInput, &dw);

//等待
BOOL bbb = ReadConsole(hInput, chrd, 50, &rd, NULL);

各位高手,为什么WriteFile就错误,是句柄没有写权限吗?
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
换成
HANDLE hInput = GetStdHandle(STD_OUTPUT_HANDLE);
的话,下面的函数都能执行,能显示在控制台上

期待中~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lr_eagle 2004-12-28
  • 打赏
  • 举报
回复
WriteFile使用的句柄,不必用CreateFile创建
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
换成
HANDLE hInput = GetStdHandle(STD_OUTPUT_HANDLE);
的话,下面的函数都能执行,能显示在控制台上
chetian1999 2004-12-28
  • 打赏
  • 举报
回复
----------------------------------------
相信自己,相信明天!

快给我分,不然我抢的啦^_^
----------------------------------------
时光.漫步
danyueer 2004-12-28
  • 打赏
  • 举报
回复
WriteFile使用的句柄,必须是用CreateFile创建的,当然,CreateFile这个API是可以打开几乎任何I/O对象的,你可以用CreateFile尝试一下。

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧