亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? client.cpp

?? com編程
?? CPP
字號:
/////////////////////////////////////////////////////
//
// client.cpp
//
// Copyright 1997, Don Box/Addison Wesley
//
// This code accompanies the book "The Component
// Object Model" from Addison Wesley. Blah blah blah
//
//

#define _WIN32_WINNT 0x403
#include <windows.h>
#include <stdio.h>
#include <initguid.h>
#include <wchar.h>
#include "../include/COMChat.h"
#include "../include/COMChat_i.c"

void Error(HRESULT hr, const char *psz)
{
    printf("%s failed and returned 0x%x\n", psz, hr);
}

// utility function to print command line syntax
int Usage(void)
{
   const char *psz = 
    "usage: client.exe <action> <user> <host>\n"
    "   where:\n"
    "          action = /sessions|/chat:session|/delete:session\n"
    "          user = /user:domain\\user /password:pw |"
                "/anonymous | <nothing>\n"
    "          host = /host:hostname | <nothing>\n";
   printf(psz);
   return -1;
}

// utility function for printing a list of strings
void PrintAllStrings(IEnumString *pes)
{
    enum { CHUNKSIZE = 64 };
    OLECHAR *rgpwsz[CHUNKSIZE];
    ULONG cFetched;
    HRESULT hr;
    do
    {
        hr = pes->Next(CHUNKSIZE, rgpwsz, &cFetched);
        if (SUCCEEDED(hr))
        {
            for (ULONG i = 0; i < cFetched; i++)
                if (rgpwsz[i])
                {
                    wprintf(L"%s\n", rgpwsz[i]);
                    CoTaskMemFree(rgpwsz[i]);
                }
        }
    } while (hr == S_OK);
}

// utility function to print initial state of 
// a chat session
void PrintToDate(IChatSession *pcs)
{
    IEnumString *pes = 0;
    HRESULT hr = pcs->GetStatements(&pes);
    if (SUCCEEDED(hr))
    {
        PrintAllStrings(pes);
        pes->Release();
    }
}

// this class implements the callback interface
// that receives chat notifications. It simply 
// prints the event to the console
class EventSink : public IChatSessionEvents
{
public:
    STDMETHODIMP QueryInterface(REFIID riid, void**ppv)
    {
        if (riid == IID_IUnknown)
            *ppv = static_cast<IChatSessionEvents*>(this);
        else if (riid == IID_IChatSessionEvents)
            *ppv = static_cast<IChatSessionEvents*>(this);
        else
            return (*ppv = 0), E_NOINTERFACE;
        reinterpret_cast<IUnknown*>(*ppv)->AddRef();
        return S_OK;
    }
    STDMETHODIMP_(ULONG) AddRef(void)
    {
        return 2;
    }
    STDMETHODIMP_(ULONG) Release(void)
    {
        return 1;
    }
    STDMETHODIMP OnNewStatement(const OLECHAR *pwszUser,
                                const OLECHAR *pwszStmt)
    {
        wprintf(L"%-14s: %s\n", pwszUser, pwszStmt);
        return S_OK;
    }
    STDMETHODIMP OnNewUser(const OLECHAR *pwszUser)
    {
        wprintf(L"\n\n>>> Say Hello to %s\n\n", pwszUser);
        return S_OK;
    }
    STDMETHODIMP OnUserLeft(const OLECHAR *pwszUser)
    {
        wprintf(L"\n\n>>> Say Bye to %s\n\n", pwszUser);
        return S_OK;
    }
    
};

// type of operations this client can perform
enum ACTION
{
    ACTION_NONE,
    ACTION_CHAT,
    ACTION_DELETE_SESSION,
    ACTION_LIST_SESSION_NAMES,
};

