草庐IT

【JavaEE】进程和线程

全部标签

windows - 获取当前事件窗口的线程 ID

我需要获取事件窗口的线程ID。是否有WindowsAPI函数可以让我获取此信息?有GetCurrentThreadId函数,但它会返回调用线程的ID,而不是事件窗口线程,因此它对这个目的没有用。编辑:按照建议编辑我的问题以提供有关我为什么需要这个的额外信息,这里是:我正在实现LowLevelKeyboardProc捕获键盘输入,并且由于键盘布局因程序而异,我想确保为处理键盘的事件窗口获取布局:代码片段:HWNDactive_window=GetForegroundWindow();DWORDthread_id=GetWindowThreadProcessId(active_window

c# - 获取传递给新进程(不是当前进程)的 Windows 环境变量

如何获取通过开始菜单传递给新进程的完整环境变量集,而不是传递给我的进程的环境变量集?或者如何使用这组环境变量启动进程?(从技术上讲,我不需要在初始过程中访问它们)这些可以发散,例如,如果我的进程启动,然后用户使用环境变量GUI来修改它们。用例:我正在编写一个启动器实用程序,其行为类似于开始菜单,用于启动应用程序。一个合适的解决方案需要做到以下几点:获取机器和用户环境变量合并来自机器和用户的PATH变量(是否合并任何其他变量?)获取HOMEDRIVE、HOMEPATH、USERNAME、USERPROFILE以及System.Environment.GetEnvironmentVaria

windows - TaskList 未检测到/不支持超过 21 个字符的进程名称

我希望我的批处理文件在继续代码之前检查进程名称是否存在并且正在使用TaskList运行,但不幸的是,如果进程名称超过21个字符,它将无法工作。有什么方法可以取消字符限制或支持超过21个字符的进程名称?我尝试使用任何其他不超过21个字符的进程名称,代码运行完美。我没有尝试任何其他方法,因为我一直在网上查找但找不到与我的确切问题匹配的任何内容,或者不知道为什么它不会检测到太长的进程名称。我减少了我的代码,使其更短且更易于理解。@echooffsetProcessName=PROCESSNAMEfor/f"tokens=4-7delims=[.]"%%iin('ver')do(if%%i==

python-3.x - 如何使用具有管理员权限的子进程停止和启动 Windows 服务?

我正在构建一个python工具来更新应用程序。为此,我必须停止Apache服务,做一些与更新相关的事情,然后在更新完成后重新启动它。我目前在Windows10上使用python3.7.2。我试图以某种方式使用这些问题作为引用来构建一个工作流程:Runprocessasadminwithsubprocess.runinpythonWindowscan'tfindthefileonsubprocess.call()Pythonsubprocesscallreturns"commandnotfound",TerminalexecutescorrectlydefstopApache():pro

c# - 使用 Windows 进程备份 IIS 设置

我可以用下面的命令备份IIS的设置//sitesC:\Windows\system32\inetsrv\appcmd.exelistsite/config/xml>C:\Temp\iis_config_sites.xml//apppoolsC:\Windows\system32\inetsrv\appcmd.exelistapppool/config/xml>C:\Temp\iis_config_apppool.xml当我从命令提示符运行这些命令时,它工作正常。XML文件已创建。但我想通过使用System.Diagnostics.Process从C#代码执行此命令来自动执行此过程。为此

windows - 阻止 MSVC++ 调试错误阻止当前进程?

Windows上任何失败的ASSERT语句都会导致出现以下调试消息并卡住应用程序执行。我意识到这是预期的行为,但它会在headless机器上定期运行,因此可以防止单元测试失败,而是无限期地等待用户输入。是否有注册表项或编译器标志可用于防止此消息框请求用户输入,同时仍允许测试在ASSERT下失败?基本上,我想在不修改任何代码的情况下执行此操作,只需更改编译器或Windows选项。谢谢!MicrosoftVisualC++DebugLibraryASSERThttp://img519.imageshack.us/img519/853/snapshotbu1.png

c++ - Vista 中提升的进程不会覆盖文件

我正在尝试从另一个主机进程运行提升的进程,例如file_copier.exe,在Vista上使用ShellExecuteEx和lpVerb="runas"。它显示UAC对话框并以提升的方式运行,并将文件复制到“危险”文件夹,但它不会覆盖现有文件(exe)。我在这里读过:http://www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspxUAC实际上不会覆盖现有文件,而是将新文件存储在某种缓存中。但我无法弄清楚(如果是这样的话)如何让它实际覆盖现有文件。感谢您的帮助。 最佳答案

C++ 进程检查

我正在用C++创建一个任务管理器类型的应用程序,我目前正在使用:`voidMyFrame::ProcChecker(boolshowmessage=false){HANDLEhSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);PROCESSENTRY32*processInfo=newPROCESSENTRY32;processInfo->dwSize=sizeof(PROCESSENTRY32);intindex=0;stringprocList="";while(Process32Next(hSnapShot,proce

c++ - Win32 共享内存的包装类? (进程间通信)

您可以为Win32上的IPC推荐什么包装类?我试过XQueue,我发现它有点笨拙,想听听外面还有什么。在InterlockedPopEntrySList()上构建一些东西看起来不错,但这需要服务器2003。谢谢,亚当 最佳答案 我推荐Qt4(或者您可以查看源代码):http://doc.trolltech.com/4.5/qsharedmemory.html 关于c++-Win32共享内存的包装类?(进程间通信),我们在StackOverflow上找到一个类似的问题:

c++ - 在 wxwidgets 中,如何让一个线程在继续之前等待另一个线程完成?

我有一个系统,我的单例类生成一个线程来进行计算。如果用户在另一个计算仍在运行时请求另一个计算,我希望它拆除现有线程并启动一个新线程。但是,它应该等待第一个线程完全退出才能继续。我已经完成了所有的拆解工作,但我似乎无法确保只有一个线程运行。我的方法是让StartCalculation函数调用mutex->Lock()。析构函数中的线程释放锁。它不工作。我假设如果Lock()无法获得锁,它会旋转并不断尝试重新获取锁,我的假设是否正确?这个Lock()可以从我的主应用程序线程调用吗?任何想法都是有帮助的。也许wxMutex锁是正确的机制。 最佳答案