最简单的,调用 DOS 命令,分别开2个窗,同时工作:
#include <stdio.h>
int main()
{
system( "start \"a1\" a1.exe"); // 窗名a1, 运行 a1.exe
system( "start \"a2\" a2.exe"); // 窗名a2, 运行 a2.exe
return 0;
}
==================
把两个程序做成2 个线程,或一个做主函数,一个做函数,共享标准输入输出资源
c++ 程序:
#include <iostream>
#include <windows.h>
using namespace std;
HANDLE hMutex; //公用资源句柄
int x1=0,x2=0;
DWORD WINAPI Fun(LPVOID lpParamter)
{
while(1) {
WaitForSingleObject(hMutex, INFINITE);
cout<<"intput x1:"<<endl; // 第1个程序嵌入这里
cin >> x1;
cout << "x1="<<x1<< endl;
Sleep(1000);
ReleaseMutex(hMutex);
}
}
int main()
{
hMutex = CreateMutex(NULL, FALSE, "screen");
HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);
CloseHandle(hThread);
while(1) {
WaitForSingleObject(hMutex, INFINITE);
cout<<"input x2:"<<endl; //第2个程序嵌入这里
cin >> x2;
cout << "x2="<<x2<<endl;
Sleep(2000);
ReleaseMutex(hMutex);
}
return 0;
}
----
模拟2个线程,交替通过申请获得 标准输入输出设备 使用 权。
追问请问一下,第二个方法中,程序嵌入能否直接加入未知程序(就是不重新复制粘贴源代码之类)?(输入输出格式已经统一的情况下)求教方法。谢谢!
追答要改写原来程序内容,把它作为 本程序的一部分。有冲突的变量名字要换掉。
例如,程序1,写成函数 A,程序2,写成函数 B,
在嵌入处 1 调用 funA(...);
在嵌入处 2 调用 funB (...);
当然,funA,funB 里面可以有 各自 自己的原来的 其它函数的 调用。