社区
C++ Builder
帖子详情
关于捕获Dos窗口!!!
city1000
2002-04-23 10:43:24
比如我有一个Dos窗口程序,我怎么在C++ Builder里面实时的捕获
dos窗口的输出信息,并把它显示在我的Memo框中呢?就像EditPlus
中的捕获dos输出的效果一样?
...全文
24
4
打赏
收藏
关于捕获Dos窗口!!!
比如我有一个Dos窗口程序,我怎么在C++ Builder里面实时的捕获 dos窗口的输出信息,并把它显示在我的Memo框中呢?就像EditPlus 中的捕获dos输出的效果一样?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
invalid
2002-04-23
打赏
举报
回复
查查以前的帖子:
参考一下BCB的例子,Wintools,有代码.参见下面:
bool TForm1::IsWindowsNT()
{
OSVERSIONINFO osv;
osv.dwOSVersionInfoSize = sizeof(osv);
GetVersionEx(&osv);
return (osv.dwPlatformId == VER_PLATFORM_WIN32_NT);
}
void __fastcall TForm1::RunBtnClick(TObject *Sender)
{
int FBreak;
String TempFile;
Screen->Cursor = crHourGlass;
Application->ProcessMessages();
// If NT do security stuff
SECURITY_DESCRIPTOR sd;
SECURITY_ATTRIBUTES sa;
LPSECURITY_ATTRIBUTES lpsa = NULL;
if (IsWindowsNT()) {
InitializeSecurityDescriptor(&sd,
SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, true, NULL, false);
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = true;
sa.lpSecurityDescriptor = &sd;
lpsa = &sa;
}
// Create the Pipe and get r/w handles
HANDLE hReadPipe;
HANDLE hWritePipe;
assert(CreatePipe(&hReadPipe,
&hWritePipe,
lpsa,
2500000));
// initialize STARTUPINFO struct
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW |STARTF_USESTDHANDLES;
si.wShowWindow = SW_HIDE;
si.hStdOutput = hWritePipe;
si.hStdError = hWritePipe;
PROCESS_INFORMATION pi;
assert(hWritePipe);
// Run the cmdLine tool
memo1->Lines->Add("Working.....");
Application->ProcessMessages();
if( CreateProcess(NULL,
CmdEdit->Text.c_str(),
NULL,//security
NULL,// security
TRUE,//inherits handles
0,
0,
0,
&si,
&pi)
){
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, 90000);
// read from the pipe and put in richedit
assert(hReadPipe);
DWORD BytesRead; //unsigned long
char dest[4000];
bool RdLoopDone = false;
memo1->Lines->Clear();
FBreak = 1;
if (ExitCode) Screen->Cursor = crDefault;
while (!RdLoopDone) {
memset(dest, 0, 4000);
assert(ReadFile(hReadPipe, &dest, sizeof(dest), &BytesRead, NULL));
memo1->Lines->Add(String(dest));
if (BytesRead < 4000) RdLoopDone = true;
if (FBreak > 150) RdLoopDone = true;
FBreak++;
}
memo1->Lines->Add("FINISHED!");
}//if CreateProcess
else{
Screen->Cursor = crDefault;
memo1->Lines->Add("FINISHED!");
ShowMessage("Unable to execute program.");
}
// Process cleanup
CloseHandle(hReadPipe);
CloseHandle(hWritePipe);
CloseHandle(pi.hProcess);
memo1->Perform(EM_SETSEL,0,0);
Screen->Cursor = crDefault;
}
kimryo
2002-04-23
打赏
举报
回复
有点像
dir>c:\dir.txt
命令。
kimryo
2002-04-23
打赏
举报
回复
有点像
dir>c:\dir.txt
命令。
kimryo
2002-04-23
打赏
举报
回复
用管道(Pipe)重定向输出,再用CreateProcess启动一个SW_HIDE的CMD窗体.
SnagIt是Windows应用程序,可以捕捉、编辑、共享您计算机屏幕上的一切。 一个非常著名的优秀屏幕、文本和视频
捕获
、编辑与转换软件。可以
捕获
Windows屏幕、
DOS
屏幕;RM电影、游戏画面;菜单、
窗口
、客户区
窗口
、最后一个激活的
窗口
或用鼠标定义的区域。图象可保存为BMP、PCX、TIF、GIF或JPEG格式,也可以存为视频动画。使用JPEG可以指定所需的压缩级(从1%到99%)。可以选择是否包括光标,添加水印。另外还具有自动缩放,颜色减少,单色转换,抖动,以及转换为灰度级。
可以
捕获
Windows屏幕、
DOS
屏幕;RM电影、游戏画面;菜单、
窗口
、客户区
窗口
、最后一个激活的
窗口
或用鼠标定义的区域。图象可保存为BMP、PCX、TIF、GIF或JPEG格式,也可以存为视频动画。使用JPEG可以指定所需的压缩级...
C# 实现的实时获取
DOS
输出结果程序
实时获取
DOS
的输出结果,显示在C#
窗口
中。 为了避免阻塞主线程,把执行过程放在一个新的Thread...CSDN上有个程序,可以
捕获
dos
输出,但执行过程中
窗口
会”假死“,这里用新的线程避免了假死。可以在vs.net 2005上运行
捕获
Windows屏幕
可以
捕获
Windows屏幕、
DOS
屏幕;RM电影、游戏画面;菜单、
窗口
、客户区
窗口
、最后一个激活的
窗口
或用鼠标定义的区域。图象可保存为BMP、PCX、TIF、GIF、PNG或JPEG格式,也可以存为视频动画。使用JPEG可以指定所需的...
屏幕、文本和视频
捕获
与转换程序 屏幕、文本和视频
捕获
与转换 绿色版 附带注册码
可以
捕获
windows屏幕、
dos
屏幕;rm电影、游戏画面;菜单、
窗口
、客户区
窗口
、最后一个激活的
窗口
或用鼠标定义的区域。图象可被存为bmp、pcx、tif、gif或jpeg格式,也可以存为系列动画。使用jpeg可以指定所需的压缩...
SnagIt 8.2.3 屏幕、文本和视频
捕获
与转换程序
抓图软件下载后可以
捕获
Windows屏幕、
DOS
屏幕;RM电影、游戏画面;菜单、
窗口
、客户区
窗口
、最后一个激活的
窗口
或用鼠标定义的区域。图象可被存为BMP、 PCX、TIF、GIF、JPEG、PDF。也可以存为系列动画。使用JPEG...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章