информационная безопасность
без паники и всерьез
 подробно о проекте
Spanning Tree Protocol: недокументированное применениеСтрашный баг в WindowsСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Модульный ботнет от русских хакеров 
 Торвальдс и вайбтестеры 
 Атака на GitHub 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Подскажите, пожалуйста, как получить com-объект... 03.10.01 20:08  Число просмотров: 1117
Автор: + <Mikhail> Статус: Elderman
Отредактировано 04.10.01 03:44  Количество правок: 1
<"чистая" ссылка>
> Как получить COM-объект IMessage из письма Outlook Express?
> Есть HWND окна с письмом :))

sozdai ATL project i ispolzui ATLAPI AtlAxGetControl( HWND h, IUnknown** pp )
poluchish pointer na interface controla, a dalshe poshel queryInterface i t.d.

> Или, если кто знает, как получить текст письма?

Bot Primer is MSDN kak kovyriatsia v messagah:

#import "d:\program files\common files\system\ado\msado15.dll" no_namespace raw_interfaces_only
#import <cdosys.dll> no_namespace raw_interfaces_only
#include <iostream.h>
#include <assert.h>
#include <wchar.h>

void main(int argc, char* argv[])
{
  CoInitialize(NULL);

  IDropDirectory* pDropDir = NULL;
  IMessages*      pMsgs    = NULL;
  IUnknown*       pUnk     = NULL;
  IEnumVARIANT*   pEnum    = NULL;

  CoCreateInstance(
                  __uuidof(DropDirectory),
                  NULL,
                  CLSCTX_SERVER,
                  __uuidof(IDropDirectory),
                  (void**)&pDropDir));

  pDropDir->GetMessages(L"",&pMsgs);
  long count = 0;
  pMsgs->get_Count(&count);
  cout << count << endl;

   pMsgs->get__NewEnum(&pUnk);
   pUnk->QueryInterface(__uuidof(IEnumVARIANT),(void**)&pEnum);

   ULONG cFetched = 0;
   VARIANT var;
   VariantInit(&var);
   while (1) {
      cFetched = 0;
      pEnum->Next(1,&var,&cFetched);
      cout << "fetched: " << cFetched << endl;
      if(cFetched == 0)
         break;
      assert(var.vt == VT_DISPATCH);
      IMessage* pMsg = NULL;

       var.pdispVal->QueryInterface(__uuidof(IMessage),(void**)&pMsg);
       var.pdispVal->Release();
       VariantClear(&var);
       VARIANT varIntf;
       VariantInit(&varIntf);
       V_VT(&varIntf) = VT_DISPATCH;
       varIntf.pdispVal = pMsg;
       varIntf.pdispVal->AddRef();
       BSTR szFilename;
       pMsgs->get_FileName(varIntf,&szFilename);
       VariantClear(&varIntf);

       cout << _bstr_t(szFilename) << endl;
       wchar_t* pwchar;
       pwchar = wcsrchr(szFilename,'\\');
       _bstr_t mailfilename(pwchar+1);
       BSTR to;
       pMsg->get_To(&to);
       wchar_t* pWChar = to;

       wchar_t szbuffer[100];
       wchar_t lt = '<';
       wchar_t amp = '@';
       wchar_t* pFirst;
       unsigned int curPos = 0;
       _bstr_t mailboxesroot = "c:\\mailboxes\\";

       for(unsigned int k = 0;k<wcslen(pWChar);k++){
          if(pWChar[k] == lt) {
          pFirst = &pWChar[k];
          curPos = k;
       }
       if(pWChar[k] == amp) {
          cout << "amp" << endl;
          wcsncpy(szbuffer,pFirst+1,k-curPos-1); 
          buffer[k-curPos-1] = (wchar_t)'\0';
         _bstr_t filen = mailboxesroot + _bstr_t(buffer) + "\\" + _bstr_t(mailfilename);
         _Stream* pStrm = NULL;
         pMsg->GetStream(&pStrm);
         pStrm->SaveToFile(filen,adSaveCreateOverWrite);
         pStrm->Release();
     }
   }
   pMsg->Release();

  }

  CoUninitialize();
}


