我想从代码本身创建一个新的exe进程,这样我就可以有两个并行进程。但是,我希望它们是独立的进程,而不是父子进程。有没有办法在C(Windows)中执行此操作? 最佳答案 在Windows中,processesdon'thaveparents.一些工具读取InheritedFromUniqueProcessId值,但这不会告诉您哪个进程启动您的进程。它只告诉您句柄和其他属性是从哪里继承的。然而在实践中,这个值通常设置为启动子进程的进程的ID。在Vista及更高版本上,您可以通过使用STARTUPINFOEX调用CreateProces
我使用C++编写了两个进程。一个是我的控制台应用程序使用CreateProcessAPI调用的GUI进程。我需要将文本从GUI应用程序(子)传递到控制台应用程序(父)。文本的数量可以是任意的——从几行到KB的文本。最简单的方法是什么?附言。我可以访问这两个进程的源代码。 最佳答案 控制台应用程序可以创建一个WinAPI窗口(不可见),这样它就可以接收消息(从Delphi中的AllocateHWND函数中获取的想法)。另一种解决方案是使用命名管道。另一种解决方案是通过TCP/IP在本地发送数据。如果这些字符串只是调试字符串,请考虑使用
我想以编程方式确定进程何时终止。我在各种论坛中进行了搜索,发现了PsSetCreateProcessNotifyRoutine例程。此外,我遇到了一个类似的StackOverflow问题:.NETEventsforProcessexecutablestart.在接受的答案中,我看到了一个我可以使用的查询。但是,我无法完全理解查询。有人可以建议我实现解决方案的方法吗? 最佳答案 基本上,您需要连接到WindowsManagementAPI,它允许您监听启动和停止的进程。一旦WMI向您的程序发送通知,您将在(基于answer)中获得控制
我使用下面的代码来防止用户从任务管理器中终止我的程序(我在某处找到它):functionPreventProcessKill:Integer;varhProcess:Thandle;EmptyDacl:TACL;pEmptyDacl:PACL;dwErr:DWORD;beginhProcess:=GetCurrentProcess();ZeroMemory(@EmptyDacl,SizeOF(tacl));pEmptyDacl:=@EmptyDacl;if(notInitializeAcl(EmptyDacl,sizeof(tACL),2))thendwErr:=GetLastErro
当使用grunt的监视任务时,Grunt.js显然会生成一个新的node.js进程:http://www.youtube.com/watch?v=fgRlcFt9dkg一旦我保存我的文档,默认任务就会执行,并且(如您在视频中所见)突然有一个新的node.exe进程。这是我的grunt文件:module.exports=function(grunt){grunt.loadNpmTasks('grunt-contrib-clean');grunt.loadNpmTasks('grunt-contrib-compress');grunt.loadNpmTasks('grunt-contrib
我有一个属于系统中另一个进程的控件的句柄。我怎样才能得到它所属的进程?我尝试查找合适的函数,但没有找到太多。 最佳答案 我想您所说的“控件句柄”是指HWND。然后,使用GetWindowThreadProcessIdHWNDhWndToSomeControl;[...]DWORDdwPid;GetWindowThreadProcessId(hWndToSomeControl,&dwPid);编辑:错误控制(在Windows7上测试):HWNDhWndToSomeControl;[...]DWORDdwPid;DWORDdwTid=G
我的目标是以编程方式获取64位进程的完整命令行。我已经理解并编写了这段代码,我在其中对所有当前正在运行的进程进行了进程遍历,并获取了它们的每一个细节。但问题是此代码无法对64位进程(不在WOW64下运行的进程)执行相同的操作。#include#include#include#include#include#includeusingnamespacestd;BOOLGetProcessList(FILE*f);BOOLListProcessModules(DWORDdwPID,FILE*f);BOOLListProcessThreads(DWORDdwOwnerPID,FILE*f);v
Isthereawaytofindouthowwhichprocesshasstartedmyprocessinc#?我有两个exesA.exe(控制台应用程序)和B.exe(GUI)。现在A.exe应该只能由B.exe启动,没有别的。欢迎提出任何想法。 最佳答案 基本上你有一个控制台应用程序(A.exe)和GUI应用程序(B.exe),A.exe中的逻辑只能在通过B.exe而不是任何其他进程或用户执行时执行。您可以通过将参数传递给A.exe来实现它,假设您如何从GUI应用程序调用A.exe,Processprocess=newPr
在测试应用程序稳定性时,我试图删除/损坏应用程序使用的数据库。操作系统是Windows,文件系统是NTFS,测试语言是C++。我需要的是将任何内容粘贴到数据库文件中或将其删除。但它在运行期间被测试的应用程序锁定。所以也许有人以前遇到过这种情况,你可以给我/我们一个例子,说明绕过测试代码中的这种锁定的可能方法吗?理论或来源-感谢您提供任何帮助。 最佳答案 #include#include#include#include#include#include#include#include#include#defineSTART_ALLOC0
我创建了一个脚本来输出Get-NetTCPConnection数据,但另外显示了ProcessName和Username。该脚本确实有效,但我希望有任何提示可以简化或使其更规范。我想知道是否有更有效的方法将ProcessName和Username添加到输出中,而无需将值预加载到自定义PSObject($obj数组)。我担心自定义e={($obj|?PID-eq$_.OwningProcess|select-ExpandPropertyUserName)}}表达式过于复杂。$obj=@()Foreach($pIn(Get-Process-IncludeUserName|where{$_.