1


0

異なるRegisterWindowMessage()名が同じように見える

C / C ++ Windows APIの使用http://msdn.microsoft.com/en-us/library/ms644947(VS.85).aspx [RegisterWindowMessage()]

メッセージ名としてアプリケーションの名前を使用しています。

次に、同じ名前を使用してhttp://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx [CreatMutex()]を呼び出して、既に存在するかどうかを確認できるようにします。 存在する場合、このアプリケーションは既に実行中であり、2番目のインスタンスを起動することはありません。 これは私の関数Running()の操作です

私の混乱はメッセージ名についてです。 「AutoConvert.exe」と「AutoAppend.exe」は同じ名前として解釈されるようです。 Why?

追加:自分のマシンではないが、これは両方のアプリで呼び出され、アプリが現在実行されているかどうかを確認する機能のようなものです

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;
}

私が戻ってきたとき、あなたが良い点を示しているので、さらにテストをする必要があります。

1 Answer


1


このコード:

#include
#include

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

    printf( "%d %d\n", m1, m2 );
}

私にとっては2つの異なる整数値を印刷します(つまり 2つの異なるメッセージを登録しています)-何を印刷しますか?