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

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

?? machineview.cpp

?? <Visual C++ 網絡程序設計實例詳解>配套源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

    // Select the root item
    GetTreeCtrl().SelectItem(m_hMachineViewRoot);
    
    // Since the root gets selected, delete all in the remote admin view, as the 
    // root does not show any info
    //::GetRemoteAdminView()->GetListCtrl().DeleteAllItems();
	pRemoteAdminView->GetListCtrl().DeleteAllItems();
}


HTREEITEM CMachineView::ShowNewMachine(CString strTextToBeShown, CMachineInfo* pMachineInfo)
{
    TVINSERTSTRUCT tviHelper    = {0};
        
    // Show a new machine in the hierarchy
    tviHelper.hParent			  = m_hMachineViewRoot;
	tviHelper.hInsertAfter		  = TVI_LAST;
	tviHelper.item.mask			  = TVIF_TEXT |
                                    TVIF_IMAGE | 
                                    TVIF_SELECTEDIMAGE | 
                                    TVIF_PARAM;
    tviHelper.item.pszText		  = strTextToBeShown.GetBuffer(0);
	tviHelper.item.iImage		  = MACHINE_IMAGE;
	tviHelper.item.iSelectedImage = MACHINE_IMAGE;
	tviHelper.item.lParam		  = reinterpret_cast<LPARAM>(pMachineInfo);
	
    HTREEITEM hNewTreeItem = GetTreeCtrl().InsertItem(&tviHelper);

    // Expand the root to show the new machine
    GetTreeCtrl().Expand(m_hMachineViewRoot, TVE_EXPAND);

    return hNewTreeItem;
}

void CMachineView::DeleteMachineFromTree(HTREEITEM hMachineToBeDeleted)
{
    GetTreeCtrl().DeleteItem(hMachineToBeDeleted);
}

void CMachineView::OnRefreshProcess() 
{
    HTREEITEM hSelectedIntem = GetTreeCtrl().GetSelectedItem();

    TVITEM tvItem = {0};
    TCHAR szText[_MAX_PATH] = _T("");

    tvItem.hItem = hSelectedIntem;
    tvItem.mask = TVIF_TEXT | TVIF_HANDLE;
    tvItem.pszText = szText;
    tvItem.cchTextMax = _MAX_PATH;

    GetTreeCtrl().GetItem(&tvItem);
    
    RefreshProcesses(tvItem.pszText);
	
}

void CMachineView::OnLButtonDown(UINT nFlags, CPoint point) 
{
    HTREEITEM hTreeItem = GetTreeCtrl().HitTest(point, NULL); // See if any item has been it?

    if (hTreeItem != NULL)
    {
        TVITEM tvItem = {0};
        TCHAR szText[_MAX_PATH] = _T("");

        tvItem.hItem = hTreeItem;
        tvItem.mask = TVIF_HANDLE | TVIF_PARAM;
        tvItem.pszText = szText;
        tvItem.cchTextMax = _MAX_PATH;

        GetTreeCtrl().GetItem(&tvItem);

        if (tvItem.lParam == 0) // The root has 0 (zero) in it's lParam member
        {
            // Clear the list view when clicked on the root
            MFC_DocView::GetRemoteAdminView()->GetListCtrl().DeleteAllItems();
        }
        else
        {
            tvItem.hItem = hTreeItem;
            tvItem.mask = TVIF_HANDLE | TVIF_TEXT;
            GetTreeCtrl().GetItem(&tvItem);

            RefreshProcesses(tvItem.pszText);
        }
    }

	CTreeView::OnLButtonDown(nFlags, point);
}

void CMachineView::RefreshProcesses(CString strRemoteMachineIP)
{ 
    // Refresh the view to show the new processes
    (MFC_DocView::GetRemoteAdminView())->RefreshProcesses(strRemoteMachineIP);
}

