草庐IT

初识进程

全部标签

C++ WinAPI - Windows 关闭之前的清理终止进程?

通常,在使用GUI窗口时,您可以捕获WM_CLOSE事件以在应用程序终止之前执行清理任务。但是,如果我的应用程序只是在后台运行并且进程仅在Windows关闭时终止-是否有任何方法可以捕获此事件并在进程终止之前执行一些清理?我知道无法干预任务管理器进程的关闭。但是随着关机,我只注意到有一个shutdown和一个shutdown/F命令。 最佳答案 创建一个message-onlywindow,并处理WM_QUERYENDSESSION和/或WM_ENDSESSION消息。 关于C++Win

C++线程分离进程

有什么方法可以让一个线程分支到它自己的独立进程中吗?我知道有CreateProcess函数,但据我所知,您只能使用它运行外部应用程序。我所要求的是可能的吗? 最佳答案 这是可能的。您可以使用虚拟应用程序和CREATE_SUSPENDED标志调用CreateProcess,这样它就不会立即运行。然后你可以使用VirtualAllocEx在创建的进程中分配内存空间,并使用WriteProcessMemory将代码和数据写入其中。然后取消挂起进程以运行它。您还可以使用CreateRemoteThread创建一个在另一个现有进程的上下文中运

.net - 是否可以从另一个进程捕获 "file not found",然后将文件返回给该进程?

我有一个在目录中查找文件的遗留应用程序。它不能很好地处理丢失的文件。我想要做的是“捕获”文件未找到错误,然后将另一个文件发送回调用应用程序。类似于您在网络服务器上处理404错误并根据请求的URL返回内容的方式,但在本地文件系统上除外。这可能吗?更可取的是,在.Net中是否可行? 最佳答案 您可以通过拦截对WinAPI函数CreateFile的调用来做到这一点。这需要dll注入(inject)。在.NET中,您可以使用此库:easyhook.codeplex.com 关于.net-是否可以

c++ - 进程 ID 和进程名称

我正在创建一个基本上扫描系统以查看特定进程是否正在运行的Windows程序。我有进程名称(AcroRd32.exe),没有别的。据我所知,最简单的方法是使用CreateToolhelp32Snapshot创建所有进程的快照,然后遍历每个进程以查找进程名称。我的应用程序以高性能为中心。那么有没有更好更有效的方法来做到这一点。应用程序每隔几秒收集一次快照。在快照中迭代100个进程似乎效率不高。是否有直接的API可以通过进程名称找到进程(并通过名称检索进程句柄或ID)?我进行了广泛的搜索,但运气不佳。有人试过这个吗? 最佳答案 扫描进程的

c++ - 如何保护两个进程之间共享内存中的字符串?

我有一block共享内存,其中包含两个进程之间的一个char字符串和一个整数。进程A写入它,进程B读取它(反之亦然)确保进程A不会在进程B正在读取它的同时更新(写入)它的最有效方法是什么?(我应该只在共享内存中使用标志,使用信号量,临界区....)如果您能指出正确的方向,我将不胜感激。谢谢。Windows,C++ 最佳答案 您不能使用CriticalSection因为这些只能用于同一进程内线程之间的同步。对于进程间同步,您需要使用Mutex或Semaphore.两者的区别在于前者只允许一个线程拥有一个资源,而后者最多允许一个最大数目

windows - 是否可以通过命令行标记 Windows 进程的描述?

假设我想在Windows命令行中运行一个名为Foo.exe的程序。当我查看TaskManager->Processes时,有没有一种方法可以标记该进程的“描述”字段?顺便说一句,exe不是我的/我无法编译它。 最佳答案 任务管理器显示的描述字段是从可执行文件的版本资源中读取的。所以当你开始这个过程时你不能改变它(标记它)。如果您想影响那里出现的内容,那么您需要修改可执行文件,我认为这不是您想要做的。 关于windows-是否可以通过命令行标记Windows进程的描述?,我们在StackO

c++ - 如何在C/C++中创建一个新进程并在WinXp中获取这个新进程句柄?

我需要知道如何在C/C++代码中获取新创建进程的句柄。我对所有这些Microsoft库了解不多,我刚刚阅读了有关创建流程的两种方法。第一个是通过ShellExcecute调用,第二个是通过CreateProcess,但这些都没有重新生成句柄。我需要知道进程的句柄,因为我希望主线程在继续之前等待进程完成。最重要的是,我希望有人帮我编写一个如下所示的函数:HANDLEcreate_process(/*parameterssameasforShellExecute*/){...}请帮忙。 最佳答案 CreateProcess()返回包含进

c++ - 从 Windows 服务启动子进程

我在c++中有一个XMLRPC窗口服务。我需要从它启动子进程,如果Windows服务收到请求并且进程已经存在我需要结束那个特定的子进程并再次启动它。我不需要等待进程在启动后退出但是一旦它启动并开始它应该做的事情我需要通知主进程。当子进程结束时,它需要通知启动它的服务,以便我可以维护一个已存在进程的列表。我知道我可以用CreateProcess做到这一点但是,一旦子进程到达特定事物,我该如何处理通知的各个方面。 最佳答案 调用CreateProcess后,跟踪进程句柄。您可以使用它来查看进程是否有exitedornot,并调用Term

c++ - 如何保证在进程退出或在c++中被杀死时执行某些代码?

谁能告诉我如何确保程序中的某些代码在进程退出或被杀死时得到执行?驱逐舰只有在正常退出时才会被调用。但我希望我的代码在被系统关闭或任务管理器杀死时得到执行。平台是Windows,如果需要,我不介意使用特定于平台的代码。 最佳答案 你不能。如果用户拔掉电源线怎么办? 关于c++-如何保证在进程退出或在c++中被杀死时执行某些代码?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/219

windows - 监控您自己进程中的内存使用情况

让我们暂时搁置海森堡。我将如何从我自己的进程中监控该进程使用了​​多少内存?(我可能故意低估了问题,梦想有创意的答案......) 最佳答案 Quassnoi是正确的-但它也可能值得检查我们的这个问题:HowtodetermineCPUandmemoryconsumptionfrominsideaprocess其中包括代码示例 关于windows-监控您自己进程中的内存使用情况,我们在StackOverflow上找到一个类似的问题: https://stack