VS 정규식
VS 단축키

 

bool CTotalUpdateDlg::GetProcessModule(DWORD dwPID,CString sProcessName)

{

    HANDLE hModuleSnap = NULL;

    MODULEENTRY32 me32 = {0};

    hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);

 

    if (hModuleSnap == (HANDLE)-1)

        return (FALSE);

 

    me32.dwSize = sizeof(MODULEENTRY32);

 

    //해당프로세스의모듈리스트를루프로돌려서프로세스이름과동일하면

    //true를리턴한다.

 

    if(Module32First(hModuleSnap, &me32))

    {

        do

        {

            //printf("process name : %s\n", me32.szModule);

 

            if(me32.szModule == sProcessName)

            {

                CloseHandle (hModuleSnap);

                return true;

            }

 

        }

        while(Module32Next(hModuleSnap, &me32));

    }

 

    CloseHandle (hModuleSnap);

    return false;

}

 

bool CTotalUpdateDlg::ProcessKill( CString strProcessName )

{

    HANDLE hProcessSnap = NULL;

    BOOL bRet = FALSE;

    PROCESSENTRY32 pe32 = {0};

 

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

 

    if (hProcessSnap == (HANDLE)-1)

        return false;

 

    pe32.dwSize = sizeof(PROCESSENTRY32);

 

    //프로세스가메모리상에있으면첫번째프로세스를얻는다

    if (Process32First(hProcessSnap, &pe32))

    {

        BOOL bCurrent = FALSE;

        MODULEENTRY32 me32 = {0};

 

        do

        {

            bCurrent = GetProcessModule(pe32.th32ProcessID,strProcessName);

            if(bCurrent)

            {

                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);

                if(hProcess)

                {

                    if(TerminateProcess(hProcess, 0))

                    {

                        unsigned long nCode; //프로세스종료상태

                        GetExitCodeProcess(hProcess, &nCode);

                    }

                    //printf("process exit\n");

                    CloseHandle(hProcess);

                    return true;

                }

            }

        }

        while (Process32Next(hProcessSnap, &pe32)); //다음프로세스의정보를구하여있으면루프를돈다.

    }

    CloseHandle (hProcessSnap);

    return true;

}

사용자 삽입 이미지

#include "stdafx.h"


class CCustomListBox : public CListBox

{

public:

    CCustomListBox()

    {

        m_rgbNormalText = RGB( 0, 0, 0 );

        m_rgbNormalBack = RGB( 255, 255, 255);

        m_rgbWarningText = RGB( 255, 0, 0 );

        m_rgbWarningBack = RGB( 255, 255, 0 );


        m_nHeight = 20;

        m_szMargin = CRect(5, 0, 0, 0);

    }

    COLORREF m_rgbNormalText, m_rgbNormalBack; // 일반글자색과배경색

    COLORREF m_rgbWarningText, m_rgbWarningBack; // 경고일때

    UINT m_nHeight; // 셀의높이

    CRect m_szMargin; // 글자의마진


    int AddString(LPCTSTR lpszItem)

    {

        int n = CListBox::AddString( lpszItem );

        SendMessage(WM_VSCROLL, SB_BOTTOM, NULL);

        return n;

    }


public:

    virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/);

    virtual void MeasureItem(LPMEASUREITEMSTRUCT /*lpMeasureItemStruct*/);



};




#include "ListBoxEx.h"


void CCustomListBox::DrawItem(LPDRAWITEMSTRUCT pDIStruct)