// run chat command
void Chat(const OLECHAR *pwszSession,
          IChatSessionManager *pcsm, // manager
          COAUTHIDENTITY *pcai,      // user
          bool bAnonymous)           // anonymous
{
// create or get the named session
    IChatSession *pcs = 0;
    HRESULT hr = pcsm->FindSession(pwszSession, FALSE, 
                                   TRUE, &pcs);
    if (SUCCEEDED(hr))
    {
// adjust security blanket for session interface
        if (!bAnonymous)
            hr = CoSetProxyBlanket(pcs, RPC_C_AUTHN_WINNT, 
                                   RPC_C_AUTHZ_NONE, 0, 
                                   RPC_C_AUTHN_LEVEL_PKT, 
                                   RPC_C_IMP_LEVEL_IDENTIFY,
                                   pcai, EOAC_NONE);
// catch up on past messages
        PrintToDate(pcs);
// hook up event sink to receive new messages
        EventSink es;
        DWORD dwReg;
        hr = pcs->Advise(&es, &dwReg);
        if (SUCCEEDED(hr))
        {
// run UI loop to get statements from console and send them
            OLECHAR wszStmt[4096];
            while (_getws(wszStmt))
            {
                hr = pcs->Say(wszStmt);
                if (FAILED(hr))
                    Error(hr, "Say");
            }
// tear down connection for event sink
            pcs->Unadvise(dwReg);
        }
        else
            Error(hr, "Advise");
// release chat session
        pcs->Release();
    }
    else
        Error(hr, "FindSession");
}

// run delete command
void Delete(const OLECHAR *pwszSession,
            IChatSessionManager *pcsm)
{
    HRESULT hr = pcsm->DeleteSession(pwszSession);
    if (FAILED(hr))
        Error(hr, "DeleteSession");
}

// run list command
void List(IChatSessionManager *pcsm)
{
    IEnumString *pes = 0;
    HRESULT hr = pcsm->GetSessionNames(&pes);
    if (SUCCEEDED(hr))
    {
        printf("Active Sessions:\n");
        PrintAllStrings(pes);
        pes->Release();
    }
}

int main(int argc, char **argv)
{
// declare client control state
    bool bAnonymous = false;
    static OLECHAR wszSessionName[1024];
    static OLECHAR wszDomainName[1024];
    static OLECHAR wszUserName[1024];
    static OLECHAR wszPassword[1024];
    static OLECHAR wszHostName[1024];
    COSERVERINFO csi = { 0, wszHostName, 0, 0 };
    COSERVERINFO *pcsi = 0;
    COAUTHIDENTITY cai = {
        wszUserName,
        0,
        wszDomainName,
        0,
        wszPassword,
        0,
        SEC_WINNT_AUTH_IDENTITY_UNICODE
    };
    static COAUTHIDENTITY *pcai = 0;
    static ACTION action = ACTION_NONE;

// parse command line
    for (int i = 1; i < argc; i++)
    {
        if (strcmp(argv[i], "/anonymous") == 0)
            bAnonymous = true;
        else if (strstr(argv[i], "/delete:") == argv[i])
        {
            if (action != ACTION_NONE)
                return Usage();
            action = ACTION_DELETE_SESSION;
            mbstowcs(wszSessionName, argv[i] + 8, 1024);
        }
        else if (strstr(argv[i], "/chat:") == argv[i])
        {
            if (action != ACTION_NONE)
                return Usage();
            action = ACTION_CHAT;
            mbstowcs(wszSessionName, argv[i] + 6, 1024);
        }
        else if (strcmp(argv[i], "/sessions") == 0)
        {
            if (action != ACTION_NONE)
                return Usage();
            action = ACTION_LIST_SESSION_NAMES;
        }
        else if (strstr(argv[i], "/host:") == argv[i])
        {
            if (pcsi != 0)
                return Usage();
            mbstowcs(wszHostName, argv[i] + 6, 1024);
            pcsi = &csi;
        }
        else if (strstr(argv[i], "/password:") == argv[i])
        {
            mbstowcs(wszPassword, argv[i] + 10, 1024);
            cai.PasswordLength = wcslen(wszPassword);
        }
        else if (strstr(argv[i], "/user:") == argv[i])
        {
            if (pcai != 0 || bAnonymous)
                return Usage();
            char *pszDelim = strchr(argv[i] + 7, '\\');
            if (pszDelim == 0)
                return Usage();
            *pszDelim = 0;
            pszDelim++;
            mbstowcs(wszDomainName, argv[i] + 6, 1024);
            cai.DomainLength = wcslen(wszDomainName);
            mbstowcs(wszUserName, pszDelim, 1024);
            cai.UserLength = wcslen(wszUserName);
            pcai = &cai;
        }
    }

    if (action == ACTION_NONE)
        return Usage();
    HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED);
    if (FAILED(hr))
        return hr;

