问题标签 [win32-process]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
307 浏览

internet-explorer - 从 EXE 中读取浏览器“内存 HTML”

我需要从外部进程(EXE 应用程序)读取“Internet Explorer 8”中显示的网页的“内存中”HTML。

更简单地说,假设您在浏览器中加载一个页面,其中显示了一些“输入文本”,然后您填写输入并“在”提交页面之前我需要切换到我的 EXE 应用程序并读取填写的值输入。

我尝试了 SPY++,但网页中的任何 INPUT 都没有“类”(就像普通 Win32 应用程序中的文本框一样),并且浏览器的整个客户区域显示为“Internet Explorer_Server”类。

我已经这样做了很多次来集成应用程序之间的数据,但总是针对 Win32 应用程序,这是我第一次尝试从浏览器读取数据,我真的很茫然。

我唯一确定的想法是我需要以某种方式访问​​正在运行的浏览器的实际 DOM。

请注意,我不能使用某种 Web 控件来加载页面然后解析,因为加载的页面将为空,而我需要的是用户在提交页面之前输入的数据。

任何从哪里开始寻找的建议将不胜感激:)

0 投票
1 回答
2282 浏览

c++ - 如何确保进程设置为 REAL_TIME 优先级

我正在 Windows XP 上使用 Visual Studio 开发控制台 C++ 应用程序,该应用程序必须为调度程序提供最高优先级。

我的意思是没有其他系统进程应该干扰它,因为它是一个实时数据采集系统,调整为每 10 毫秒刷新一次帧缓冲区。

我试图将每帧的时间长度保存到文件中,但在我想要的时间周围发现了一个奇怪的“量化”。为什么?

我还发现有时长度是我的基本帧时间的倍数,这是由干扰内部操作系统进程引起的吗?

有没有办法确保我的程序的最高优先级?

0 投票
2 回答
5925 浏览

windows - 查找给定进程ID的进程的所有线程

我正在尝试查找是否有更好的方法来查找属于当前进程的所有线程 ID。看起来使用带有 TH32CS_SNAPTHREAD 的 CreateToolhelp32Snapshot 并迭代线程以检查线程的进程 id 是否等于当前进程 id,这是一种解决方案,但我想避免迭代所有正在运行的线程。我只想遍历属于给定进程的线程。如果有快速简单的 API,请告诉我。我需要用 C++ 来做。

谢谢,阿比奈。

0 投票
5 回答
642 浏览

c++ - FindFirstFile() 可以用来移动文件吗

FindFirstFile() 可以用于将文件从一个目录移动或复制到另一个目录吗?既然它返回一个句柄,那这个句柄可以用来做吗?

0 投票
3 回答
5768 浏览

c++ - 为什么 RemoveDirectory 函数不删除最顶层的文件夹?

参考:codeguru.com/forum/showthread.php?t=239271

使用以下功能删除文件夹时,除了最上面的文件夹外,所有文件夹、子文件夹和文件都将被删除。说路径c:\folder1\folder2下的所有东西folder2都被删除,除了folder2.

感谢您在查找问题方面提供的任何帮助。在调试过程中,我注意到该FindClose函数已成功关闭文件句柄,但GetLastError返回 32(“该进程无法访问该文件,因为它正在被另一个进程使用”)但是在尝试使用进程资源管理器后我不知道。

0 投票
2 回答
548 浏览

multithreading - 在 Win32 进程中运行的第一个线程是“主线程”吗?需要理解语义

我使用CreateProcess()with创建了一个进程CREATE_SUSPENDED,然后继续在远程进程中创建一小块代码来加载一个 DLL 并调用一个函数(由该 DLL 导出),使用VirtualAllocEx()(with ..., MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE), WriteProcessMemory(),然后调用FlushInstructionCache()该内存块与代码。

之后我调用CreateRemoteThread()调用该代码,为我创建一个hRemoteThread. 我已验证远程代码按预期工作。注意:此代码仅返回,它不调用除LoadLibrary()and之外的任何 API GetProcAddress(),然后调用导出的存根函数,该函数当前仅返回一个值,然后将作为线程的退出状态传递。

现在出现了一个特殊的观察结果:请记住,PROCESS_INFORMATION::hThread仍然是暂停的。当我只是忽略hRemoteThread的退出代码并且也不等待它退出时,一切都“很好”。调用的例程CreateRemoteThread()返回并PROCESS_INFORMATION::hThread恢复,(远程)程序实际上开始运行。

但是,如果我调用WaitForSingleObject(hRemoteThread, INFINITE)或执行以下操作(具有相同的效果):

随后CloseHandle()会导致在恢复hRemoteThread之前完成,PROCESS_INFORMATION::hThread并且该过程只是“消失”。hRemoteThread允许以某种方式完成而不PROCESS_INFORMATION::hThread导致进程终止就足够了。

这看起来有点像竞态条件,因为在某些情况下hRemoteThread可能仍然更快,并且即使我保留代码原样,该过程也可能仍然“消失”。

这是否意味着在进程中运行的第一个线程自动成为主线程并且该主线程有特殊规则?

我一直认为进程在其最后一个线程死亡时结束,而不是在特定线程死亡时结束。

另请注意:这里没有任何调用ExitProcess(),因为hRemoteThread只是返回并且PROCESS_INFORMATION::hThread在我等待hRemoteThread返回时仍然暂停。

这发生在 32 位 Windows XP SP3 上。

编辑:我刚刚尝试了 Sysinternals Process Monitor 来查看发生了什么,我可以验证我之前的观察结果。注入的代码不会崩溃或任何事情,相反,我会看到,如果我不等待线程,它不会在我关闭注入代码的程序之前退出。我在考虑是否CloseHandle(hRemoteThread)应该推迟致电或其他什么...

编辑+1:不是CloseHandle(). 如果我只是为了测试而忽略它,那么在等待线程完成时行为不会改变。

0 投票
1 回答
1323 浏览

c++ - 如何使用 WinAPI 向 Internet Explorer 9 发送消息

环境:
windows 7
visual studio 2010 c++ Win32 API
Internet Explorer 9
OpenGL

项目目标:
在 3d 平面(GL_QUADS)上实时纹理化 Internet Explorer9 的屏幕。和鼠标在 3d 平面上拾取,具有相对鼠标位置的点击消息发布在真正的 Internet Explorer 9.
目标是“控制其他程序在我的应用程序上使用 3d 纹理和鼠标动作”

代码:

我使用了SendMessage的PostMessage,但结果是一样的。 互联网探索不发送任何反应。

我使用 Microsoft Spy++ 消息窗口观看。

接下来是使用我的应用程序代码发送消息:

我想还有一些消息发送。但我不知道什么消息可以做到这一点。
谁知道它的解决方案?
谁知道用这种方式控制一般应用程序?

帮我!

0 投票
3 回答
4533 浏览

perl - 为什么我的 cmd.exe 进程在通过 perl 作为服务启动时没有设置“title”属性?

我正在让我的 Perl 作为 Windows 上的服务软运行。

为此,我使用 Win32::Daemon 模块来操作 SCM(服务配置管理器)并启动/停止我的服务。

要启动我的服务,我使用system() perl 命令。

该命令如下所示:

当我直接从 cmd.exe 启动此命令时,进程的标题设置得很好。

通过我启动的服务启动命令时,该进程的标题为空。任务管理器说启动的命令是:

我错过了什么吗?

注意:我肯定会尝试为我的服务设置标题,因为我没有找到比在服务的停止挂钩中启动“taskkill”命令更简洁的方法来停止它,并将标题名称作为参数(不知道如何抓到生成进程的PID)

谢谢。

0 投票
1 回答
8530 浏览

c++ - GetPrivateProfileInt - 只读取默认值

我正在尝试读取具有内容的 c++ 中的 .init 配置文件。

[IP地址]

IP地址=169.254.115.22

[扫描配置]

扫描频率=2500

扫描分辨率=2500

起始角度=700000

停止角=1100000

到目前为止,我已经使用此代码来读取数据。我的项目是 Unicode 字符集,因此在字符串值之前使用了 L。

但我只得到变量中的默认值,而不是文件中的正确值。我还没有对注册表做任何事情。为了获得正确的值,我必须在注册表中做些什么..

任何建议都会有所帮助谢谢。

0 投票
1 回答
173 浏览

c++ - 在win32,c ++中的2个进程之间共享相同的标准输出

我的 Win32 控制台应用程序中有 2 个进程。1 个进程 - 主程序 1 个进程 - cli 进程。

这两个进程通过 UDP 数据包(套接字)进行通信。Cli 向主程序中的特定实体发出 DUMP 请求。

我希望将转储打印在 CLI 的标准输出上(使用 printf 在主程序标准输出中打印它)。

我该怎么做?我想传递 FILE* 或类似的....传递要转储到的输出设备。

如何做呢?如果可能的话

谢谢 yoav