草庐IT

c - ProcessID困惑

coder 2024-06-16 原文

我很困惑。

为什么 notepad.exe 有三个不同的进程 ID?

1)Spy++ 说 000000A48(嗯?)

2)任务管理器说:2632

3)GetWindowThreadProcessId 说:1744

我想 2632 是在 SetWindowsHookEx 中使用的正确值(作为 dwThreadId 参数),但是如果 GetWindowThreadProcessId 返回其他内容,我如何找到正确的值?

最佳答案

一个进程只有一个唯一的进程 ID。但是 Spy++ 将值报告为十六进制,而任务管理器将其报告为十进制。现在,A48(十六进制)等于 2632(十进制)。

另一个值 1744 是线程 ID。那是不同对象的ID。线程和进程不是一回事。一个进程包含一个或多个线程。

当您调用 GetWindowThreadProcessId 时,它会返回窗口的线程 ID 作为函数的返回值。第二个参数可用于返回拥有该线程的进程的进程 ID。像这样调用它:

DWORD pid;
DWORD tid = GetWindowThreadProcessId(wnd, &pid);

函数返回后,pid包含进程ID。

您正在尝试安装一个 Hook 并且需要一个线程 ID。在您的代码中使用变量 npThreadId

关于c - ProcessID困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16625280/

有关c - ProcessID困惑的更多相关文章

  1. ruby - 对回文产品问题感到困惑 - 2

    我一直在学习Ruby,所以我想我应该尝试一下项目中的一些Euler难题。尴尬的是,我只完成了问题4...问题4如下:Apalindromicnumberreadsthesamebothways.Thelargestpalindromemadefromtheproductoftwo2-digitnumbersis9009=91×99.Findthelargestpalindromemadefromtheproductoftwo3-digitnumbers.所以我想我会在嵌套的for循环中从999循环到100并测试回文,然后在找到第一个(应该是最大的)时跳出循环:final=nilrang

  2. Ruby enum_for 困惑 - 2

    我正在尝试查找名为Command的特定类型的所有子类在Ruby中,我遇到了以下代码,它完美地完成了这个技巧,但是我真的不明白它是如何工作的,主要是class部分。我已经尝试阅读此内容,但我觉得我仍然缺少一些Ruby魔法。有人可以向我解释一下吗:-)ObjectSpace.enum_for(:each_object,class 最佳答案 class返回Command的单例类.这是Command的唯一(直接)实例的类。在ruby​​中,C的子类的单例类是C的单例类的子类。所以Command的所有子类都有继承自Command的单例类的单例

  3. ruby - 关于 ruby​​ 类变量的困惑 - 2

    假设一个使用类变量的简单ruby​​程序,classHolder@@var=99defHolder.var=(val)@@var=valenddefvar@@varendend@@var="toplevelvariable"a=Holder.newputsa.var我猜结果应该是99,但输出不是99。我想知道为什么。由于类变量的范围是类,我假设@@var="toplevelvariable"行不会影响类中的变量。 最佳答案 @@var是Holder的类变量。而顶层的@@var不是Holder的同名类变量@@var,是你在创建类Obj

  4. ruby - 关于 CoffeeScript 变量范围的困惑 - 2

    我正在尝试了解CoffeeScript变量的范围。根据文档:ThisbehavioriseffectivelyidenticaltoRuby'sscopeforlocalvariables.但是,我发现它的工作方式不同。在CoffeeScript中a=1changeValue=->a=3changeValue()console.log"a:#{a}"#Thisdisplays3在ruby中a=1deffa=3endputsa#Thisdisplays1有人能解释一下吗? 最佳答案 Ruby的局部变量(以[a-z_]开头)arerea

  5. ruby-on-rails - 关于将实例变量传递给 redirect_to 方法的困惑。正如 Rails 指南中所见 - 2

    我正在研究ruby​​onrails指南,即http://guides.rubyonrails.org/layouts_and_rendering.html上的“布局和渲染”主题我对将实例变量传递给redirect_to方法感到困惑。这怎么可能?我认为redirect_to与重定向到另一个网页或url相关。在指南中给出的示例中,它说了以下内容:2.2.2RenderinganAction’sViewIfyouwanttorendertheviewthatcorrespondstoadifferentactionwithinthesametemplate,youcanuserenderw

  6. ruby - 对 "respond_to?"方法感到困惑 - 2

    编辑:我使用的是Ruby2.0.0版我在文件example.rb中有以下代码defsay_helloputs'hi'endputsrespond_to?(:say_hello)say_hello运行此代码时,输​​出为:falsehi我很困惑为什么“respond_to”会返回false?什么时候可以使用那个方法。“respond_to?”方法似乎是这样工作的:classPersondefsay_byeputs'bye'endendmike=Person.newputsmike.respond_to?(:say_bye)mike.say_bye输出是:truebye有人知道为什么要“r

  7. ruby - Homebrew 权限困惑 - 2

    我从我的管理员帐户安装了Homebrew。如果我从该帐户运行brewdoctor,我不会收到任何错误,但如果我从我的非管理员用户帐户运行brewdoctor,我会收到关于几个目录的警告(usr/local及其子目录)不可写,建议我chown它们。最近,我从我的非管理员帐户安装了RVM(以确保它对该用户可用并安装在他们的主目录中)。然后我运行rvminstall1.9.3(同样,作为非管理员)并收到一个错误警告我usr/local/bin不可写并且是必需的Homebrew。运行rvmrequirements会产生相同的警告。我是否应该以非管理员身份安装RVM,当我使用RVM安装ruby​

  8. javascript - 为 declare 解释这个令人困惑的 dojo 教程语法 - 2

    我正在阅读使用dojo'sdeclare的语法用于创建类。描述令人困惑:Thedeclarefunctionisdefinedinthedojo/_base/declaremodule.declareacceptsthreearguments:className,superClass,andproperties.ClassNameTheclassNameargumentrepresentsthenameoftheclass,includingthenamespace,tobecreated.Namedclassesareplacedwithintheglobalscope.Thecla

  9. javascript - 对跨源资源共享 (CORS) 的工作方式感到困惑 - 2

    根据我对CORS的了解,它是这样工作的:我有一个站点foo.com,它提供一个页面X。X想将数据发布到另一个域bar.com。如果bar.com启用了CORS(其header生成Access-Control-Allow-Originfoo.com),那么页面X现在可以将数据发送到bar.com。据我了解,要让CORS正常工作,一切都与在bar.com上进行设置有关,与foo.com无关。这一切都是为了确保bar.com不接受来自任何旧域的请求。但是这真的对我来说没有意义。我认为CORS旨在使foo.com能够决定允许X与谁通信。如果我们回到前面的示例,但这次X被狡猾的脚本破坏,因此它s

  10. Javascript:仍然对 instanceof 运算符感到困惑 - 2

    这article定义instanceof如下:Theinstanceofoperatortestswhetheranobjecthasinitsprototypechaintheprototypepropertyofaconstructor.这是一个公平的解释,在我从EloquentJavascript书中看到这段代码之前,生活一直很美好:functionTextCell(text){this.text=text.split("\n");}TextCell.prototype.minWidth=function(){returnthis.text.reduce(function(wid

随机推荐