它显示所有子进程的cpu,内存等。在我们的应用程序中,此信息全部为空白,仅显示主应用程序的总数。
我正在尝试向Taskmanager提供此信息,因此用户可以更好地了解应用程序的插件的运行方式-性能方面。
我可以获取进程内存/堆,并为子进程使用类似的代码。粗略的例子。
processheap = GetProcessHeap();
crtheap = (HANDLE)_get_heap_handle();
dllcrtheap = dllGetCrtHeap();
但是,问题是,到目前为止,任何搜索结果都只能提供提示和指南,以帮助您从任务管理器中“获取”信息,或者如何使用任务管理器。根本不是我要找的东西,这让我想知道这是否只是应该自动运行的东西-还是没人需要做这样的事情。
简而言之-我们可以在win32-c中实现回调事件以确保应用程序被“询问”以提供有关其进程的更多信息吗?
不确定是否相关(例如,可能会自动显示Windows子进程)win32代码调用一个delphi dll插件,该插件通过一个简单的步骤自行启动:
TFrmMain.Create(nil);
FrmMain.Show();
然后保持活动状态,它将作为主要应用程序的子级出现在taskmanager中。 (但没有CPU /磁盘信息)
以以下方式(作为dll)加载插件:
pluginInfo.hInstance = LoadLibrary(szFile);
(FARPROC)pluginInit = GetProcAddress(pluginInfo.hInstance, "pluginInit");
pluginInfo.plugin = pluginInit();
pluginInfo.plugin->event("demo");
pluginInit(); // is an stdcall in the delphi code which returns a structure with the plugin event callback,
// it's name and which events it will accept.
event(); // is an stdcall which launches the app, basically showing the plugin as a dialog:
FrmMain := TFrmMain.Create(nil);
FrmMain.Show();
除此之外,实际上没有任何有关“启动”插件的代码。它由C代码作为dll加载,询问事件处理程序proc地址,然后调用以启动它。