cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1312|回复: 4

获取DOS窗口信息的方法

[复制链接]
发表于 2009-1-15 00:22:13 | 显示全部楼层 |阅读模式
网上有相似的代码,现在整理一下大家分享
采用建立管道的方法,需要添加文件windows.h
//create pipe
{
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]HANDLE hReadPipe, hWritePipe;
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]SECURITY_ATTRIBUTES sa;

[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]sa.nLength
=
sizeof(SECURITY_ATTRIBUTES);
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]sa.lpSecurityDescriptor
= NULL; //使用系统默认的安全描述符
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]
sa.bInheritHandle = TRUE; //一定要为TRUE,不然句柄不能被继承。
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]
CreeatePipe(&hReadPipe,&hWritePipe,&sa,0); //创建pipe内核对象,设置好hReadPipe,hWritePipe.
}
//create process
{
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  STARTUPINFO si;
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  PROCESS_INFORMATION pi;
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  si.cb
=
sizeof(STARTUPINFO);
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  GetStartupInfo(
&si);
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  si.hStdError
= hWritePipe; //设定其标准错误输出为hWritePipe
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]
  si.hStdOutput = hWritePipe; //设定其标准输出为hWritePipe
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]
  si.wShowWindow = SW_HIDE;
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  si.dwFlags
= STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  
if (!CreateProcess(NULL,"c:\\windows\\system32\\cmd.exe/c dir /?"
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img][img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]        ,NULL,NULL,TRUE,NULL,NULL,NULL,
&si,&pi)) [img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]{
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]        MessageBox(
"Error on CreateProcess()");
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]        
return;
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  }

[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  CloseHandle(hWritePipe);

}
//get dos info
{
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img][img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]char buffer[4096] =
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]{0};
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  DWORD bytesRead;
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img][img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  
while (1) [img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]{
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]      
if (ReadFile(hReadPipe,buffer,4095,&bytesRead,NULL) == NULL)//从hReadPipe中读出数据.
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]

break;
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]      Sleep(
200);
[img]mhtml:file://D:\数据资料\web\Windows中的管道技术 - Shipfi (春暖花开,开满我的阳台) - 博客园.mht![/img]  }

}
 楼主| 发表于 2009-1-15 00:27:56 | 显示全部楼层
刚才的太乱了重发一个
//create pipe
{
SECURITY_ATTRIBUTES sa;   
HANDLE     hReadPipe, hWritePipe;

sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hReadPipe, &hWritePipe, &sa, 0))
{
  MessagePopup("Error", "Error On CreatePipe()");
  return -1;
}
}
//create process
{
STARTUPINFO   si;  
PROCESS_INFORMATION pi;

si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWritePipe;
si.hStdOutput = hWritePipe;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW |STARTF_USESTDHANDLES;

if (!CreateProcess(NULL, "c:\\windows\\system32\\cmd.exe/c dir /?",NULL,NULL,TRUE, DETACHED_PROCESS, NULL,NULL,&si,&pi))
{
  MessagePopup("Error", "Error on CreateProcess()");
  return -1;
}
CloseHandle(hWritePipe);
}
//read info
{
while (1)
{
  if (ReadFile(hReadPipe, buffer, 4095, &bytesRead, NULL) == 0) break;   
  Sleep(200);         
}
CloseHandle(hReadPipe);   
}

评分

参与人数 1经验 +8 收起 理由
netcreature + 8 我很赞同

查看全部评分

发表于 2009-1-15 09:26:17 | 显示全部楼层
发表于 2009-1-15 19:50:23 | 显示全部楼层
什么东西啊!看不明白,看来要多多努力加油啊!
发表于 2009-4-12 16:15:21 | 显示全部楼层
请问大家:怎样在VB环境下获得DOS窗口信息?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-20 13:00 , Processed in 1.211731 second(s), 11 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表