如何重定向DOS窗口里的输出内容至我的程序界面里?
BOOL CMyTestDlg::RunAndRedirectOutput(CString CommandLine, CString OutputFile)
{
STARTUPINFO StartupInfo;
PROCESS_INFORMATION ProcessInfo;
SECURITY_ATTRIBUTES SecAtrrs;
HANDLE hAppProcess, hAppThread, hOutputFile;
TRY
{
memset(&SecAtrrs, 0, sizeof(SecAtrrs));
SecAtrrs.nLength = sizeof(SecAtrrs);
SecAtrrs.lpSecurityDescriptor = NULL;
SecAtrrs.bInheritHandle = TRUE;
hOutputFile = CreateFile( (LPCTSTR)OutputFile,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
&SecAtrrs,
CREATE_ALWAYS,
FILE_ATTRIBUTE_TEMPORARY,
0);
if (hOutputFile != INVALID_HANDLE_VALUE)
{
memset(&StartupInfo, 0, sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);
StartupInfo.dwFlags = NULL;//STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
StartupInfo.wShowWindow = SW_NORMAL; //HIDE;
StartupInfo.hStdOutput = hOutputFile;
StartupInfo.hStdError = hOutputFile;
if(CreateProcess(NULL,
(LPTSTR)(LPCTSTR)CommandLine,
NULL,
NULL,
TRUE,
CREATE_NEW_CONSOLE|REALTIME_PRIORITY_CLASS,
NULL,
NULL,
&StartupInfo,
&ProcessInfo))
{
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
hAppProcess = ProcessInfo.hProcess;
hAppThread = ProcessInfo.hThread;
}
}
}
CATCH(CException, e)
{
char lpError[1000];
int nMaxError = 1000;
e->GetErrorMessage(lpError, nMaxError);
MessageBox(lpError);
}
END_CATCH
if (hOutputFile) CloseHandle(hOutputFile);
if (hAppThread) CloseHandle(hAppThread);
if (hAppProcess) CloseHandle(hAppProcess);
return TRUE;
}
相关推荐
(源码)基于Arduino和PlatformIO的Tony Space IoT教学样板.zip
# 基于Arduino和PlatformIO的Tony Space IoT教学样板 ## 项目简介 本项目是一个基于Arduino和PlatformIO的IoT教学样板,旨在帮助开发者快速上手使用Tony库或硬件接口进行LED灯的控制。通过简单的代码示例,展示了如何初始化和控制LED灯的亮灭状态。 ## 项目的主要特性和功能 LED控制使用Tony库或硬件接口控制LED灯的亮灭状态。 基础教学提供了一个基础的LED闪烁示例,适合初学者学习如何使用特定的库或硬件接口。 生产准备使用PlatformIO扩展的VS Code进行开发,适合构建生产就绪的应用。 ## 安装使用步骤 1. 安装PlatformIO确保已在VS Code中安装了PlatformIO扩展。 2. 导入项目将本项目的源码文件导入到VS Code中。 3. 配置硬件根据项目需求,配置好Arduino硬件和Tony库或硬件接口。
hive的安装与配置
hive的安装与配置详解 hive 中mysql的配置
(源码)基于Arduino和PlatformIO的嵌入式IoT核心平台.zip
# 基于Arduino和PlatformIO的嵌入式IoT核心平台 ## 项目简介 本项目是一个综合性的嵌入式IoT开发平台,旨在简化基于Arduino框架的IoT应用开发。通过集成PlatformIO和Visual Studio Code,开发者可以高效地管理代码编译、库下载、多板管理、代码下载和调试等任务。项目中包含多个示例应用,帮助开发者快速上手并测试不同的通信技术。 ## 项目的主要特性和功能 集成开发环境使用PlatformIO和Visual Studio Code,提供一站式开发体验。 多板支持主要支持ESP32模块,但可扩展至其他平台。 示例应用包含多个示例应用,涵盖MQTT、BLE、CoAP等通信技术。 代码管理集中管理代码和文档,方便开发者快速测试和部署。 调试工具支持代码调试和串口监控,提高开发效率。 ## 安装使用步骤 ### 1. 安装依赖
(源码)基于Arduino的物联网自动停车系统.zip
# 基于Arduino的物联网自动停车系统 ## 项目简介 本项目是在Arduino设备上使用Arduino IoT Cloud或PlatformIO实现人工神经网络(ANN)的示例。人工神经网络用于从红外传感器获取数据,并根据推理结果控制LED灯。该项目展示了如何将人工神经网络集成到基于传感器的Arduino设备应用中。 ## 项目的主要特性和功能 传感器数据读取通过4个红外传感器读取数据。 神经网络推理使用具有3层(输入、隐藏、输出)的人工神经网络进行推理,输入层有4个神经元(与传感器数量相同),隐藏层有8个神经元,输出层有4个神经元,学习率为0.1,激活函数为Sigmoid。 LED灯控制根据神经网络的推理结果控制4个红灯和4个绿灯。若推理结果大于0.5,红灯亮起否则,绿灯亮起。 ## 安装使用步骤 ### 硬件连接 1. 红外传感器将传感器1连接到Pin 2,传感器2连接到Pin 3,传感器3连接到Pin 4,传感器4连接到Pin 5。
(源码)基于Arduino和PlatformIO的无刷直流电机控制库.zip
# 基于Arduino和PlatformIO的无刷直流电机控制库 ## 项目简介 SimpleFOClibrary 是一个跨平台的开源库,旨在简化无刷直流电机(BLDC)和步进电机的场向控制(FOC)算法实现。该库基于Arduino IDE和PlatformIO开发,支持多种微控制器架构,如Arduino、STM32、ESP32等,适用于各种电机和传感器组合。 ## 主要特性和功能 跨平台支持支持Arduino、STM32、ESP32等多种微控制器架构。 多种电机和传感器支持支持BLDC电机和步进电机,以及多种传感器(如霍尔传感器、磁性编码器、光学编码器等)。 简单易用的API提供易于配置和调用的API,方便用户快速上手。 模块化设计每个硬件组件(如电机、传感器、驱动器)都以C++对象的形式封装,便于理解和扩展。 实时监控和调试内置通信和监控功能,方便用户实时调试和优化控制参数。


