草庐IT

【JavaEE】进程和线程

全部标签

c++ - 如何(最好)将 WM_QUIT 发布到正在运行的进程?

目标:在windows下关闭一个正在运行的32位GUI进程我可以访问可执行文件的路径名。此软件可能有多个拷贝在运行,但只有一个从唯一的可执行文件路径名启动。因为可以运行此可执行文件的多个实例,简单查看顶级窗口需要区分哪个可执行文件路径名实际负责该窗口...可能的方法:枚举进程&线程,然后使用PostThreadMessage(thread,WM_QUIT,0,0)这很有道理,但我担心用什么技术来区分“主线程”有这种方法的例子:Thisassumesthatthethreadwiththefirstcreationtimeismain.Thisusesa32-bitonlytrickto

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

因此,我尝试在C程序中创建一个共享内存段,这样我就可以在其中写入一个简单的字符,然后从另一个C程序中读取该字符。我一直在尝试使用calloc()和malloc()但我相信这只适用于该程序自己的heap.是否有另一个函数可以做同样的事情,但在RAM内存中?也许通过十六进制值?还是我错了,这些函数实际上保留了对所有进程可见的内存?提前致谢。编辑:-我正在使用Windows8。-语言不限于C,可以是任何其他语言。 最佳答案 有很多InterprocessCommunications当您需要在隔离的进程之间传输数据时,您可以选择。共享一bl

c++ - MFC GUI 应用程序重写 - 线程、消息传递、文档/ View 等。需要建议

我正在重写一个有很多问题的MFC应用程序。主要问题是不稳定。它是一个GUI应用程序,通过USB与外部模块通信。因此,它通过使用计时器每n毫秒运行一次通信堆栈。然而,系统调用不允许在计时器回调中使用,因此程序不稳定,因此经常崩溃和挂起。所以我必须重写应用程序以在后台线程中运行通信堆栈。这里的另一个问题是数据没有完全与表示分离,如果我使用另一个线程,我必须确保我保护共享资源。所以,主要是通信栈会通知应用程序有新的数据。这应该由工作线程处理。它运行通信堆栈,处理新消息,然后在更新数据结构时锁定数据结构,然后回复模块。然后它向主线程发送一strip有PostMessage的消息以更新GUI。但

c# - 如何获取进程的主窗口(不是窗口句柄)?

这个问题在这里已经有了答案:GetWPFwindowbyhWnd(4个答案)关闭9年前。一段时间以来,我一直在尝试获取对我的进程主窗口的引用。我浏览了许多站点以寻找解决方案。但看起来每个人都提供了一种解决方案来获取窗口句柄而不是窗口本身。获取进程的主窗口句柄非常简单。我似乎也按预期获得了窗口标题。我浏览了User32.dll提供的大部分API,但找不到我要找的东西。我需要对窗口的引用,因为我想访问窗口类的几个成员来完成我的工作。我指的窗口是WPF窗口。在这方面的任何帮助将不胜感激:)提前致谢。

C# - 关闭子进程的输入流

我的C#程序需要通过其标准输入将数据发送到第3方程序。然而,程序在处理之前等待输入流到达EOF。这是我的代码://Startstheprocess.varprocess=newProcess();process.StartInfo.CreateNoWindow=true;process.StartInfo.UseShellExecute=false;process.StartInfo.RedirectStandardInput=true;process.StartInfo.RedirectStandardOutput=true;process.StartInfo.FileName="f

c# - Windows 进程(C#/C++/等)的错误退出代码?

我们的C#应用程序以代码0退出,即使它在代码中明确返回-1:internalclassProgram{publicintMain(){....return-1;}}如果使用voidMain也会发生同样的情况:internalclassProgram{publicvoidMain(){....Environment.Exit(-1);}}正如关于SO的其他问题所暗示的那样,它可能是其他线程中未处理的CLR/C++/native异常。然而,我在最后一个线程之前添加了所有托管/native线程的正常关闭,但行为仍然存在。可能是什么原因? 最佳答案

windows - 批处理文件 - 关闭由批处理文件进程打开的单独的 cmd 窗口

我正在整理一个执行以下操作的批处理文件:启动Selenium测试中心启动Selenium测试节点运行Selenium测试脚本打开测试结果xml文档。关闭Selenium中心和节点Selenium中心和节点是通过使用START命令调用2个批处理文件打开的,因此它们在自己的cmd窗口中打开。直到第5点,我的流程都很好,关闭了包含集线器和节点的两个cmd窗口。我知道您可以关闭所有“cmd.exe”进程,但这似乎是一种钝器。有没有一种方法可以识别或保留我的批处理脚本打开的集线器和节点cmd窗口的句柄,以便我可以只关闭这两个窗口?谢谢。 最佳答案

python - 退出应用程序时如何终止 python.exe*32 进程?

我在Windows7下使用wxpythonGUI编写了一个python(2.7)应用程序。当我运行该应用程序时,我看到一个python.exe*32进程在任务管理器中启动。当我退出应用程序时(使用wxpython的Window.Close()方法关闭GUI窗口),python.exe*32进程仍然存在。当我再次运行该应用程序时,第二个python.exe*32进程启动,并继续运行。每个python.exe*32进程占用大约180MB内存,这会降低计算机速度。我以这种方式启动我的应用程序:if__name__=="__main__":app=wx.App(False)frame=Main

windows - 线程命令在 WInDbg 中不起作用

尝试在WinDbg中执行基于线程的命令。安装程序是具有XP的VMWare,主机是Win7。基于this,试图调试应用程序挂起。但是无法从中获取任何信息。对于简单的tilda(~)它给出了语法错误。我需要做一些不同的设置才能执行这些命令吗?无论如何,这些“特殊”吗?因为我可以使用其他命令。基本上我希望WinDbg让我监控线程的状态?例如等待响应、发送请求或类似的事情。 最佳答案 ~仅为用户模式调试更改线程上下文。对于krnelmkode调试,请参阅帮助:。线。过程!线!过程 关于windo

windows - 批处理文件 - 如果只有一个实例正在运行,如何终止进程?

我正在尝试编写一个批处理程序来检查进程“example.exe”有多少实例正在运行,如果有两个或更多实例,则让它继续运行。但如果只有一个实例在运行,则结束进程。这是我拥有的:@echooffwmicprocesswherename="example.exe"|find"example"/c>%temp%\variable.txtset/pvalue=我的问题是:它总是认为值是lss2(它认为进程运行的实例少于2个)。但是,在我的任务管理器中,我可以看到显然有2个实例在运行。我认为这可能是定义值(value)的问题?我不知道,我对此很陌生。有什么帮助吗?谢谢!更新好的,我现在把它改成了这