2010-03-23 28 views
1

使用C/C++的Windows API RegisterWindowMessage()不同RegisterWindowMessage()的名字出現在同一個

我使用的應用程序的消息名稱的名稱。

接下來我打電話CreatMutex()使用相同的名稱,以便我可以告訴它是否已經存在。如果是這樣,我知道這個應用程序已經在運行,不會啓動它的第二個實例。 這是我的功能運行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; 
} 

當我回來,我需要做一些進一步的測試,因爲你有一個好點。

+0

我假設這意味着當您第二次運行AutoAppend時,它將返回到已經運行的AutoConvert。否則你的互斥體在它們應該是不一樣的時候也不是唯一的。 –

回答

1

此代碼:

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

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

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

爲我打印兩種不同的整數值(即已經註冊兩個不同的消息) - 這是什麼打印的嗎?

+0

感謝您的意見。往上看 –

相關問題