// allow anonymous callbacks from chat server
    hr = CoInitializeSecurity(0, -1, 0, 0,
                              RPC_C_AUTHN_LEVEL_NONE,
                              RPC_C_IMP_LEVEL_ANONYMOUS,
                              0, EOAC_NONE, 0);
    
    if (SUCCEEDED(hr))
    {
// grab the requested session manager
        IChatSessionManager *pcsm = 0;
        hr = CoGetClassObject(CLSID_ChatSession, CLSCTX_ALL,
                              pcsi, IID_IChatSessionManager,
                              (void**)&pcsm);
        if (SUCCEEDED(hr))
        {
// apply security blanket if desired
            if (!bAnonymous)
                hr = CoSetProxyBlanket(pcsm, RPC_C_AUTHN_WINNT, 
                                       RPC_C_AUTHZ_NONE, 0, 
                                       RPC_C_AUTHN_LEVEL_PKT, 
                                       RPC_C_IMP_LEVEL_IDENTIFY,
                                       pcai, EOAC_NONE);
// dispatch request
            switch (action)
            {
            case ACTION_CHAT:
                Chat(wszSessionName, pcsm, pcai, bAnonymous);
                break;
            case ACTION_DELETE_SESSION:
                Delete(wszSessionName, pcsm);
                break;
            case ACTION_LIST_SESSION_NAMES:
                List(pcsm);
                break;
            default:
                Usage();
            }
// release session manager
            pcsm->Release();
        }
    }
    CoUninitialize();
    return hr;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级黄色大片| 884aa四虎影成人精品一区| 洋洋成人永久网站入口| 欧美成人a视频| 欧美伊人久久大香线蕉综合69| 久久精品国产成人一区二区三区| 亚洲日本护士毛茸茸| 国产三区在线成人av| 91精品国产91久久久久久一区二区 | 日本一区免费视频| 欧美一级一区二区| 欧美日韩中字一区| 成人毛片在线观看| 国产91丝袜在线播放九色| 美国毛片一区二区三区| 午夜视频在线观看一区二区三区 | 免费国产亚洲视频| 一级特黄大欧美久久久| 亚洲欧美日韩国产综合在线| 日本一区二区在线不卡| 国产亚洲精品资源在线26u| 日韩限制级电影在线观看| 337p亚洲精品色噜噜噜| 欧美色网站导航| 欧美日韩一区高清| 在线亚洲一区二区| 欧美亚洲禁片免费| 欧洲一区二区三区在线| 欧美在线你懂的| 欧美午夜精品电影| 色成人在线视频| 在线亚洲一区观看| 欧美影片第一页| 欧美日韩aaaaa| 欧美日韩aaa| 日韩视频免费观看高清完整版| 欧美一区二区视频在线观看| 欧美日本高清视频在线观看| 欧美丰满一区二区免费视频| 欧美日韩大陆在线| 在线不卡欧美精品一区二区三区| 欧美精品精品一区| 91精品国产一区二区三区蜜臀| 欧美精品一二三| 日韩一二三四区| 精品福利一区二区三区| 国产日产欧美精品一区二区三区| 国产精品亲子乱子伦xxxx裸| 国产精品少妇自拍| 亚洲欧美精品午睡沙发| 亚洲一区中文在线| 国产精品资源网站| 国产成人免费视频网站高清观看视频| 国产成人综合网站| 95精品视频在线| 欧美网站大全在线观看| 91精品国产综合久久国产大片| 欧美va亚洲va| 亚洲国产精品二十页| 亚洲欧美国产三级| 五月天丁香久久| 国产精品资源在线观看| 91同城在线观看| 制服丝袜日韩国产| 久久伊人蜜桃av一区二区| 国产精品色婷婷久久58| 亚洲国产视频直播| 韩国成人在线视频| 91免费看片在线观看| 欧美日韩国产综合视频在线观看| 日韩美一区二区三区| 国产精品护士白丝一区av| 午夜成人免费电影| 成人永久aaa| 欧美老人xxxx18| 国产网红主播福利一区二区| 亚洲国产综合在线| 国产精品资源在线| 欧美日韩国产一级二级| 久久精品视频网| 亚洲成a人在线观看| 国产福利一区二区三区在线视频| 欧美在线观看视频一区二区三区| 2023国产精品视频| 天天射综合影视| 99综合电影在线视频| 欧美一卡2卡3卡4卡| 中文字幕一区在线| 奇米影视一区二区三区| 成人免费毛片片v| 日韩色在线观看| 亚洲免费成人av| 丁香天五香天堂综合| 欧美一区二区网站| 一区二区三区免费在线观看| 国产精品一区二区在线观看不卡 | 国产嫩草影院久久久久| 日韩成人免费在线| 色老头久久综合| 欧美国产精品中文字幕| 久久激情五月激情| 欧美三区免费完整视频在线观看| 国产人成一区二区三区影院| 蜜桃传媒麻豆第一区在线观看| 在线视频国产一区| 中文字幕一区二区日韩精品绯色| 韩国毛片一区二区三区| 欧美精品v国产精品v日韩精品| 亚洲三级免费电影| 成人av手机在线观看| 久久网这里都是精品| 看电视剧不卡顿的网站| 欧美日韩午夜在线| 亚洲视频一区二区在线| 成人av资源网站| 中文天堂在线一区| 丁香网亚洲国际| 国产欧美精品一区| 国产成人综合视频| 精品福利在线导航| 国模娜娜一区二区三区| 日韩色在线观看| 日本系列欧美系列| 欧美猛男超大videosgay| 亚洲第一av色| 欧美无人高清视频在线观看| 亚洲一区二区三区四区五区中文| 一本色道久久综合狠狠躁的推荐| 国产精品久久久久久久第一福利| 成人看片黄a免费看在线| 国产视频911| 成人18视频日本| 专区另类欧美日韩| 一本到高清视频免费精品| 亚洲男人的天堂网| 欧美午夜电影在线播放| 亚洲国产精品精华液网站| 欧美喷水一区二区| 青娱乐精品在线视频| 精品久久久久久久久久久久包黑料 | 国产999精品久久久久久| 久久青草欧美一区二区三区| 国产91对白在线观看九色| 国产欧美一区二区精品性色超碰| 成人高清视频在线| 亚洲美女淫视频| 欧美性猛交一区二区三区精品| 亚洲综合丝袜美腿| 欧美无人高清视频在线观看| 日韩成人一级大片| 久久久精品国产免费观看同学| 高清beeg欧美| 亚洲黄色小说网站| 91精品国产综合久久福利 | 99精品久久免费看蜜臀剧情介绍| 中文字幕日韩精品一区| 在线精品亚洲一区二区不卡| 婷婷丁香久久五月婷婷| www久久精品| 91免费看片在线观看| 日韩国产在线观看一区| 久久先锋影音av鲁色资源网| 波多野结衣一区二区三区| 一级做a爱片久久| 亚洲精品一区二区三区在线观看| 波多野结衣的一区二区三区| 偷窥少妇高潮呻吟av久久免费| 久久久久国产一区二区三区四区 | 一本到一区二区三区| 日韩国产欧美三级| 国产精品毛片无遮挡高清| 欧美日韩一级大片网址| 韩国一区二区在线观看| 亚洲私人黄色宅男| 欧美一个色资源| 99精品欧美一区| 久久国产综合精品| 亚洲视频一区二区免费在线观看| 欧美一区二区啪啪| 成av人片一区二区| 奇米精品一区二区三区在线观看一 | 色先锋资源久久综合| 免费日本视频一区| 中文字幕色av一区二区三区| 欧美一级xxx| 91精品91久久久中77777| 国产精品资源网站| 午夜精品久久久久久久久久| 欧美韩国日本不卡| 91精品国产高清一区二区三区| gogo大胆日本视频一区| 久久精品99国产精品| 午夜a成v人精品| 亚洲色图欧美激情| 国产拍揄自揄精品视频麻豆| 日韩视频在线一区二区| 欧美三日本三级三级在线播放| 成人av在线观| 国产精品99久久久久久似苏梦涵 | 精品一区二区三区免费播放|