---
<programming>
Подскажите, пожалуйста, как получить com-объект... 03.10.01 16:52  
Автор: Denis (not a hacker) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как получить COM-объект IMessage из письма Outlook Express? Есть HWND окна с письмом :))
Или, если кто знает, как получить текст письма?
Подскажите, пожалуйста, как получить com-объект... 03.10.01 20:08  
Автор: + <Mikhail> Статус: Elderman
Отредактировано 04.10.01 03:44  Количество правок: 1
<"чистая" ссылка>
> Как получить COM-объект IMessage из письма Outlook Express?
> Есть HWND окна с письмом :))

sozdai ATL project i ispolzui ATLAPI AtlAxGetControl( HWND h, IUnknown** pp )
poluchish pointer na interface controla, a dalshe poshel queryInterface i t.d.

> Или, если кто знает, как получить текст письма?

Bot Primer is MSDN kak kovyriatsia v messagah:

#import "d:\program files\common files\system\ado\msado15.dll" no_namespace raw_interfaces_only
#import <cdosys.dll> no_namespace raw_interfaces_only
#include <iostream.h>
#include <assert.h>
#include <wchar.h>

void main(int argc, char* argv[])
{
  CoInitialize(NULL);

  IDropDirectory* pDropDir = NULL;
  IMessages*      pMsgs    = NULL;
  IUnknown*       pUnk     = NULL;
  IEnumVARIANT*   pEnum    = NULL;

  CoCreateInstance(
                  __uuidof(DropDirectory),
                  NULL,
                  CLSCTX_SERVER,
                  __uuidof(IDropDirectory),
                  (void**)&pDropDir));

  pDropDir->GetMessages(L"",&pMsgs);
  long count = 0;
  pMsgs->get_Count(&count);
  cout << count << endl;

   pMsgs->get__NewEnum(&pUnk);
   pUnk->QueryInterface(__uuidof(IEnumVARIANT),(void**)&pEnum);

   ULONG cFetched = 0;
   VARIANT var;
   VariantInit(&var);
   while (1) {
      cFetched = 0;
      pEnum->Next(1,&var,&cFetched);
      cout << "fetched: " << cFetched << endl;
      if(cFetched == 0)
         break;
      assert(var.vt == VT_DISPATCH);
      IMessage* pMsg = NULL;

       var.pdispVal->QueryInterface(__uuidof(IMessage),(void**)&pMsg);
       var.pdispVal->Release();
       VariantClear(&var);
       VARIANT varIntf;
       VariantInit(&varIntf);
       V_VT(&varIntf) = VT_DISPATCH;
       varIntf.pdispVal = pMsg;
       varIntf.pdispVal->AddRef();
       BSTR szFilename;
       pMsgs->get_FileName(varIntf,&szFilename);
       VariantClear(&varIntf);

       cout << _bstr_t(szFilename) << endl;
       wchar_t* pwchar;
       pwchar = wcsrchr(szFilename,'\\');
       _bstr_t mailfilename(pwchar+1);
       BSTR to;
       pMsg->get_To(&to);
       wchar_t* pWChar = to;

       wchar_t szbuffer[100];
       wchar_t lt = '<';
       wchar_t amp = '@';
       wchar_t* pFirst;
       unsigned int curPos = 0;
       _bstr_t mailboxesroot = "c:\\mailboxes\\";

       for(unsigned int k = 0;k<wcslen(pWChar);k++){
          if(pWChar[k] == lt) {
          pFirst = &pWChar[k];
          curPos = k;
       }
       if(pWChar[k] == amp) {
          cout << "amp" << endl;
          wcsncpy(szbuffer,pFirst+1,k-curPos-1); 
          buffer[k-curPos-1] = (wchar_t)'\0';
         _bstr_t filen = mailboxesroot + _bstr_t(buffer) + "\\" + _bstr_t(mailfilename);
         _Stream* pStrm = NULL;
         pMsg->GetStream(&pStrm);
         pStrm->SaveToFile(filen,adSaveCreateOverWrite);
         pStrm->Release();
     }
   }
   pMsg->Release();

  }

  CoUninitialize();
}


---
1





Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach