Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ win32 hInstances是唯一的吗?_C++_Win32 Process_Hinstance - Fatal编程技术网

C++ win32 hInstances是唯一的吗?

C++ win32 hInstances是唯一的吗?,c++,win32-process,hinstance,C++,Win32 Process,Hinstance,我正在编写一个缓存处理程序,它需要应用程序的每个实例都有一个唯一的ID号,这样当有人在两个实例中打开两个项目时,缓存就不会混淆。根据,似乎传递给WinMain的HINSTANCE是模块的句柄,它可能只是exe,而不一定是唯一的进程ID 该线程似乎表示,关于要运行的模块/进程的信息只被带到内存中一次,HINSTANCE是一个句柄。这是否意味着HINSTANCE不能用作流程的唯一标识符,因为它们都指向同一个模块?还是我弄错了?HINSTANCE基本上是过时的,是从16位天数中保留下来的。它对应用程序

我正在编写一个缓存处理程序,它需要应用程序的每个实例都有一个唯一的ID号,这样当有人在两个实例中打开两个项目时,缓存就不会混淆。根据,似乎传递给WinMain的HINSTANCE是模块的句柄,它可能只是exe,而不一定是唯一的进程ID

该线程似乎表示,关于要运行的模块/进程的信息只被带到内存中一次,HINSTANCE是一个句柄。这是否意味着HINSTANCE不能用作流程的唯一标识符,因为它们都指向同一个模块?还是我弄错了?

HINSTANCE基本上是过时的,是从16位天数中保留下来的。它对应用程序的所有实例都具有相同的值

对于唯一的进程ID,请使用

h状态基本上是过时的,从16位天数延迟。它对应用程序的所有实例都具有相同的值

对于唯一的进程ID,请在Win32上使用

,HINSTANCE对应于可执行文件的HMODULE,而HMODULE又归结为其基址。它在任何方面都不是进程所独有的,因为给定的可执行文件总是在其请求的基址处加载

您可以在任务中使用进程ID,或者,如果进程ID被回收是一个问题,或者如果您更喜欢跨机器使用唯一的ID,则只需在启动时生成一个新的GUID并将其用作ID。

在Win32上,HINSTANCE对应于可执行文件的HMODULE,而HMODULE又归结为其基本地址。它在任何方面都不是进程所独有的,因为给定的可执行文件总是在其请求的基址处加载


您可以在任务中使用进程ID,或者,如果进程ID被回收是一个问题,或者如果您希望跨机器使用唯一的ID,则只需在启动时生成一个新的GUID并将其用作ID。

一种方法是应用程序使用其主窗口句柄将消息传递到缓存,即它生成的GUID,以及它的进程ID。请注意,进程ID和HWND可以重复使用,因此您的缓存不应假定HWND和PID始终指向应用程序的实例。一种方法是应用程序使用其主窗口句柄(它生成的GUID)将消息后发到缓存,还有它的进程ID。请注意,进程ID和HWND可以重复使用,因此您的缓存不应假定HWND和PID始终指向您的应用程序的一个实例。这很好地工作,这正是我所需要的。非常感谢。这很好用,这正是我需要的。非常感谢。