반응형


--------------------------------------------------------------------------------------
이미저장한 경우인지 확인방법
--------------------------------------------------------------------------------------

  IMSMQQueuePtr     pPeekQ = pInfo->Open(MQ_PEEK_ACCESS, MQ_DENY_NONE);
  // 같은 항목이 존재하는지 확인한 후 삽입한다.
  _variant_t       vtTimeOut((long)1000);        // 1 second until receive time-out
  _variant_t       bvtWantBody((bool)true);      // Set to retrieve message body
  _bstr_t           bstrBody;
  WCHAR   strCur[MAX_PATH];
  IMSMQMessagePtr   pRetMsg(L"MSMQ.MSMQMessage");
  pPeekQ->Reset();
  pRetMsg = pPeekQ->PeekCurrent(&vtMissing, &bvtWantBody, &vtTimeOut );
  while(pRetMsg != NULL)
  {
   ZeroMemory(strCur, sizeof(strCur));
   bstrBody = pRetMsg->Body;
   StringCchCopy(strCur, MAX_PATH, bstrBody);
   if(memcmp(strCur, strMessage, nSize) == 0)
   {
    bExist = TRUE;
    break;
   }

   pRetMsg = pPeekQ->PeekNext(&vtMissing, &bvtWantBody, &vtTimeOut);
  }

  pPeekQ->Close();
--------------------------------------------------------------------------------------
메세지큐에 등록된 갯수얻기
--------------------------------------------------------------------------------------
 int nCount = 0;
 QUEUEPROPID   propId[1];
 MQPROPVARIANT propVar[1];
 HRESULT       propStatus[1];
 DWORD         cprop = 0;

 propId [cprop] = PROPID_MGMT_QUEUE_MESSAGE_COUNT;
 propVar[cprop].vt = VT_NULL;
 ++cprop;
 
 MQMGMTPROPS mqProps;
 mqProps.cProp    = cprop;
 mqProps.aPropID  = propId;
 mqProps.aPropVar = propVar;
 mqProps.aStatus  = propStatus;

 WCHAR wszFormatName[MAX_PATH] ={0};
 WCHAR   *wszFormatNamePrefix = L"queue=DIRECT=OS:";
 StringCchPrintf(wszFormatName, MAX_PATH, L"%s%s\\%s", wszFormatNamePrefix, strPC, Queue);

   HRESULT hr = MQMgmtGetInfo( strPC, wszFormatName, &mqProps );
 if( FAILED( hr ) )
 {
    return 0;
 }
 else
 {
    return mqProps.aPropVar[0].ulVal;
 }
  return nCount;

반응형

[MSMQ]메시지 큐에 대하여

IT/개발관련 담기+ 2011. 11. 2. 09:15 Posted by Imtraveller
반응형
1. 설치 방법

.NET Framework 3.5
.NET Framework 4

다음 절차에서는 메시지 큐 4.0 및 메시지 큐 3.0을 설치하는 방법을 보여 줍니다.

참고:
Windows XP 및 Windows Server 2003에서는 메시지 큐 4.0을 사용할 수 없습니다.

 

Windows Server 2008에 메시지 큐 4.0을 설치하려면
  1. 서버 관리자에서 기능을 클릭합니다.

  2. 오른쪽 창의 기능 요약에서 기능 추가를 클릭합니다.

  3. 결과 창에서 메시지 큐를 확장합니다.

  4. 메시지 큐 서비스를 확장합니다.

  5. 디렉터리 서비스 통합을 클릭한 다음(도메인에 연결된 컴퓨터의 경우) HTTP 지원을 클릭합니다.

  6. 다음을 클릭한 후 설치를 클릭합니다.

Windows Vista에 메시지 큐 4.0을 설치하려면
  1. 제어판을 엽니다.

  2. 프로그램을 클릭한 다음 프로그램 및 기능에서 Windows 기능 사용/사용 안 함을 클릭합니다.

  3. MSMQ(Microsoft Message Queue) Server, MSMQ(Microsoft Message Queue) Server Core를 차례로 확장한 후 설치할 다음과 같은 메시지 큐 기능 확인란을 선택합니다.

    • MSMQ Active Directory 도메인 서비스 통합(도메인에 연결된 컴퓨터의 경우)
    • MSMQ HTTP 지원
  4. 확인을 클릭합니다.

  5. 컴퓨터를 다시 시작할지 묻는 메시지가 나타나면 확인을 클릭하여 설치를 완료합니다.

메시지 큐 3.0을 설치하려면
  1. 제어판을 엽니다.

  2. 프로그램 추가/제거를 클릭한 다음 Windows 구성 요소 추가를 클릭합니다.

  3. 메시지 큐를 선택하고 자세히를 클릭합니다.

참고:
Windows Server 2003을 실행 중인 경우 메시지 큐에 액세스하기 위해 응용 프로그램 서버를 선택합니다.

  1. MSMQ HTTP 지원을 비롯하여 모든 옵션이 자세히 페이지에 선택되어 있는지 확인합니다.
  2. 확인을 클릭하여 자세히 페이지를 끝낸 후 다음을 클릭합니다. 설치를 완료합니다.
  3. 컴퓨터를 다시 시작할지 묻는 메시지가 나타나면 확인을 클릭하여 설치를 완료합니다.
2. 관련 url
http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&keywords=%C0%D0%C0%BB%B0%C5%B8%AE&page=37&wr_id=33925
반응형
반응형

아래의 코드와 같다.
코드 빌드는 해보지 않아서 오류있을 수 있음, 하지만 방법은 이렇게하면된다.
HMODULE hMod = NULL;
typedef BOOL (WINAPI *PFN_CHANGEWINDOWMESSAGEFILTER(UINT message, DWORD dwFlag);

CHANGEWINDOWMESSAGEFILTER fnChgMsgFilter;
hMod = LoadLibrary("USER32.DLL");
if(hMod != NULL)
{
 fnChgMsgFilter=(PFN_CHANGEWINDOWMESSAGEFILTER)GetProcAddress(hMod,"ChangeWindowMessageFilter");
 if(fnChgMsgFilter != NULL)
 {
     fnChgMsgFilter (WM_xxx,1);
 }
}

반응형