草庐IT

多进程架构

全部标签

c++ - 确定进程的输入线程 ID

有谁知道确定进程输入线程的方法吗?场景是我想调用GetKeyboardLayout,从一个单独的应用程序(可以是任何程序)中传入输入线程ID。每个线程都可以有自己的键盘输入语言集,但是为另一个进程找出合适的输入线程ID似乎是不可能的事情。例如,我创建了一个函数,我将记事本的进程ID传递给该函数,该函数在内部确定输入线程ID并从GetKeyboardLayout返回值。此函数的调用者随后会在屏幕上显示为记事本选择的输入语言。你们这些好人有什么想法吗? 最佳答案 Windows不要求进程具有与用户交互的特定线程。它不一定是进程的启动线程

python - 使用python中的子进程运行以utf-8编码的windows批处理文件

当尝试在Windows7下使用Python2.7运行使用utf-8编码的Windows批处理文件时,无法识别批处理文件的第一个命令(参见示例)。最有可能的是,bom被解释为字符。如何让底层shell正确运行批处理文件?调用的批处理文件来自第三方。这是一个重现问题的简单python脚本:importcodecsimportsubprocesscontent="@echooff"withcodecs.open('test_utf8.bat','w','utf-8-sig')asf:f.write(content)f.close()withopen('test_ansi.bat','w')a

java - 从另一个 Java App 中查找并终止特定的 Java 进程

我有几个java进程在Windows机器上运行。我有一个Java进程,它应该监视其他进程并定期终止或重新启动新进程。如果我有一个运行com.foo.Main1的java进程和一个运行com.foo.Main2的java进程-我的监控进程如何才能找到并杀死Main2进程?更新:我有一些代码可以执行命令行tasklist.exe并解析它,但无论我做什么,我只看到java.exe进程,而不是哪个类正在执行更新2:我无法安装非Java程序。 最佳答案 使用特定于操作系统的工具并使用Runtime.exec()运行它们可能会简单得多,但我会尝

c - PEB地址(0x07FF DA00)是加载进程基地址的RV吗?

我正在尝试使用C/ASM中的PEB结构,但在此之前我想了解一些基础知识。我在某处读到,大多数进程在地址0x07FFDA00处都有它们的PEB。现在这个地址是相对于进程基地址的,即(0x00400000+0x07FFDA00==PEBbaseaddr)?因为所有进程当然不能将它们的PEB指向这个地址。 最佳答案 Becauseallprocessescan'thavetheirPEBtothisaddressofcourse.如果0x07FFDA00和0x00400000都是虚拟地址,那么所有进程都可以在该地址拥有它们的PEB。正如您

C++ Boost 为两个不同的进程创建共享内存

因此,我尝试在C++程序中创建一个共享内存段,这样我就可以在其中写入一个简单的字符,然后从另一个C++程序中读取该字符。我已经下载了Boost库,因为我看到它简化了这个过程。基本上我有两个问题:首先,创建后如何写入它?那我应该在第二个程序中写些什么来识别段并读取其中的信息?这就是我到目前为止所得到的。不是很多,但我对这个(第一个程序)还是很陌生:#include"stdafx.h"#include#includeintmain(intargc,char*argv[]){usingnamespaceboost::interprocess;windows_shared_memoryshar

c# - 当应用程序进程被杀死/崩溃时杀死子进程

我正在从我的应用程序创建新进程,并希望在/如果我的应用程序崩溃时终止这些进程。所以我找到了这篇文章:Killchildprocesswhenparentprocessiskilled.我以第一个示例为例,将所有代码复制到函数publicvoidClose()下的新类。出现错误-当前上下文中不存在名称Win32,因此我添加了Microsoft.Win32现在另一个错误-CloseHandle无法识别。命名空间“Microsoft.Win32”中不存在类型或命名空间名称“CloseHandle”(是否缺少程序集引用?)我该如何解决? 最佳答案

c# - 如何从某个进程获取打开的套接字列表?

Windows资源监视器有一个很好的网络过滤器,它很容易获得某些进程的网络统计信息(TCP连接、端口监听等)。我尝试了this中的System.Diagnostics,但所有示例都是关于CPU和内存使用情况的。我找到了this项目,但它看起来又脏又不安全。我唯一需要的是在我的c#项目中获取资源监视器功能来执行类似的操作varprocess=newProcess("ProcessName");varsockets=process.getSockets();有没有不用字节移位和指针的安全合法的解决方案? 最佳答案 从命令行,netsta

windows - 如何解码scala中的系统进程输出?

我需要处理在Windows上长时间运行的命令的一些文本输出。为了尽早获得此过程的结果,我正在使用ScalaStream和ProcessBuilder类。一切正常,但我遇到了字符编码问题。这是我精简的源代码(powershell命令只是对真实可执行文件的替代)。importscala.sys.process._objectCP850TESTextendsApplication{valcmd=Seq("powershell","-command","echo1a;Start-Sleep-s1;echo2äüîß;Start-Sleep-s1;echo3end")vallines:Strea

c# - 在 64 位进程中加载​​ 32 位 dll

这个问题在这里已经有了答案:Target32Bitor64BitnativeDLLdependingonenvironment(3个答案)DllImport-Anattemptwasmadetoloadaprogramwithanincorrectformat[duplicate](1个回答)关闭8年前。社区在8个月前审查了是否重新打开此问题,然后将其关闭:原始关闭原因未解决我希望我的C#应用程序有条件地运行native方法,有条件地选择运行dll的x86或x64版本。每当我尝试加载32位dll时,我都会收到以下错误:UnhandledException:System.BadImage

c - 如果进程终止但系统继续运行, WriteFile() 会是原子的吗?

如果我的进程在随机时刻终止但操作系统继续正常运行,Windows会保证对WriteFile的个别调用吗?是原子的(又名全有或全无)?或者我可以获得部分/撕裂的写入?注意:我特意不征求有关如何练习防御性编码的建议。这是一个严格关于MicrosoftWindows操作系统本身行为的问题。要100%完美地一目了然,我们可以并且明确地确实相信用户代码的行为是正常的。没有没有未定义的行为或任何类似的行为。假定所有进程终止都是通过明确定义的行为发生的,例如未处理的异常或调用TerminateProcess,不是内存损坏等。另外,请特别注意这里不需要担心C++析构函数;这是C。我希望所有关于用户代码