void CMachineView::OnExecuteProcess() 
{
    // Get the selected item text, i.e IP of the machine
	TVITEM tvItem = {0};
    TCHAR szText[_MAX_PATH] = _T("");
    tvItem.hItem            = GetTreeCtrl().GetSelectedItem();
    tvItem.mask             = TVIF_TEXT | TVIF_HANDLE | TVIF_PARAM;
    tvItem.pszText          = szText;
    tvItem.cchTextMax       = _MAX_PATH;
    GetTreeCtrl().GetItem(&tvItem);

    CRemoteProcessDlg dlgRemoteProcess;
    
    if (dlgRemoteProcess.DoModal() == IDOK)
    {
        HANDLE hRemoteAdminProcessExecutePipe = GetDocument()->GetRemoteAdminProcessExecutePipe(tvItem.pszText);

        if (hRemoteAdminProcessExecutePipe != NULL)
        {
            // Send a command to continue the thread that will execute the remote process
            SCommand cmd;
            cmd.m_bThreadExit = FALSE;

            // Execute the command on the remote machine with the following parameters
            SExecuteCommand ExeCmd = {0};
            ::memcpy(ExeCmd.m_szDomain,      dlgRemoteProcess.m_strDomain.GetBuffer(0),      _MAX_PATH);
            ::memcpy(ExeCmd.m_szPassword,    dlgRemoteProcess.m_strPassword.GetBuffer(0),    _MAX_PATH);
            ::memcpy(ExeCmd.m_szProcessPath, dlgRemoteProcess.m_strProcessPath.GetBuffer(0), _MAX_PATH);
            ::memcpy(ExeCmd.m_szUsername,    dlgRemoteProcess.m_strUser.GetBuffer(0),        _MAX_PATH);
        
            BOOL bOk = FALSE;
            DWORD dwWritten = 0;

            bOk = ::WriteFile(hRemoteAdminProcessExecutePipe, &cmd,     sizeof(SCommand),        &dwWritten, NULL);
            bOk = ::WriteFile(hRemoteAdminProcessExecutePipe, &ExeCmd,  sizeof(SExecuteCommand), &dwWritten, NULL);

            TCHAR szMessage[_MAX_PATH] = _T("");
            DWORD dwRead = 0;

            // Wait for process triggering acknowledgement.
            bOk = ::ReadFile(hRemoteAdminProcessExecutePipe, szMessage, sizeof(szMessage), &dwRead, NULL);

            // There is some message that the process triggering was not sucessful
            // If it had been the string would be ""
            if (::strcmp(szMessage, _T("")) != 0)
            {
                CString strFormattedErrorMsg = ErrorHandling::ConvertStringTableIDToErrorMsg(tvItem.pszText, IDS_NOT_START_REMOTE_PROCESS);
                ::AfxMessageBox(strFormattedErrorMsg);
            }
        }
    }
}

CString CMachineView::GetSelectedItemTextInTreeView()
{
    HTREEITEM hSelectedItem = NULL;

    // Get the IP of the selected item
    hSelectedItem = GetTreeCtrl().GetSelectedItem();
    TVITEM tvItem = {0};
    tvItem.hItem   = hSelectedItem;
    tvItem.mask    = TVIF_PARAM | TVIF_HANDLE ; 
       
    GetTreeCtrl().GetItem(&tvItem);
        
    // If the root is not the current selection, then some IP is selected.
    // Return zero (0), if the root is selected, else get the selected item, which
    // will be the IP. LPARAM in the tree view item for root is zero.
    if (tvItem.lParam == 0)
    {
        return _T("0");
    }
    else
    {
        return GetTreeCtrl().GetItemText(hSelectedItem);
    }
    
    return _T("");
}

HTREEITEM CMachineView::GetTreeItemForText(CString strText)
{
    HTREEITEM hCurrent = GetTreeCtrl().GetNextItem(m_hMachineViewRoot, TVGN_CHILD);

    while (hCurrent != NULL)
    {
        // Get the text for the item. Notice we use TVIF_TEXT because
        // we want to retrieve only the text, but also specify TVIF_HANDLE
        // because we're getting the item by its handle.
       TVITEM item;
       TCHAR szText[1024];
       item.hItem = hCurrent;
       item.mask = TVIF_TEXT | TVIF_HANDLE;
       item.pszText = szText;
       item.cchTextMax = 1024;

       BOOL bWorked = GetTreeCtrl().GetItem(&item);
       
       if (bWorked)
       {
           if (::strcmp(strText.GetBuffer(0), item.pszText) == 0)
           {
               return hCurrent;
           }
       }
       // Try to get the next item
       hCurrent = GetTreeCtrl().GetNextItem(hCurrent, TVGN_NEXT);
    }

    // Cannot find the tree item with the strText;

    ASSERT(NULL);
    
    return NULL;
}



