Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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++ 不同的RegisterWindowMessage()名称显示相同_C++_Winapi_Windows Messages - Fatal编程技术网

C++ 不同的RegisterWindowMessage()名称显示相同

C++ 不同的RegisterWindowMessage()名称显示相同,c++,winapi,windows-messages,C++,Winapi,Windows Messages,使用C/C++Windows API 我正在使用应用程序的名称作为消息名称 接下来,我用相同的名字打电话,这样我就可以知道它是否已经存在。如果是的话,我知道这个应用程序已经在运行了,不需要启动它的第二个实例。 这是我的函数Running()的操作 我对消息名感到困惑。似乎“AutoConvert.exe”和“AutoAppend.exe”被解释为相同的名称。为什么? 增加: 我不在我的机器上,但这类似于在两个应用程序中调用的函数,用于检查应用程序当前是否正在运行 INT AlreadyRunni

使用C/C++Windows API

我正在使用应用程序的名称作为消息名称

接下来,我用相同的名字打电话,这样我就可以知道它是否已经存在。如果是的话,我知道这个应用程序已经在运行了,不需要启动它的第二个实例。 这是我的函数Running()的操作

我对消息名感到困惑。似乎“AutoConvert.exe”和“AutoAppend.exe”被解释为相同的名称。为什么?

增加: 我不在我的机器上,但这类似于在两个应用程序中调用的函数,用于检查应用程序当前是否正在运行

INT AlreadyRunning( string sAppName ) {
    INT runchk = RegisterWindowMessage( sAppName.c_str() );
    INT retval = CreateMutex( 0, 1, sAppName.c_str() );
    if( retval > 0 ) {
        if( GetLastError = ERROR_ALREADY_EXISTS ) {
        SendMessage HWND_BROADCAST, runchk, 0, 0;
        return 1;
        }
    }
    return 0;
}
当我回来时,我需要做一些进一步的测试,因为你提出了一个很好的观点。

此代码:

#include <windows.h>
#include <stdio.h>

int main() {
    int m1 = RegisterWindowMessage( "AutoConvert.exe" );
    int m2 = RegisterWindowMessage( "AutoAppend.exe" );

    printf( "%d %d\n", m1, m2 );
}
#包括
#包括
int main(){
int m1=RegisterWindowMessage(“AutoConvert.exe”);
int m2=RegisterWindowMessage(“AutoAppend.exe”);
printf(“%d%d\n”,m1,m2);
}
for me打印两个不同的整数值(即,它已注册了两条不同的消息)-它为您打印什么?

此代码:

#include <windows.h>
#include <stdio.h>

int main() {
    int m1 = RegisterWindowMessage( "AutoConvert.exe" );
    int m2 = RegisterWindowMessage( "AutoAppend.exe" );

    printf( "%d %d\n", m1, m2 );
}
#包括
#包括
int main(){
int m1=RegisterWindowMessage(“AutoConvert.exe”);
int m2=RegisterWindowMessage(“AutoAppend.exe”);
printf(“%d%d\n”,m1,m2);
}

for me打印两个不同的整数值(即,它已注册了两条不同的消息)-它为您打印什么?

谢谢您的评论。见上文谢谢您的评论。如上所述,我假设这意味着当您第二次运行AutoAppend时,它将返回到已经运行的AutoConvert。否则你的互斥量就不是唯一的,我想这意味着当你第二次运行AutoAppend时,它会返回到已经运行的AutoConvert。否则你的互斥锁就不是唯一的了。