草庐IT

【JavaEE】进程和线程

全部标签

c++ - 有没有办法,或者说 'accepted'是什么办法让所有windows都运行在当前进程下?

如何从另一个应用程序的进程地址空间获取它正在使用/显示的每个窗口的句柄?我知道您可以获得进程中所有当前运行线程的快照http://msdn.microsoft.com/en-us/library/ms686701(v=vs.85).aspx但我想知道是否有办法使用THREADID然后获取一个hwnd值,您可以使用IsWindow(hwnd)进行测试,或者从逻辑上讲,如果您可以获得hwnd,难道您不知道您已经有了一个值窗口?但我想知道这是否可行,或者这是否确实是一种明智的方法?谢谢。 最佳答案 您可以使用EnumThreadWindo

c++ - 问题 - TCHAR 作为 LPARAM 到属于另一个进程/线程的窗口

所以我正在通过C书示例在Windows上玩/实现tomyown,并且有一些关于dll注入(inject)部分的东西让我感到困惑,我无法解决它。我创建了一个属于另一个线程/进程的对话框,我试图向它发送TCHAR变量,以便它可以在某些函数中使用该var(函数和tchar都在同一个dll文件中)因此,当创建对话框并在另一个线程中正常运行时,我会向它发送一条消息。首先我声明了tcharTCHARfinalpath[MAX_PATH];然后我只是用信息填充它(我在dll线程中执行此操作,而不是在对话框的线程中,让我还提到我必须在dll线程中执行此操作,因为那是填充所需tchar的唯一方法(我我需

二进制的 C++ Windows 进程 ID

我想在Windows上用C++将程序的进程ID(通过程序本身)写入文件(首选二进制文件)。我看到函数的使用:GetProcessId,但我没有设法使用它。1)如何使用?2)如何将值转为二进制并写入文件?谢谢 最佳答案 您可以使用GetCurrentProcessId()获取当前进程的进程ID。然后你可以使用ultoa使用基2(和大小为sizeof(DWORD)*8+1)的缓冲区将该数字转换为字符串,然后您可以使用ofstream或fwrite将其写入文件。例子:DWORDid=GetCurrentProcessId();charbu

python - 由 python 的子进程启动的进程不存在

我在win7中使用python的子进程运行一个“mstsc”程序:>>>importsubprocess>>>p=subprocess.Popen('mstsc')>>>p.pid8884但是,当我检查Windows的进程监视器时,'8884'进程并不存在,而另一个'mstsc'确实存在。所以我想知道'mstsc'在调用子进程时是否创建了另一个子进程。请帮忙? 最佳答案 嗯,我仍然是Python的新手,但你仍然可以通过这个。Popen类使用windows中的CreateProcess函数来执行子程序。CreateProcess函数创

windows - 我需要 Hook 什么进程 API 来跟踪服务?

当Windows中的服务或应用程序启动、停止以及它是成功退出还是出现错误代码时,我需要跟踪日志。据我了解,许多服务不会记录自己的开始和停止时间,或者如果它们正确退出,所以似乎要走的路必须在API中插入一个钩子(Hook),以便在服务/应用程序请求时捕获处理空间并放弃它。我的问题是我需要hook什么函数才能完成这个,这有可能吗?我需要它在64位WindowsXP和7上工作。 最佳答案 我认为最好的办法是使用设备驱动程序。参见PsSetCreateProcessNotifyRoutine.

c++ - 在 XP 中也加载的 DLL 中使用新的 Vista 线程池 API(XP 中未使用线程池代码)

我们正在生成一个同时针对Windows7和XP的DLL。我们希望我们的DLL在Windows7系统上加载时使用较新的Vista线程池API,而不是在XP系统上加载时。现在,我们尝试编译带有操作系统运行时检测的DLL,以确保VistaAPI永远不会在XP系统上使用,但我们仍然无法在WindowsXP系统上注册我们的DLL,因为缺少kernel32中的依赖项.dll...除了构建两个单独版本的DLL之外,还有其他解决方法吗?提前致谢 最佳答案 为什么不使用LoadLibrary动态加载kernel32.dll,然后使用GetProcAd

python - 创建守护线程

我试图在Windows下创建一个守护线程,但我不知道我做错了什么。下面的代码充当普通线程:我没有看到“结束运行”写入控制台。有什么建议吗?defstart(self):self.isrunning=Trueself.thread=threading.Thread(name="GPSData",target=self.thread_run)self.thread.setDaemon(True)self.thread.run()print"EndRun"defthread_run(self):whileself.isrunning:data=self.readline()print(dat

windows - 调用 system() 不会在我的 Windows 进程之间创建父子关系

我正在使用Perl创建Windows服务。为此,我正在使用Win32::Daemon。处理服务(接受启动和停止回调等)的Perl脚本使用system()命令调用.bat文件,最终调用我的最终Perl程序。问题是当我停止服务时,system()启动的进程没有关闭,最终进程(由system()生成的进程启动)也没有关闭)。好像进程之间没有“父子”关系(停止Windows服务通常会导致所有相关进程同时关闭)。编辑:我在上面添加了代码。我只是展示了注册服务回调和调用StartService的主要函数,以及三个主要回调:启动、运行、停止。submain{#registeringserviceca

windows - 创建进程退出时 Windows 中的命名管道会发生什么情况?

场景:进程使用CreateNamedPipe()创建管道并使用ConnectNamedPipe()连接到它,传输一些数据,然后退出(没有清理)。管道是否持续存在?它的另一面是在不同的进程中使用CreateFile()打开的,是否在创建进程退出时出错?更一般地说,命名管道的生命周期是多长?应该如何清理陈旧的管道? 最佳答案 管道是内核对象,它们会一直存在,直到所有关闭它们上的句柄。如果客户端没有好好说再见而其他进程继续使用它,您可能会得到ERROR_BROKEN_PIPE。 关于windo

c++ - PostMessage 能否使工作线程中的变量更改在 GetMessage 之后在 UI 线程中可见?

我的问题实际上是,如果我在另一个线程中写一个变量,然后PostMessage到一个Wnd,UI线程中的GetMessage是否会与它同步,我可以安全地读取变量?背景是:我想使用PostMessage从后台线程更新UI,并且担心数据争用。我需要其他同步实用程序吗?谢谢。编辑:标题很乱,改一下。具体案例:假设我想更新一个std::string,它是一个全局变量。由于我在PostMessage之前更新了string,我可以在处理该消息的WindowProc中安全地读取string吗?我熟悉C++11多线程术语,例如happens-before、sequence-before、synchron