void CMachineView::OnShutdownHalt() 
{
    CString strIP = GetSelectedItemTextInTreeView();
    HANDLE hRemoteAdminSysShutDownPipe = GetDocument()->GetRemoteAdminSysShutDownPipe(strIP);

    if (hRemoteAdminSysShutDownPipe != NULL)
    {
        extern UINT g_iShutdownDelay; // Time given to shutdown, updated by the CTimeSettingsDlg
    
        SCommand cmd = {0};
        cmd.m_bThreadExit = FALSE;

        SSysShutDownInfo shutdownInfo = {0};
        shutdownInfo.bReboot = FALSE;
        shutdownInfo.bShutDown = TRUE;
        shutdownInfo.iTimeToShutDown = g_iShutdownDelay/1000; // we require time in secs.

        DWORD dwWritten = 0;
        DWORD dwRead    = 0;
        BOOL bOk        = FALSE;

        TCHAR szMessage[_MAX_PATH] = _T("");

        bOk = ::WriteFile(hRemoteAdminSysShutDownPipe, &cmd,     sizeof(SCommand),        &dwWritten, NULL);
        bOk = ::WriteFile(hRemoteAdminSysShutDownPipe, &shutdownInfo,  sizeof(SSysShutDownInfo), &dwWritten, NULL);
    
        bOk = ::ReadFile(hRemoteAdminSysShutDownPipe, szMessage, sizeof(szMessage), &dwRead, NULL);

        // There is some message that the process triggering was not sucessful
        // If it had been the string would be ""
        if (::strcmp(szMessage, _T("")) != 0)
        {
            ::AfxMessageBox(szMessage);
        }
    }
}

void CMachineView::OnShutdownReboot() 
{
    CString strIP = GetSelectedItemTextInTreeView();
    HANDLE hRemoteAdminSysShutDownPipe = GetDocument()->GetRemoteAdminSysShutDownPipe(strIP);

    if (hRemoteAdminSysShutDownPipe != NULL)
    {
        extern UINT g_iShutdownDelay; // Time given to shutdown, updated by the CTimeSettingsDlg

        // No need to quit the thread on the server side
        SCommand cmd = {0};
        cmd.m_bThreadExit = FALSE;

        // Fill the system shutdown requirements structure
        SSysShutDownInfo shutdownInfo = {0};
        shutdownInfo.bReboot          = TRUE;
        shutdownInfo.bShutDown        = TRUE;
        shutdownInfo.iTimeToShutDown  = g_iShutdownDelay/1000; // we require time in secs.

        DWORD dwWritten = 0;
        DWORD dwRead    = 0;
        BOOL bOk        = FALSE;

        TCHAR szMessage[_MAX_PATH] = _T("");

        bOk = ::WriteFile(hRemoteAdminSysShutDownPipe, &cmd,     sizeof(SCommand),        &dwWritten, NULL);
        bOk = ::WriteFile(hRemoteAdminSysShutDownPipe, &shutdownInfo,  sizeof(SSysShutDownInfo), &dwWritten, NULL);
    
        bOk = ::ReadFile(hRemoteAdminSysShutDownPipe, szMessage, sizeof(szMessage), &dwRead, NULL);

        // There is some message that the process triggering was not sucessful
        // If it had been the string would be ""
        if (::strcmp(szMessage, _T("")) != 0)
        {
            ::AfxMessageBox(szMessage);
        }
    }
}