{

    CDC dc;


    // 코드를간결하게하기위하여전달된HDC를CDC에어태치한다.

    if( !dc.Attach( pDIStruct -> hDC ) )

        return;


    // 현재전달된아이템이선택되어진넘인이확인한다.

    if( pDIStruct -> itemState & ODS_SELECTED )

    {

        // 속성에맞게글자색, 배경색상을지정한다.

        dc.SetTextColor((0x00FFFFFF & ~(GetSysColor(COLOR_WINDOWTEXT))));

        dc.SetBkColor(GetSysColor(COLOR_HIGHLIGHT));

        dc.FillSolidRect(&pDIStruct->rcItem, GetSysColor(COLOR_HIGHLIGHT));

    }

    else

    {

        dc.SetTextColor(m_rgbNormalText);

        dc.SetBkColor(m_rgbNormalBack);

        dc.FillSolidRect(&pDIStruct->rcItem, m_rgbNormalBack);

    }


    // 아이템의인덱스가-1이아니면

    if(pDIStruct->itemID != -1)

    {

        // 선택된아이템의문자열을읽어온다.

        CString m_SelText;

        GetText(pDIStruct->itemID, m_SelText);


        if( wcsstr( m_SelText, _T("[경고]") ) )

        {

            dc.SetTextColor(m_rgbWarningText);

            dc.SetBkColor(m_rgbWarningBack);

            dc.FillSolidRect(&pDIStruct->rcItem, m_rgbWarningBack);

        }


        // 만약선택된아이템이디저블속성이면글자색상을회색으로

        if(pDIStruct->itemState & ODS_DISABLED)

            dc.SetTextColor(::GetSysColor(COLOR_GRAYTEXT));


        // 배경은투명속성으로

        dc.SetBkMode(TRANSPARENT);


        // 글자를그릴영역의여백을조절한다..

        CRect rcText = pDIStruct->rcItem;

        rcText.left += m_szMargin.left;

        rcText.top += m_szMargin.top;

        rcText.right -= m_szMargin.right;

        rcText.bottom -= m_szMargin.bottom;


        dc.DrawText(m_SelText, rcText, DT_VCENTER | DT_SINGLELINE);

    }


    dc.Detach();

}


void CCustomListBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)

{

    lpMeasureItemStruct->itemHeight = m_nHeight;

}



마메 넷플 서버
사용자 삽입 이미지

도구 -> 옵션 -> 디버깅 -> 일반 -> 현재 문 및 중단점 텍스트에 색 적용

단축키 설명
Ctrl + Tab Edit하고 있는 Child Window 간의 이동
Ctrl + F4 현재 Edit하고 있는 Child Window를 닫기
Ctrl + I 문자열 입력 점진적으로 문자열 찾기 (Incremental Search)
Ctrl + F3 현재 커서에 있는 문자열 찾기 fowared
(블록 지정 안 해도 됨)
Ctrl + Shift + F3 현재 커서에 있는 문자열 찾기 backward
F3 찾은 문자열에 대한 다음 문자열로 이동 (Next Search)
Ctrl + H 문자열 찾아 바꾸기 (Replace)
Ctrl + Left/Right Arrow 단어 단위로 이동
Ctrl + Delete 또는 Backspace 단어 단위로 삭제
Ctrl + F2 현재 라인에 북마크 지정/해제
F2 지정된 다음 북마크로 이동
Ctrl + Shift + F2 지정된 모든 북마크를 해제
F9 현재 라인에 Breakpoint를 지정/해제
Ctrl + Shift + F9 현재 Edit하고 있는 소스파일에 지정된 모든 Breakpoint 해제
Ctrl + ] '{'괄호의 짝을 찾아줌 ('{'에 커서를 놓고 눌러야 함}
Ctrl + J, K #ifdef 와 #endif의 짝을 찾아줌
Ctrl + L 한 라인을 클립보드로 잘라내기 (Cut)
Ctrl + Shift + L 한 라인을 삭제
Alt + Mouse 블록 설정 세로로 블록 설정하기 (마우스로)
Ctrl + Shift + F8 세로로 블록 설정하기 (키보드로), 취소할 때는 Esc키를 눌러야 함
블록 설정 -> Tab 선택된 블록의 문자열을 일괄적으로 들여쓰기(Tab) 적용
블록 설정 -> Shift + Tab 선택된 블록의 문자열을 일괄적으로 내어쓰기 적용
Alt + F8 인덴트 정리. 범위 선택 후 사용하면 해당 범위를 표준 인덴트로 바꾸어줌.
Shift + F9 디버그 모드에서 해당 변수를 바로 Watch Window에 등록.
Ctrl + U 선택된 영역을 소문자로 바꿈
Ctrl + Shift + U 선택된 영역을 대문자로 바꿈
Ctrl + Shift + 8 문단기호 표시/감추기 : Tab은 ^, Space는 .으로 표시
Ctrl + D 툴바의 찾기 Editbox로 이동
Ctrl + Up/Down Arrow 커서는 고정시키고 화면만 스크롤 시키기
Shift + Alt + 커서 이동
Alt + 마우스 드래그
세로로 영역 선택
Shift + F12 선언으로 이동

strstr()함수는 1바이트씩 비교하기 때문에 2바이트를 쓰는 한글에서 문제점이 생긴다.
이 문제점을 해결하기 위한 방법을 제시해본다. ㅋㅋ



+ Recent posts