////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2004 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    MF 2004/08/30(Mon) No.272
    zMF 2060
    sF ܂܂ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                QOOSNWROij̍XV                */
http://www.kab-studio.biz/index.html

EقƂ́[X̂RǉI
@Ol̃zbgn[uɁuX̂R Q̏ȁvǉI
[ Ol̃zbgn[u ]
http://www.kab-studio.biz/Comic/HotHerb/index.html


////////////////////////////////////////////////////////////////////
/*                        储ʂȓL                        */
http://www.kab-studio.biz/nikki2/index.html

2004/08/22 (Sun)
@ߑO͐ƂBCt璋QBꂩقƂ́[`Bŕ
ЕtBAv̒ɂ͂܂ƊyccBvleXh}bc
I[fBIR^[B

2004/08/23 (Mon)
@炾邩ccBقƂǑȂėǂccBȂ񂩖ʂ
Ԃ߂ĂCccBAE͖ȁccB

2004/08/24 (Tue)
@܂蕗BH@Ԃ낮 Machician n߂܂B
BȂɕS͊|ȂǁBXɕςȃR[i[ccB
ČpB

2004/08/25 (Wed)
@oOdlύXȂăq}ccȂ̂ SQL R|WVNX
B SQL ėp邽߂ɁBǂɗĂł͂邯ǁB
X͂ǂȂH@hoVŒdzCg[xƂwBer
ꂩBvWFN^[ccB

2004/08/26 (Thu)
@oOdlύXȂ藈B[eBeBNXƂOč
ccBUɏオĔḧ݉ցBVhȂBcɑ
鉽΁BXt܂ŉۂB

2004/08/27 (Fri)
@oOdlύXƁB莞オ肵ăubNXłς
ăhoVDVDbN𔃂āBđBĒr-Vh-i
[gB

2004/08/28 (Sat)
@POɃA}]DVD󂯎āAߑODVDbN̑gݗāB
́ccĂ񂾂낤BH~~܂ȂBI[fBIR^[
ċr{̂ȁBMachiciañNKLyB


////////////////////////////////////////////////////////////////////
/*                         A                             */
http://www.kab-studio.biz/Novel/Fuga/index.html

@\́@Ɩ@@|QP|

@ސXB񂾖AVl͌グĂB
@ɂǍASɍ݂悤ɁB
uŝHv
@ł̒猻Bׂ̗ɂ́AȕB
ucczgɍs񂾁v
@Vl̔wɂ́AƓobOB
ucc{́APQԂv
@QSԂł͂ȂAPQԁBɂĂAƂɉ߂Ă鎞ԁB
uccႠA܂˂v
@ʂ̏΂݂āAɔwB
@̔wA͕߂B
u܁AccHv
u肢cc肢AȏΊAȂłccv
@̖j܂`B
uccv
@Vl̊B΂݂͂ȂAhAł́Anɐ𒍂
ɁA܂ڂĂB
@AB
@ƂBȃwAzoOĂB
uccA܂ˁv
@_炩΂݂ĂAVl͒nRRăw̃hA
tBɓƁAw͋}ł̏ыB
uccXA΂ɍsIIIv
@͂̂Ȃ̒ŁA͋񂾁B
@ƕƐMāB
uccAHv
@̉̌t́AԗtɊ|ꂽ́B
@ԗt͏΂݂𕂂ׂB
u܂ASĐM킯ł͂ȂBłccv
@łAMAvB
                                                              ()

////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

@Version 14.05
~[ebNXgI

uƂ킯ŁA񂩂瓯IuWFNg̋̓IȎgp@ɂĐ
܂v
ẃ[x
u܂́AԎgĂy~[ebNX i Mutex jzv
wȂňԂ悭gẮHx
ut[EFAƂŁqxsĂvZXЂƂN
rĂAvłv
wA悭ˁBAɎgĂĂƁHx
uƁB畁ʂ̓IuWFNgƂĂ̎gŌ΁A
K悭gĂĂƂłȂȁv
wӂ`x
uāAł͎ۂɃ~[ebNXgĂ݂܂B܂A VC ŐVe
XgvWFNgāBvWFNg ProcessA Łv
w_CAÔł́Hx
u̕ȁBȂ݂ɃeXgpvWFNg̍ɂĂ
Version 4.01 ( No.051 ) QƁv
wAłx
uAɃ{^T\tāA{^T\tāAꂼ
̃Cxgnhāv
wށATČ\߂ǂccAx
uāA炪vOB̂T̃Cxgnh̒OɎ
悤ɃvOĂv

namespace B1
{

HANDLE g_hMutex = NULL;
const char *const MUTEX_NAME = "ProcessesMutex";

// ~[ebNX쐬܂B
void Create()
{
    g_hMutex = CreateMutex( NULL, TRUE, MUTEX_NAME );
    TRACE( "%x\n", g_hMutex );
}

// ~[ebNX擾܂B
void Open()
{
    g_hMutex = OpenMutex( MUTEX_ALL_ACCESS, FALSE, MUTEX_NAME );
    TRACE( "%x\n", g_hMutex );
}

// ~[ebNXĎđҋ@Ԃɓ܂B
void Wait()
{
    TRACE( "ҋ@JnB\n" );
    DWORD dwResult = WaitForSingleObject( g_hMutex, 120000 );

    if( dwResult == WAIT_TIMEOUT )
    {
        TRACE( "^CAEgB\n" );
    }
    else
    {
        TRACE( "ҋ@IB\n" );
    }
}

// ~[ebNX܂B
void Release()
{
    ReleaseMutex( g_hMutex );
}

// ~[ebNX폜܂B
void Close()
{
    CloseHandle( g_hMutex );
}

}

wA\x
uŁAꂼ̃Cxgnh̒AꂼЂƂ֐
łBƂ΁A{^ ID ɃCxgnh
ꍇA֐ OnButton1() ĂȂ邩ccv

void CProcessADlg::OnButton1() 
{
    B1::Create();
}

uƂɌĂяo悤ɂĂv
w֐T{^TAˁx
uāAł͂ЂƂĂ܂B܂͕ϐv

HANDLE g_hMutex = NULL;

u̓~[ebNX̃nh邽߂̃O[oϐv
w HANDLE A API ƃt@CƂꂾˁx
uA CreateFile() ̖߂lAt@CǗ邽߂̃nh
 HANDLE łBt@CAIuWFNgAS HANDLE ő
邱ƂɂȂ܂v
wށAȂ񂩂Ċ댯ȂH@^Ńnh̋ʕtȂ񂾁x
uȂ񂾂ˁB Win32API ͂܂߂Ċ댯ccv
w[x
uɁA~[ebNX̖Ov

const char *const MUTEX_NAME = "ProcessesMutex";

uIuWFNǵA{IɁqOrŎʂ܂v
wOAO񌾂ĂqeXgrƂ̂ƁHx
uBEBhEYŜŋʂŎĝAO
gĎʂ܂v
w̃vOƂȂHx
ủ\ccǁAmȃ[͂ȂȁBPvZX
AṽtpXg΂񂾂ǁv
wȂȂˁx
ũeXg͕̃vZXŃANZX邩炻ȂĂˁB
ۂɂ͑ƂȂ悤Ȃƒɂ܂傤v
wށAȂ񂩃eLg[x
uāAvOB܂̓~[ebNX̍쐬ƍ폜v

// ~[ebNX쐬܂B
void Create()
{
    g_hMutex = CreateMutex( NULL, TRUE, MUTEX_NAME );
    TRACE( "%x\n", g_hMutex );
}

// ~[ebNX폜܂B
void Close()
{
    CloseHandle( g_hMutex );
}

wĂ[t@CɎĂccx
u܁Anh API ˁB CreateMutex() ~[ebN
X API BP̓ZLeB֌W̖ʓ|ȕȂ̂ NULL 
njBQ TRUE ́AɂL邩v
wH@炷Ă񂶂Ȃ́Hx
uȂƂłĂƁBOłA~[ebNX
ƃVOiItŁAƃIɂȂāv
wI@AƊ֌WĂ񂾁x
uƁB̕ӂ͎ɉ񂵂܂BR͂
~[ebNX̖Ov
wŌ߂킯ˁccx
uāA̓~[ebNX̎擾Ɖv

// ~[ebNX擾܂B
void Open()
{
    g_hMutex = OpenMutex( MUTEX_ALL_ACCESS, FALSE, MUTEX_NAME );
    TRACE( "%x\n", g_hMutex );
}

// ~[ebNX܂B
void Release()
{
    ReleaseMutex( g_hMutex );
}

uꂪAAVOiɊ֌W镔v
w OpenMutex() ĂԂƃ~[ebNX擾ăVOiItA
ReleaseMutex() ĂԂƎăVOiIAĂƁHx
uƁB̓IȎgp͎܂v
włAƂɎƂłłH@ӖȂ
ccx
ũvZXɍĂHv
wAӖȂccx
uꍇɂ OpenMutex() ŊJv
wȂقǁx
uŌɁA҂߂̊֐v

// ~[ebNXĎđҋ@Ԃɓ܂B
void Wait()
{
    TRACE( "ҋ@JnB\n" );
    DWORD dwResult = WaitForSingleObject( g_hMutex, 120000 );

    if( dwResult == WAIT_TIMEOUT )
    {
        TRACE( "^CAEgB\n" );
    }
    else
    {
        TRACE( "ҋ@IB\n" );
    }
}

u WaitForSingleObject() ́AJ~[ebNXĎ܂v
wꂪO񌾂Ăqҋ@ԁrɂȂĂˁx
uƁB WaitForSingleObject() ́APœnꂽ
qIuWFNg̃nhr̃VOiIɂȂ܂ő҂܂v
w܂ WaitForSingleObject() Ă񂾂炻̂܂ܕԂĂȂĂ
ƁHx
uƁBAQ̎ԂoAVOiIɂ
ȂĂ҂̂߂ WAIT_TIMEOUT ԂĂ܂v
wH@Ȃ񂩂傫ȐȂ񂾂ǁccx
uPʂ̓~bv
w[APQObQHx
uƁB܁A̓vOɂ肯肾B^CAEg
Ȃꍇ INFINITE w肵܂v
włȂ񂩊댯ccx
uƂ킯ŎɑIv

/*
    Preview Next Story!
*/
wނނށA񂾂SR킩ȂIx
uƂ킯Ŏ͎ۂɎgĂ݂܂v
w񂤂A̗ȂƂ킩Ȃˁx
uƂ킯Ŏv
 Version 14.06 ~[ebNXŔr 
wɂÂIx
uō̃R[ḧӖ킩Ǝvv
wĂ[̕ǂȁ[x
ug킩ĂӖȂłv
whx


////////////////////////////////////////////////////////////////////
/*                QOOSNXUij̍XV                  */
http://www.kab-studio.biz/index.html

EX\ǎH
@PAV\cc̗\B
@ĕ\ǎĐlCȂ񂾂́ijB


////////////////////////////////////////////////////////////////////
/*                          ӁII                            */

Ẽ[ԐMȂłB
EӌE]Ez[`[ʂȓL]肨肭B
http://www.kab-studio.biz/nikki2/
EwǓo^Ƃɂ͂̃y[WōsȂĂB
http://www.mag2.com/m/0000012198.htm
E͎ōsȂĂB
EobNio[͂̃y[Wɂ܂B
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2004 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

