是否有命令行参数来设置JVM向Windows任务管理器报告的标题?我的所有java进程只显示为'javaw.exe',其描述为'Java(TM)Platform SE二进制'.如果我可以设置一些-param ="这就是日食",这将是很好的,例如我可以很容易地将它们区分开来.它会阻止我经常杀死我的IDE而不是例如tomcat.
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
if (MessageBox.Show(this, "Do you really want to close?", "Close?",
MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我想关闭应用程序时,单击关闭按钮,消息框会按其应有的方式显示,然后我选择了“否”。然后执行 e.Cancel = true 行并且表单未关闭。
现在的问题是,在此之后,如果我从任务管理器关闭应用程序,关闭原因是 UserClosing !为什么?不应该是TaskManagerClosing吗?
我对 CreateWindowEx 函数有疑问。我有 2 个窗口,一个主窗口和一个弹出窗口。我想要一个弹出窗口隐藏在任何地方。它当前未显示在任务栏中,甚至在 alt+tab 菜单中也不可见。但是它在任务管理器的“应用程序”选项卡上可见。我需要在 CreateWindowEx 中使用哪些标志来隐藏我的弹出窗口?
当前代码:
hHistoryWindow = CreateWindowEx(WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE | WS_EX_LAYERED, szAppName, L"HistoryWindow", WS_EX_TOPMOST | WS_POPUP, WIDTH, TOP, width, height, NULL, NULL, hInstance, NULL);
Run Code Online (Sandbox Code Playgroud)
我还想问一下,在使用DestroyWindow()函数之前,是否需要从“静态”窗口释放位图资源?我通过这种方式将图像设置为“静态”窗口:
SendMessage (hStatic, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hWhiteStone);
Run Code Online (Sandbox Code Playgroud)
释放 hWhiteStone 是否足够,或者我是否还需要释放 SendMessage() 返回的句柄(- 或者它是否由 DestroyWindow 自动完成)?
感谢您提供任何信息。
克拉
我有一个通用的可执行文件,它承载一个根据命令行参数选择的插件.在任务管理器中,有一个名为"描述"的列,对于我的进程来说是空白的.由于我的主机进程有多个实例在运行,我无法确定哪个进程在任务管理器中.如何在运行时更新描述字段的值,以便我可以识别哪个插件在哪个进程中加载?
我的具体问题:我需要开发一个需要保持各种应用程序运行的看门狗应用程序。我正在使用 Visual Studio 和支持 .net 4.0 的 windows 环境,因为我没有创建这些应用程序,而且我无权以任何方式修改它们,所以我只能依赖 windows 提供的信息。
在过去的一周里,我一直在努力寻找确切的方法来获取应用程序的任务管理器中显示的“无响应”属性。
我尝试过: 1 使用系统诊断,获取过程信息并解释其中的信息。问题是,当应用程序停止工作(崩溃)时,进程仍在运行,JIT Debugger 消息会弹出并报告应用程序崩溃。在这个特定时刻,任务管理器报告应用程序“无响应”,但进程信息(尽管它有一个主窗口句柄)的属性 Responding 设置为“true”。我发现很多开源任务管理器(前 5 名)都使用“响应”属性来确定应用程序是否正在运行。所以问题是:任务管理器显示没有响应,进程属性响应 = True,这种确定应用程序是否没有响应的方法是无效的
2 向主窗口处理程序发送超时消息。我使用了 SendMessageTimeout 函数 http://msdn.microsoft.com/en-us/library/windows/desktop/ms644952(v=vs.85).aspx *我使用了 SMTO_ABORTIFHUNG、SMTO_BLOCK、SMTO_NORMAL、SMTO_NOTIMEOUTIFNOTHUNG 和 SMTO_ERROR同样的问题: - 应用程序崩溃之前:报告正在运行(所有消息返回 1) - 应用程序崩溃之后(JIT 调试器弹出报告应用程序崩溃并在任务管理器中显示“未响应”)所有上述消息发送到进程窗口处理程序返回 1。所以这种确定应用程序是否没有响应的方法也是无效的
我很惊讶我无法找到与我的问题相关的资源。
这是我尝试过的一些代码:
bool IsResponding(Process process)
{
HandleRef handleRef = new HandleRef(process, process.MainWindowHandle);
int timeout = 2000;
IntPtr lpdwResult;
IntPtr lResult = SendMessageTimeout(
handleRef,
0,
IntPtr.Zero,
IntPtr.Zero,
1,
1000,
out lpdwResult);
lResult = SendMessageTimeout(
handleRef,
0,
IntPtr.Zero,
IntPtr.Zero,
2,
1000,
out lpdwResult); …Run Code Online (Sandbox Code Playgroud) 我注意到,当您退出 android-studio 并查看 taskmgr 时 - 您会看到进程 studio64.exe 已终止,而 java.exe 仍在运行(可能什么都不做,0% cpu 使用)并消耗了大约 400Mb 的内存。
因此,当您再次启动 android studio 时,它会启动另一个 java.exe,如果您关闭 android-studio - 第二个 java.exe 与第一个 java.exe 一起留在内存中,消耗内存但不加载 cpu。如果您重复步骤,它只会添加另一个 java.exe
问题是,终止旧的 java.exe 进程是否安全?
编辑 看起来谷歌修复了那个奇怪的行为/错误。
当我有进程名称时,我需要知道如何获取这样的应用程序名称:
到目前为止我的进展:
Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpdwProcessId As Int32) As Int32
Private Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As IntPtr
'Private Declare Auto Function GetWindowText Lib "user32" (ByVal hWnd As System.IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer
Private makel As String
Private Function GetActiveAppProcess() As Process
Dim activeProcessID As IntPtr
GetWindowThreadProcessId(GetForegroundWindow(), activeProcessID)
Return Process.GetProcessById(activeProcessID)
End Function
Sub GetProcInfo()
Dim activeProcess As Process = GetActiveAppProcess()
With activeProcess
ProcessName = …Run Code Online (Sandbox Code Playgroud) 目前在C#开发的Windows应用程序中,我正在禁用Task manager并user switching option设置以下注册表的值:
禁用任务管理器:
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableTaskMgr 值 1
禁用(隐藏)用户切换:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\HideFastUserSwitching 价值1
但是,在Windows 7计算机上测试此Windows应用程序时,在不在Administrators组中的登录用户面临访问权限问题,这里是异常文本:
12/16/2015 12:11:24 PM:拒绝访问注册表项"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System".:Win32Error(0,0)
后来我查了手动添加子项DisableTaskMgr通过regedit,我得到同样的消息Access is Denied.
在应用程序清单文件我已经启用requestedExecutionLevel设置:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />.我也试过运行应用程序exe Run as Administrator.
如果我在Administrators组中添加该用户,则不会遇到任何问题.
那么,是否有任何替代启用/禁用任务管理器和隐藏用户切换可能是通过使用win32 API函数user32.dll?或通过vc++什么解决方案?
业务要求:
嗯,这是一个考试软件的应用程序,我们希望限制候选人使用任何其他应用程序(网络浏览器,文件浏览器等)以及在提供考试时终止该应用程序.所以我们从开始菜单选项以及ctrl + alt + del菜单(屏幕)中阻止了任务管理器,我们还想switch user从ctrl + alt + del菜单中删除选项.
因此,由于许多人都遇到过 Chrome 的内存使用量可能会让人衰弱的情况,所以我想以编程方式访问“Chrome 的任务管理器”或类似的东西,它显示选项卡、它们的 PID 和子帧(如果可能),这样我就可以创建一个脚本来杀死它们。经过大量阅读,很多答案表明这可能是不可能的,而且有些帖子没有回答问题,我只是不确定这个问题的答案是否已经真正明确给出。
我得到的最接近的是在多功能框中使用“chrome://system/”,但是当您展开“mem_usage”时,它根本不会为您提供每个选项卡有用的内存使用数字,并且缺少子帧,但是使用此方法如果我能够真正获得它们的内存占用量,我计划使用选项卡标题来杀死选项卡。
我尝试使用win32gui 的 FindWindowEx方法来获取文本,但这需要您知道所显示文本的子元素,因此我下载了“Window Detective”来查看“Chrome 任务管理器”显示的元素的名称, PID 和选项卡名称,但“Window Detective”仅返回“EmbeddedMenuWindowClass”,即整个窗口,与显示的文本无关。
我短暂地尝试使用Selenium,但似乎它无法在 Chrome 中获取特殊菜单,而不仅仅是获取网页中的选项卡名称和元素。
我也尝试过“pywinauto”,但是那个东西的文档真的非常糟糕。我尝试过使用“connect”方法、“hwndwrapper”等,但掌握了要使用哪些参数、如何传递它们、期望什么以及如何使用获得的输出(例如 PID 列表)或手柄)被严重搞砸了。如果文档包含输出,我会很高兴,这样我实际上可以看到我应该得到什么,这样我就不会最终发现我测试过的所有东西都没有提供我想要的东西寻找。如果这听起来有些发牢骚,我很抱歉,但我花了几个小时阅读 PDF 和官方文档,并感到非常沮丧。
我还尝试按照此文档通过命令行启动 chrome以进行日志记录(http://www.chromium.org/for-testers/enable-logging),但这可能是 Chromium 唯一的事情,但找不到日志记录文档创建并且当我将其输出重定向到文件时,我没有得到任何有用的东西。
但是,是的,有谁知道如何以编程方式访问“Chrome 任务管理器”文本,或者其他可以提供类似输出的内容?谢谢。