各位兄弟,需要你们的时候到了。问题一:现有一个可执行A.exe程序(必须从“开始”-》“运行”-》cmd才能启动),并且该程序执行是为了利用B.txt文件分析另一个C.txt文件(在cmd中执行格式是: A B.txt -k C.txt) ,而现在我需要先执行另一个D.exe程序,让D调用A,然后自动写入A B.txt -k C.txt ,怎么做?注意是cmd格式的问题二:分布式系统,10台机子同时执行一个程序为了得到一个结果,哪台先做好,就发消息给服务器,服务器接收到消息后,立刻通知其他机器停止执行,继续下一个任务,怎搞?这种机子之间互搞还是头一次接触,麻烦讲解详细点,万分感谢,改天请吃饭。
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
si.cb = sizeof(si);
CreateProcess(NULL, _T("这里填a程序的路径 A B.txt -k C.txt"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
问题2
这个给出想法吧`用socket,每次机子完成后,都发送一个消息到其他9台机子里.代码就不写了..写了整晚的代码..累``
主要是那个A.exe直接双击没有反应的,要在cmd格式下才能看到效果
PROCESS_INFORMATION pi = {0};
si.cb = sizeof(si);
CreateProcess(NULL, _T("这里填a程序的路径 A B.txt -k C.txt"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);DWORD error = GetLastError();
再试一吓上面的代码,看error里的值是什么
ShellExecute和WinExec应该也可以实现
------
是在当前目录,用WinExec如果A.exe可以直接运行的话我还能搞定,不过要用cmd运行就不知道怎么做了
关键
CreateProcess(NULL, _T("这里填a程序的路径 A B.txt -k C.txt"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
路径,如果是当前路径的话,要用".\\...",如果你用了".\"有可能出现error = 5的错误.
还有一点,你用CMD运行A.exe可以,而双击去不能.其实,不是A.exe没有执行,而是出现一个一闪而过的窗口,你看不到罢了.所以用CreateProcess时不会有问题的.