jjzjj

createprocess

全部标签

windows - 如何在CreateProcess实例化的命令中使用或扩展环境变量?

以下代码利用CreateProcess运行带有环境变量的命令。在这里,它尝试运行notepad%APPDATA%\test.txt。如果我直接在Windows的CMD中运行notepad%APPDATA%\test.txt,%APPDATA%将被展开。但是,CreateProcess执行时,环境变量不能扩展。你能帮忙评论一下原因和解决方法吗?任何意见将不胜感激!programTestConsole2;{$APPTYPECONSOLE}usesWindows,SysUtils;varI:Integer;ProgramName:String;StartInfo:TStartupInfo;P

windows - CreateProcess 能够执行批处理文件,但文档说明相反

考虑以下文件:a.bat:@echoHellofrombat%1和c.cpp:#defineUNICODE#include#includevoidcheck(TCHAR*cmd,TCHAR*args){STARTUPINFOsinf;PROCESS_INFORMATIONpinf;memset(&sinf,0,sizeofsinf);sinf.cb=sizeof(sinf);CreateProcess(cmd,args,NULL,NULL,FALSE,0,NULL,NULL,&sinf,&pinf);WaitForSingleObject(pinf.hProcess,INFINITE)

c++ - 如何正确地将命令行参数传递给 Windows 应用程序?

将命令行参数传递给Linux中的应用程序与exec*命令配合使用效果很好,您可以清楚地单独传递每个参数。如果想要控制标准管道,那么在Windows上使用相同的功能这样做不是一种选择。因为这些函数是基于CreateProcess()的,所以aresomeclearrules关于如何转义双引号等特殊字符。遗憾的是,这只有在被调用的应用程序通过main()、wmain()或CommandLineToArgvW()检索其命令行参数时才能正常工作。但是,如果被调用的应用程序通过WinMain()、wWinMain()、GetCommandLineA()或GetCommandLineW()获取这些

c++ - 使用 IOCP 检测子进程的退出/失败 - C++ - Windows

我有一个流程管理器。它可能会使用createprocess函数创建数千个(在纸上!)子进程。目前我正在使用mufti-threading和WiatForMultipleObejct来检测任何child的退出或失败。我一直在寻找一些建议/指南/伪代码/链接来使用IOCP检测子进程的退出(如果可能的话)!?非常感谢! 最佳答案 是的,这是可能的。你需要看看JobObjectAPI.具体来说,您创建流程,将其分配给作业,然后将作业与完成端口相关联。参见JOBOBJECT_ASSOCIATE_COMPLETION_PORT和SetInfor

c - msys2 如何显示来自非控制台应用程序的控制台输出?

如果我编译这个源代码:#includeintmain(intargc,char*args[]){printf("Done!\n");return0;}在msys2下使用gcchello.c-ohello-mwindows使用mingw-w64-x86_64-toolchain工具链,然后从msys2内部运行它我会看到:同时,如果我从powershell(或cmd)调用同一个可执行文件,我将看到:老实说,考虑到-mwindows生成的是Windows可执行文件而不是控制台文件,我对后者并不感到惊讶-我已经看过很多次了。但是msys2如何设法显示该输出? 最佳答

c++ - 使用系统托盘图标创建后台进程

我正在尝试制作一个Windows应用程序,它可以在后台检查某些内容,并通过系统托盘图标通知用户。该应用程序是使用非托管C++制作的,没有切换到.net或Java的选项。如果用户想停止应用程序,他将使用托盘图标。由于系统托盘方面的原因,该应用程序不能成为服务,因为它必须在不在用户计算机上安装任何东西的情况下运行(它是单个.exe)使用典型的Win32程序结构(RegisterClass、WndProc等)我不知道如何放置一些代码来分开窗口消息循环。也许我必须使用CreateProcess()或CreateThread()?这是处理多线程环境的正确方法吗?如果我必须使用CreateProc

c - 未检测到 Windows CreateProcess 退出

我正在尝试使用单独的进程来完成一些工作。在Windows版本中,我使用CreateProcess启动它并正常重定向标准输入/标准输出(继承的匿名管道)。管道工作;但是,当子进程退出时,父进程会挂起读取调用。父进程如何知道子进程已经退出?我认为ReadFile应该在子进程退出时立即返回一个损坏的管道错误。用于创建具有重定向输入和输出的子进程的Windows示例代码具有相同的问题,因此我将其作为MCVE发布。也可在https://msdn.microsoft.com/library/windows/desktop/ms682499获得#include#include#include#inc

CreateProcess() 似乎不受 lpCurrentDirectory 的影响

我目前正在尝试使用CreateProcess()API启动一个进程:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx我遇到的主要问题是子进程似乎是在父进程的工作目录下启动的,不管lpCurrentDirectory参数中指示的是什么.提供更多细节:lpCurrentDirectory似乎适用于简单的命令行程序,但对于更复杂的程序(想想GUI),它似乎没有被考虑在内,因为所有资源依赖项都是从调用目录进程中搜索的。我可以尝试来回切换调用进程的工作目录,但第二个问题是被调用进程不在目标

创建隐藏进程(窗口不可见)

我使用CreateProcess()并将启动标志设置为STARTF_USESHOWWINDOW和SW_HIDE以在后台启动应用程序并隐藏其窗口。我这样做是为了运行计划的维护任务,我不想被Windows打扰。在大多数情况下,窗口是隐藏的,但在某些情况下,程序的窗口会在您面前突然弹出(例如Google的Chrome-我开始使用不同的应用程序进行测试,看看这是否曾经是一个问题,但不是...).这种情况在WindowsXP中发生的次数较少,但在Vista中发生的次数很多。是否有我缺少的标志?有没有其他方法可以创建隐藏窗口的进程?谢谢!我的示例代码是:char*ProgramNameSTARTU

windows - 如何创建一个不是其创建过程的子进程的过程?

我有两个进程,A和B。在某个时候A创建B。在创建B之后,如果A的进程tree被杀死,我希望B仍然存在。我正在使用CreateProcess()创建B,但我似乎找不到任何方法让它在没有子进程的情况下创建进程。与ShellExecuteEx()相同,但我可能遗漏了一些标志。有人知道我可以用什么来做到这一点吗?编辑:我忘了提到两个进程都需要一个HANDLE或进程ID给另一个 最佳答案 您可以尝试进程A创建进程C,进程C创建进程B,然后进程C将立即结束(终止)。在进程B中,仅存在有关直接父进程(不再运行的C的进程ID)的信息,而不存在有关进