void CMachineView::OnShutdownAbort() 
{
    CString strIP = GetSelectedItemTextInTreeView();
    HANDLE hRemoteAdminSysShutDownPipe = GetDocument()->GetRemoteAdminSysShutDownPipe(strIP);
    
    if (hRemoteAdminSysShutDownPipe != NULL)
    {
        SCommand cmd = {0};
        cmd.m_bThreadExit = FALSE;

        SSysShutDownInfo shutdownInfo = {0};
        shutdownInfo.bShutDown = FALSE;

        DWORD dwWritten = 0;
        DWORD dwRead    = 0;
        BOOL bOk        = FALSE;

        TCHAR szMessage[_MAX_PATH] = _T("");

        bOk = ::WriteFile(hRemoteAdminSysShutDownPipe, &cmd,     sizeof(SCommand),        &dwWritten, NULL);
        bOk = ::WriteFile(hRemoteAdminSysShutDownPipe, &shutdownInfo,  sizeof(SSysShutDownInfo), &dwWritten, NULL);
    
        bOk = ::ReadFile(hRemoteAdminSysShutDownPipe, szMessage, sizeof(szMessage), &dwRead, NULL);

        // There is some message that the process triggering was not sucessful
        // If it had been the string would be ""
        if (::strcmp(szMessage, _T("")) != 0)
        {
            ::AfxMessageBox(szMessage);
        }
    }
}
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图在线视频| 99久久婷婷国产综合精品| 福利视频网站一区二区三区| 99国产精品久久| 欧美不卡一区二区三区四区| 亚洲精品五月天| 国产精品自拍一区| 91精品国产aⅴ一区二区| ...av二区三区久久精品| 韩国精品主播一区二区在线观看| 色噜噜狠狠色综合欧洲selulu| 26uuu久久天堂性欧美| 日韩制服丝袜av| 日本乱人伦aⅴ精品| 欧美韩国日本综合| 国内成+人亚洲+欧美+综合在线| 欧美日韩视频在线第一区 | 97久久超碰国产精品电影| 日韩女优av电影在线观看| 亚洲黄色小视频| 色噜噜久久综合| 一区二区三区成人| 91丨九色porny丨蝌蚪| 国产精品午夜在线观看| 国产精品夜夜爽| 久久毛片高清国产| 国产一区二区三区av电影| 日韩精品一区二区三区视频播放| 亚洲欧美日韩电影| 91丝袜美腿高跟国产极品老师 | 精品一区二区成人精品| 欧美日韩一区高清| 亚洲gay无套男同| 91精品国产综合久久久久久久| 亚洲香蕉伊在人在线观| 精品污污网站免费看| 亚洲影视在线播放| 欧美老人xxxx18| 人人超碰91尤物精品国产| 日韩一区二区影院| 国产一区二区三区不卡在线观看| 国产色综合一区| 91看片淫黄大片一级在线观看| 中文字幕一区在线观看| 在线免费不卡电影| 日韩综合在线视频| www日韩大片| 成人免费毛片片v| 国产精品三级久久久久三级| 99re热这里只有精品视频| 亚洲精品国产成人久久av盗摄| 精品视频一区三区九区| 蜜桃视频免费观看一区| 国产欧美日产一区| 色婷婷综合久久| 青青草97国产精品免费观看| 久久免费看少妇高潮| 99麻豆久久久国产精品免费优播| 亚洲最快最全在线视频| 日韩女优av电影在线观看| 国产成人午夜电影网| 亚洲欧美日韩精品久久久久| 欧美日韩一级二级| 国产成人av电影免费在线观看| 亚洲色图欧美激情| 欧美大胆人体bbbb| 91色婷婷久久久久合中文| 久久精品国产第一区二区三区| 亚洲国产高清aⅴ视频| 欧美日韩免费在线视频| 国内精品久久久久影院色| 成人免费视频在线观看| 日韩欧美一级二级三级久久久| 成人午夜精品在线| 日韩黄色免费网站| 1000精品久久久久久久久| 欧美一级精品在线| 日本韩国一区二区| 国产盗摄视频一区二区三区| 香蕉成人伊视频在线观看| 中文字幕高清不卡| 26uuu色噜噜精品一区| 欧美日韩亚洲综合| 91免费国产在线| 国产精品99久久久久| 美女性感视频久久| 亚洲午夜电影网| 亚洲免费av观看| 国产亚洲成年网址在线观看| 欧美一区中文字幕| 91蝌蚪porny九色| 成人avav影音| 亚洲国产综合色| 国产传媒欧美日韩成人| 欧美日韩免费在线视频| 中文字幕一区二区三区蜜月 | 亚洲成av人**亚洲成av**| 久久精品水蜜桃av综合天堂| 91麻豆精品国产无毒不卡在线观看 | 国产一区二区在线观看视频| 亚洲精品日韩综合观看成人91| 国产欧美日韩综合精品一区二区| 欧美一区二区日韩| 欧美精品在线观看一区二区| 色哟哟一区二区| 91蝌蚪porny| 一本色道久久综合精品竹菊| 成人av高清在线| 北岛玲一区二区三区四区| 国产一区二区日韩精品| 国产精品原创巨作av| 国产精品自拍网站| 国产成人鲁色资源国产91色综 | 久久午夜色播影院免费高清| 日韩三级视频在线观看| 日韩一区二区在线看片| 日韩三级在线观看| 欧美精品一区二区三区四区| 26uuu久久天堂性欧美| 久久久久久免费毛片精品| 久久久99精品久久| 久久久久97国产精华液好用吗| 久久亚洲精精品中文字幕早川悠里| 日韩免费高清av| 久久女同精品一区二区| 久久久久久久久久久久久久久99 | 日韩一区二区在线观看视频播放| 3d动漫精品啪啪1区2区免费 | 亚洲精品视频在线看| 亚洲男同性视频| 亚洲福利视频三区| 免费看日韩a级影片| 国产精品一区2区| 色综合色狠狠综合色| 欧美色倩网站大全免费| 欧美xxxxx牲另类人与| 国产午夜亚洲精品羞羞网站| 综合亚洲深深色噜噜狠狠网站| 一区二区在线观看不卡| 午夜精品久久久久久久99樱桃| 有坂深雪av一区二区精品| 欧美偷拍一区二区| 日韩综合小视频| 欧美成人在线直播| 日韩一区在线看| 亚洲视频免费观看| 欧美aaa在线| 色偷偷一区二区三区| 宅男噜噜噜66一区二区66| 久久久久久久久久电影| 亚洲一区二区视频在线| 国内不卡的二区三区中文字幕 | 欧美电影免费观看高清完整版在| 国产欧美日韩另类一区| 亚洲亚洲精品在线观看| 国产精一区二区三区| 欧美午夜精品理论片a级按摩| 日韩免费性生活视频播放| 国产精品第13页| 五月婷婷激情综合网| 99国产精品国产精品毛片| 欧美一二三区在线| 中文字幕一区二区日韩精品绯色| 免费在线看一区| 91精彩视频在线| 国产精品视频看| 麻豆成人91精品二区三区| 欧美午夜精品一区二区蜜桃| 欧美高清在线一区二区| 青娱乐精品在线视频| 色94色欧美sute亚洲线路二| 国产欧美一区二区在线观看| 日本不卡不码高清免费观看| 色伊人久久综合中文字幕| 国产日韩欧美精品电影三级在线| 免费在线成人网| 欧美手机在线视频| 亚洲欧美成人一区二区三区| 国产成人免费在线观看不卡| 7777精品久久久大香线蕉| 亚洲欧美乱综合| 99在线视频精品| 欧美激情中文不卡| 韩国v欧美v亚洲v日本v| 91麻豆精品国产91久久久 | 亚洲日本va午夜在线电影| 国产精品一品二品| 精品国产第一区二区三区观看体验| 亚洲福利一区二区| 欧美日韩一区二区三区免费看| 一区二区三区小说| 在线观看中文字幕不卡| 亚洲综合久久久久| 欧美日韩精品一区二区| 亚洲伊人伊色伊影伊综合网| 色婷婷国产精品综合在线观看| 自拍偷拍亚洲欧美日韩| 91污片在线观看| 亚洲欧洲无码一区二区三区| 99久久精品一区|