草庐IT

【JavaEE】进程和线程

全部标签

c# - 如何让进程在终止时发送通知

我想以编程方式确定进程何时终止。我在各种论坛中进行了搜索,发现了PsSetCreateProcessNotifyRoutine例程。此外,我遇到了一个类似的StackOverflow问题:.NETEventsforProcessexecutablestart.在接受的答案中,我看到了一个我可以使用的查询。但是,我无法完全理解查询。有人可以建议我实现解决方案的方法吗? 最佳答案 基本上,您需要连接到WindowsManagementAPI,它允许您监听启动和停止的进程。一旦WMI向您的程序发送通知,您将在(基于answer)中获得控制

windows - 防止任务管理器中的进程终止,反向

我使用下面的代码来防止用户从任务管理器中终止我的程序(我在某处找到它):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

windows - Grunt.js 在使用 watch 任务时生成一个新的 Node 进程

当使用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

c++ - GlobalMemoryStatusEx 线程安全吗?

来自MSDNpage:“GlobalMemoryStatusEx函数返回的信息是易变的。不能保证对该函数的两次连续调用将返回相同的信息。”这是有道理的,但是我无法确定这是否是线程安全的。有人确定知道一种或另一种方式吗?我已尝试使用谷歌搜索,但找不到此信息。 最佳答案 MSDN页面上说的是函数返回的信息是随时间变化的:这就是“volatile”的意思。例如,GetSystemTime返回的信息也是“易变的”。关于过程的其他不同概念是“可重入”和“线程安全”。可重入意味着过程使用的信息依赖于局部变量,而不是全局变量,这可以解释为线程安全

c# - 从控制句柄获取进程

我有一个属于系统中另一个进程的控件的句柄。我怎样才能得到它所属的进程?我尝试查找合适的函数,但没有找到太多。 最佳答案 我想您所说的“控件句柄”是指HWND。然后,使用GetWindowThreadProcessIdHWNDhWndToSomeControl;[...]DWORDdwPid;GetWindowThreadProcessId(hWndToSomeControl,&dwPid);编辑:错误控制(在Windows7上测试):HWNDhWndToSomeControl;[...]DWORDdwPid;DWORDdwTid=G

c++ - 如何以编程方式检索 C++ 中 64 位进程的详细信息?

我的目标是以编程方式获取64位进程的完整命令行。我已经理解并编写了这段代码,我在其中对所有当前正在运行的进程进行了进程遍历,并获取了它们的每一个细节。但问题是此代码无法对64位进程(不在WOW64下运行的进程)执行相同的操作。#include#include#include#include#include#includeusingnamespacestd;BOOLGetProcessList(FILE*f);BOOLListProcessModules(DWORDdwPID,FILE*f);BOOLListProcessThreads(DWORDdwOwnerPID,FILE*f);v

c# - 如何找出哪个进程启动了我的exe?

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

c++ - 删除被另一个进程锁定的文件

在测试应用程序稳定性时,我试图删除/损坏应用程序使用的数据库。操作系统是Windows,文件系统是NTFS,测试语言是C++。我需要的是将任何内容粘贴到数据库文件中或将其删除。但它在运行期间被测试的应用程序锁定。所以也许有人以前遇到过这种情况,你可以给我/我们一个例子,说明绕过测试代码中的这种锁定的可能方法吗?理论或来源-感谢您提供任何帮助。 最佳答案 #include#include#include#include#include#include#include#include#include#defineSTART_ALLOC0

windows - PowerShell:还显示用户名和进程名称的 Get-NetTCPConnection 脚本

我创建了一个脚本来输出Get-NetTCPConnection数据,但另外显示了ProcessName和Username。该脚本确实有效,但我希望有任何提示可以简化或使其更规范。我想知道是否有更有效的方法将ProcessName和Username添加到输出中,而无需将值预加载到自定义PSObject($obj数组)。我担心自定义e={($obj|?PID-eq$_.OwningProcess|select-ExpandPropertyUserName)}}表达式过于复杂。$obj=@()Foreach($pIn(Get-Process-IncludeUserName|where{$_.

windows - 多个进程共享一个 DLL 的必要条件

我在理解我从Microsoft读到的以下声明时遇到了问题。它说“在相同基地址加载相同DLL的多个进程在物理内存中共享DLL的单个副本。”所以我的理解是,如果一个DLL必须在不同进程之间共享,那么该DLL必须加载到每个进程虚拟内存中的相同基地址。为什么会这样?如果进程加载到不同进程虚拟地址空间中的不同基地址会发生什么情况,因为最终所有进程都将访问相同的物理内存以共享DLL。 最佳答案 图像部分绑定(bind)到磁盘上的文件。虽然我们不修改部分集中的某些页面-此页面将共享并由图像文件支持。但如果我们修改页面-它不能更多地由图像文件支持。