수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1694068
  • Today | 419
  • Yesterday | 588

2 Articles, Search for '프로그램'

  1. 2007/06/28 Stack을 이용한 계산기(Calculator) 프로그램 제작 - Webdizen (2)
  2. 2007/01/03 프로그램 중복 실행 방지
Programming2007/06/28 10:57

Stack을 이용한 계산기(Calculator) 프로그램 제작 - Webdizen

사용자 삽입 이미지

예전에 만들었었던 계산기 프로그램입니다.

비록 공학용도 아니고, 윈도우 계산기의 일반용이랑 비슷한 기능을 구현했었지만, MFC를 처음 공부하던 단계에서 만들었던 프로그램이라 뿌듯했었던 프로그램이랍니다.

그냥 순수하게 짰던 프로그램이라서 그런지 소스는 엉망일수도 있어요;;

참고할 사람이 있을 수도 있어서, 프로젝트 파일을 압축해서 첨부합니다.

Calculator.zip




"Programming" 카테고리의 다른 글
  • WinDbg 사용법 (0)2007/08/16
  • 평점계산기 v1.0 (0)2007/06/30
  • Stack을 이용한 계산기(Calculator) 프로그램 제작... (2)2007/06/28
  • SOA 프로젝트 플랜 향상 (0)2007/05/18
  • 개발자의 초식, 디자인 패턴「그러나…」 (0)2007/05/18
2007/06/28 10:57 2007/06/28 10:57
Posted by webdizen
Tags Calculator, MFC, Stack, 계산기, 프로그램
No Trackback 2 Comments

Trackback URL : http://www.webdizen.net/blog/trackback/3058

Leave your greetings.

  1. 지나가는이~

    감사합니당~ ^-^
    계산기 만드는데 참고 하겠습니다. ~ ^^

    2008/03/29 23:10 [ Permalink : Modify/Delete : Reply ]
    • webdizen

      유용하게 쓰이길 바랍니다.

      2008/04/03 08:12 [ Permalink : Modify/Delete ]
[로그인][오픈아이디란?]

Programming/MFC2007/01/03 17:21

프로그램 중복 실행 방지

고수닷넷 - 데미소다오렌지님

1. Introduction

MS Windows에서 구동되는 몇몇 프로그램들은 중복 실행이 되지 않는다. Windows의 태스크 매니저나 MSN 메신저등이 대표적인 예라고 할 수 있다. 이러한 경우에 사용할 수 있는 방법은 여러가지가 있다. 이 문서에서는 뮤텍스를 사용한 방법을 살펴보도록 할 것이다.

명명된(named) 커널 오브젝트의 경우 프로세스의 경계를 넘어서 공유할 수 있다. 그래서 동일한 이름의 뮤텍스를 생성하려고 하면 이미 생성된 경우는 기존의 핸들을 넘겨주고, 참조 카운트만 증가시키게 된다. 이 때, GetLastError를 해보면 ERROR_ALREADY_EXISTS가 나오게 된다. 만약 존재하지 않는 뮤텍스였고, 생성된 것이라면 0이 나오게 된다.

2. Codes

class CSingleInstance
{
private:
    HANDLE  m_hGlbMutex;    // 전역 뮤텍스 핸들

public:
    CSingleInstance(LPCTSTR lpszMutexName="AppSingInstCheck");
    ~CSingleInstance();

    BOOL IsExist();
};

클래스의 선언부다. 위 클래스의 생성자에 문자열을 넣게 되어 있으며, 그것은 해당 어플리케이션의 중복 실행을 테스트하는 뮤텍스의 이름으로 사용된다. IsExist()멤버를 사용해서 이미 실행된 인스턴스가 존재하는지 검사할 수 있다.

이 클래스의 인스턴스는 프로세스가 존재하는 동안 제거되어서는 안된다는 점이다. 따라서 전역 변수등으로 만들어야 한다. 만약 프로세스가 실행중인데, 이 클래스가 소멸된다면 우리의 목적인 중복 실행 방지가 되지 않는다.

//
// 전역 뮤텍스를 생성해서 중복 실행 체크
//
// 파라미터
//      lpszMutexName   [in]    뮤텍스 이름
CSingleInstance::CSingleInstance(LPCTSTR lpszMutexName)
{
    TCHAR   szBuffer[MAX_PATH] = {0};

    // 2000 이상의 경우는 Global 오브젝트 이름을 지원한다.
    if(LOWORD(GetVersion()) >= 5)
        strcpy(szBuffer, "Global\\");

    strcat(szBuffer, lpszMutexName);

    m_hGlbMutex = CreateMutex(NULL, FALSE, szBuffer);
    if(GetLastError() == ERROR_ALREADY_EXISTS)
    {
        CloseHandle(m_hGlbMutex);
        m_hGlbMutex = NULL;
    }
}

// 뮤텍스 핸들 해제
CSingleInstance::~CSingleInstance()
{
    if(m_hGlbMutex)
        CloseHandle(m_hGlbMutex);
}

//
// 이미 실행된 프로그램이 있는지 검사
//
// 파라미터 없음
//
// 리턴값
//      존재하는 경우 1을, 처음 실행인 경우 0을 리턴함
BOOL CSingleInstance::IsExist()
{
    return m_hGlbMutex == NULL;
}

위는 실제 구현 내용이다. 생성자에서 뮤텍스를 생성하고, 소멸자에선 해당 뮤텍스를 제거한다. 별로 어려운 내용은 없다. 버전을 검사해서 2000이상의 경우 Global 객체를 지원하므로, 버전을 검사하여 이름앞에 Global을 자동적으로 붙여준다.

"MFC" 카테고리의 다른 글
  • MDI/SDI 구조의 클래스간 포인터 획득 방법 (0)2007/01/29
  • MFC AUTOMATION 자동화 (0)2007/01/05
  • 프로그램 중복 실행 방지 (0)2007/01/03
  • 자석 윈도우 만들기 (0)2007/01/02
  • VMemPool (0)2006/12/29
2007/01/03 17:21 2007/01/03 17:21
Posted by webdizen
Tags 중복실행방지, 프로그램
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2551

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • system call
  • Flex
  • 적벽대전
  • 산림환경과학대학
  • Wikia Search
  • 데이터 웨어하우스
  • Sp_OA
  • JavaFX
  • Classes
  • IPTV
  • US
  • TDM
  • SDA
  • NULL
  • CodeIgniter
  • Data Warehouse
  • new
  • 대회
  • 통합
  • SVN

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.