從here,你已經知道的參數是:
Function Open(Access, ShareMode)
,他們也說,
訪問可以設置爲以下之一:
MQ_PEEK_ACCESS:只能查看消息。他們不能從隊列中刪除。
MQ_SEND_ACCESS:消息只能發送到隊列。
MQ_RECEIVE_ACCESS:可以從隊列中檢索(讀取和刪除)消息,窺視或清除消息。有關限制誰可以從隊列中檢索消息的信息,請參閱ShareMode參數的說明。
MQ_PEEK_ACCESS | MQ_ADMIN_ACCESS:本地傳出隊列中的消息只能在(在不被從隊列中刪除的情況下讀取)時窺視。
MQ_RECEIVE_ACCESS | MQ_ADMIN_ACCESS:可以檢索本地傳出隊列中的郵件(讀取並從隊列中移除),偷窺(讀取時不會從隊列中移除)或清除(刪除)。
在MSDN的文檔爲MQACCESS他們給你的數值爲常數:
typedef enum
{
MQ_RECEIVE_ACCESS = 1,
MQ_SEND_ACCESS = 2,
MQ_PEEK_ACCESS = 0x0020,
MQ_ADMIN_ACCESS = 0x0080
} MQACCESS;
第二個參數,ShareMode:
ShareMode指定誰可以訪問隊列。設置爲以下值之一:
MQ_DENY_NONE:默認值。該隊列適用於Everyone組的所有成員。如果將Access設置爲MQ_PEEK_ACCESS或MQ_SEND_ACCESS,則必須使用此設置。
MQ_DENY_RECEIVE_SHARE:限制那些可以從隊列中檢索消息到這個進程。如果已經打開隊列以便由另一個進程檢索消息,則此調用將失敗並生成MQ_ERROR_SHARING_VIOLATION(0xC00E0009)錯誤。僅當Access設置爲MQ_RECEIVE_ACCESS時才適用。
這些常量是:
Const MQ_DENY_NONE = 0
Const MQ_DENY_RECEIVE_SHARE = 1
這確實有點難以找到,但你可以得到它例如here,這是沒有太大的可靠的來源,但我相信這是正確的。
我現在可以讀取隊列中的第一條消息,謝謝:)不只是遍歷receive()來獲取每條消息 – 4razmus