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