기존의 윈도우창 이동 프로그램을 업그레이드했다.

기존의 Ctrl + 1, 2, 3키를 이용했던 것을 바꿔서 Ctrl 키는 그대로 두고 Numpad의 숫자를 이용하게 변경했다.

Numpad에서 1~9번까지 9개의 키를 사용함으로써 윈도우의 크기 및 위치가 변경되는 범위를 늘렸고, 기존의 1, 2, 3키를 이용했던 것과 동일한 효과로 맵핑되는 것은 Numpad의 4, 5, 6번 키이다.


(사용언어 및 제작툴 : MFC / VS2008)

2009.06.21
Windows 7에서 작동 안되던 것 임시 해결.

이전 버전 받기

Posted by Gungume
,

Renamer4.exe

 파일명 일괄변경 프로그램 - 4


도깨비님의 요청에 의해 오랜만에 리네이머에 손을 봤다.


우선 기존에 일련번호 제작에 썼던 문자인 '#'을 '*'로 변경했다. 일련번호가 숫자라는 의미로 그냥 #으로 썼었는데 파일명에 #을 써야하는 경우 때문에 변경을 했다.

도깨비님은 escape sequence를 이용해서 파일명에 '#'을 입력할 수 있게 해달라고 요청을 하셨는데 코딩하다보니 어차피 '*'표는 파일명으로 사용을 못하기 때문에 일련번호에 쓰일 문자를 아예 변경하는 것이 더 편하다고 생각되서 현재처럼 변경했다.

그리고 문자 집합을 기존 '멀티바이트 문자 집합'에서 '유니코드 문자 집합'으로 변경함으로써 파일명 변경시 유니코드를 지원한다.

프로젝트 설정에서 문자 집합을 '유니코드 문자 집합'으로 변경하고 문자열 처리와 관련된 변수 선언과 함수 등을 유니코드와 관련된 것으로 바꾸긴 했는데, 여지까지 유니코드 프로그래밍을 안해봤고, 현재 한글OS만 사용중이라서 완벽한 테스트는 하지 못했다.

단순히 키보드입력기에 일본어를 추가하고 테스트해보니 기존 버전에서는 파일명을 바꾸지 못했는데, 이번 버전에서는 파일명을 문제없이 변경했다.

Source: https://github.com/gungume/Renamer/releases/tag/0.4

(사용언어 및 제작툴 : MFC / VS2008)

이전 버전 받기
2006/09/05 - [MFC/Application] - 파일명 일괄변경 프로그램
2007/05/31 - [MFC/Application] - 파일명 일괄변경 프로그램 - 2
2007/12/29 - [MFC/Application] - 파일명 일괄변경 프로그램 - 3

Posted by Gungume
,


윈도우 메시지 목록
List of Windows Messages

 

Hex

Decimal

Symbolic

0000

0

WM_NULL

0001

1

WM_CREATE

0002

2

WM_DESTROY

0003

3

WM_MOVE

0005

5

WM_SIZE

0006

6

WM_ACTIVATE

0007

7

WM_SETFOCUS

0008

8

WM_KILLFOCUS

000a

10

WM_ENABLE

000b

11

WM_SETREDRAW

000c

12

WM_SETTEXT

000d

13

WM_GETTEXT

000e

14

WM_GETTEXTLENGTH

000f

15

WM_PAINT

0010

16

WM_CLOSE

0011

17

WM_QUERYENDSESSION

0012

18

WM_QUIT

0013

19

WM_QUERYOPEN

0014

20

WM_ERASEBKGND

0015

21

WM_SYSCOLORCHANGE

0016

22

WM_ENDSESSION

0018

24

WM_SHOWWINDOW

0019

25

WM_CTLCOLOR

001a

26

WM_WININICHANGE

001b

27

WM_DEVMODECHANGE

001c

28

WM_ACTIVATEAPP

001d

29

WM_FONTCHANGE

001e

30

WM_TIMECHANGE

001f

31

WM_CANCELMODE

0020

32

WM_SETCURSOR

0021

33

WM_MOUSEACTIVATE

0022

34

WM_CHILDACTIVATE

0023

35

WM_QUEUESYNC

0024

36

WM_GETMINMAXINFO

0026

38

WM_PAINTICON

0027

39

WM_ICONERASEBKGND

0028

40

WM_NEXTDLGCTL

002a

42

WM_SPOOLERSTATUS

002b

43

WM_DRAWITEM

002c

44

WM_MEASUREITEM

002d

45

WM_DELETEITEM

002e

46

WM_VKEYTOITEM

002f

47

WM_CHARTOITEM

0030

48

WM_SETFONT

0031

49

WM_GETFONT

0032

50

WM_SETHOTKEY

0033

51

WM_GETHOTKEY

0037

55

WM_QUERYDRAGICON

0039

57

WM_COMPAREITEM

003d

61

WM_GETOBJECT

0041

65

WM_COMPACTING

0044

68

WM_COMMNOTIFY

0046

70

WM_WINDOWPOSCHANGING

0047

71

WM_WINDOWPOSCHANGED

0048

72

WM_POWER

004a

74

WM_COPYDATA

004b

75

WM_CANCELJOURNAL

004e

78

WM_NOTIFY

0050

80

WM_INPUTLANGCHANGEREQUEST

0051

81

WM_INPUTLANGCHANGE

0052

82

WM_TCARD

0053

83

WM_HELP

0054

84

WM_USERCHANGED

0055

85

WM_NOTIFYFORMAT

007b

123

WM_CONTEXTMENU

007c

124

WM_STYLECHANGING

007d

125

WM_STYLECHANGED

007e

126

WM_DISPLAYCHANGE

007f

127

WM_GETICON

0080

128

WM_SETICON

0081

129

WM_NCCREATE

0082

130

WM_NCDESTROY

0083

131

WM_NCCALCSIZE

0084

132

WM_NCHITTEST

0085

133

WM_NCPAINT

0086

134

WM_NCACTIVATE

0087

135

WM_GETDLGCODE

0088

136

WM_SYNCPAINT

00a0

160

WM_NCMOUSEMOVE

00a1

161

WM_NCLBUTTONDOWN

00a2

162

WM_NCLBUTTONUP

00a3

163

WM_NCLBUTTONDBLCLK

00a4

164

WM_NCRBUTTONDOWN

00a5

165

WM_NCRBUTTONUP

00a6

166

WM_NCRBUTTONDBLCLK

00a7

167

WM_NCMBUTTONDOWN

00a8

168

WM_NCMBUTTONUP

00a9

169

WM_NCMBUTTONDBLCLK

00ab

171

WM_NCXBUTTONDOWN

00ac

172

WM_NCXBUTTONUP

00ad

173

WM_NCXBUTTONDBLCLK

0100

256

WM_KEYDOWN

0100

256

WM_KEYFIRST

0101

257

WM_KEYUP

0102

258

WM_CHAR

0103

259

WM_DEADCHAR

0104

260

WM_SYSKEYDOWN

0105

261

WM_SYSKEYUP

0106

262

WM_SYSCHAR

0107

263

WM_SYSDEADCHAR

0108

264

WM_KEYLAST

0109

265

WM_WNT_CONVERTREQUESTEX

010a

266

WM_CONVERTREQUEST

010b

267

WM_CONVERTRESULT

010c

268

WM_INTERIM

010d

269

WM_IME_STARTCOMPOSITION

010e

270

WM_IME_ENDCOMPOSITION

010f

271

WM_IME_COMPOSITION

010f

271

WM_IME_KEYLAST

0110

272

WM_INITDIALOG

0111

273

WM_COMMAND

0112

274

WM_SYSCOMMAND

0113

275

WM_TIMER

0114

276

WM_HSCROLL

0115

277

WM_VSCROLL

0116

278

WM_INITMENU

0117

279

WM_INITMENUPOPUP

011f

287

WM_MENUSELECT

0120

288

WM_MENUCHAR

0121

289

WM_ENTERIDLE

0122

290

WM_MENURBUTTONUP

0123

291

WM_MENUDRAG

0124

292

WM_MENUGETOBJECT

0125

293

WM_UNINITMENUPOPUP

0126

294

WM_MENUCOMMAND

0127

295

WM_CHANGEUISTATE

0128

296

WM_UPDATEUISTATE

0129

297

WM_QUERYUISTATE

0132

306

WM_CTLCOLORMSGBOX

0133

307

WM_CTLCOLOREDIT

0134

308

WM_CTLCOLORLISTBOX

0135

309

WM_CTLCOLORBTN

0136

310

WM_CTLCOLORDLG

0137

311

WM_CTLCOLORSCROLLBAR

0138

312

WM_CTLCOLORSTATIC

0200

512

WM_MOUSEFIRST

0200

512

WM_MOUSEMOVE

0201

513

WM_LBUTTONDOWN

0202

514

WM_LBUTTONUP

0203

515

WM_LBUTTONDBLCLK

0204

516

WM_RBUTTONDOWN

0205

517

WM_RBUTTONUP

0206

518

WM_RBUTTONDBLCLK

0207

519

WM_MBUTTONDOWN

0208

520

WM_MBUTTONUP

0209

521

WM_MBUTTONDBLCLK

0209

521

WM_MOUSELAST

020a

522

WM_MOUSEWHEEL

020b

523

WM_XBUTTONDOWN

020c

524

WM_XBUTTONUP

020d

525

WM_XBUTTONDBLCLK

0210

528

WM_PARENTNOTIFY

0211

529

WM_ENTERMENULOOP

0212

530

WM_EXITMENULOOP

0213

531

WM_NEXTMENU

0214

532

WM_SIZING

0215

533

WM_CAPTURECHANGED

0216

534

WM_MOVING

0218

536

WM_POWERBROADCAST

0219

537

WM_DEVICECHANGE

0220

544

WM_MDICREATE

0221

545

WM_MDIDESTROY

0222

546

WM_MDIACTIVATE

0223

547

WM_MDIRESTORE

0224

548

WM_MDINEXT

0225

549

WM_MDIMAXIMIZE

0226

550

WM_MDITILE

0227

551

WM_MDICASCADE

0228

552

WM_MDIICONARRANGE

0229

553

WM_MDIGETACTIVE

0230

560

WM_MDISETMENU

0231

561

WM_ENTERSIZEMOVE

0232

562

WM_EXITSIZEMOVE

0233

563

WM_DROPFILES

0234

564

WM_MDIREFRESHMENU

0280

640

WM_IME_REPORT

0281

641

WM_IME_SETCONTEXT

0282

642

WM_IME_NOTIFY

0283

643

WM_IME_CONTROL

0284

644

WM_IME_COMPOSITIONFULL

0285

645

WM_IME_SELECT

0286

646

WM_IME_CHAR

0288

648

WM_IME_REQUEST

0290

656

WM_IMEKEYDOWN

0290

656

WM_IME_KEYDOWN

0291

657

WM_IMEKEYUP

0291

657

WM_IME_KEYUP

02a0

672

WM_NCMOUSEHOVER

02a1

673

WM_MOUSEHOVER

02a2

674

WM_NCMOUSELEAVE

02a3

675

WM_MOUSELEAVE

0300

768

WM_CUT

0301

769

WM_COPY

0302

770

WM_PASTE

0303

771

WM_CLEAR

0304

772

WM_UNDO

0305

773

WM_RENDERFORMAT

0306

774

WM_RENDERALLFORMATS

0307

775

WM_DESTROYCLIPBOARD

0308

776

WM_DRAWCLIPBOARD

0309

777

WM_PAINTCLIPBOARD

030a

778

WM_VSCROLLCLIPBOARD

030b

779

WM_SIZECLIPBOARD

030c

780

WM_ASKCBFORMATNAME

030d

781

WM_CHANGECBCHAIN

030e

782

WM_HSCROLLCLIPBOARD

030f

783

WM_QUERYNEWPALETTE

0310

784

WM_PALETTEISCHANGING

0311

785

WM_PALETTECHANGED

0312

786

WM_HOTKEY

0317

791

WM_PRINT

0318

792

WM_PRINTCLIENT

0319

793

WM_APPCOMMAND

0358

856

WM_HANDHELDFIRST

035f

863

WM_HANDHELDLAST

0360

864

WM_AFXFIRST

037f

895

WM_AFXLAST

0380

896

WM_PENWINFIRST

0381

897

WM_RCRESULT

0382

898

WM_HOOKRCRESULT

0383

899

WM_GLOBALRCCHANGE

0383

899

WM_PENMISCINFO

0384

900

WM_SKB

0385

901

WM_HEDITCTL

0385

901

WM_PENCTL

0386

902

WM_PENMISC

0387

903

WM_CTLINIT

0388

904

WM_PENEVENT

038f

911

WM_PENWINLAST

0400

1024

DDM_SETFMT

0400

1024

DM_GETDEFID

0400

1024

NIN_SELECT

0400

1024

TBM_GETPOS

0400

1024

WM_PSD_PAGESETUPDLG

0400

1024

WM_USER

0401

1025

CBEM_INSERTITEMA

0401

1025

DDM_DRAW

0401

1025

DM_SETDEFID

0401

1025

HKM_SETHOTKEY

0401

1025

PBM_SETRANGE

0401

1025

RB_INSERTBANDA

0401

1025

SB_SETTEXTA

0401

1025

TB_ENABLEBUTTON

0401

1025

TBM_GETRANGEMIN

0401

1025

TTM_ACTIVATE

0401

1025

WM_CHOOSEFONT_GETLOGFONT

0401

1025

WM_PSD_FULLPAGERECT

0402

1026

CBEM_SETIMAGELIST

0402

1026

DDM_CLOSE

0402

1026

DM_REPOSITION

0402

1026

HKM_GETHOTKEY

0402

1026

PBM_SETPOS

0402

1026

RB_DELETEBAND

0402

1026

SB_GETTEXTA

0402

1026

TB_CHECKBUTTON

0402

1026

TBM_GETRANGEMAX

0402

1026

WM_PSD_MINMARGINRECT

0403

1027

CBEM_GETIMAGELIST

0403

1027

DDM_BEGIN

0403

1027

HKM_SETRULES

0403

1027

PBM_DELTAPOS

0403

1027

RB_GETBARINFO

0403

1027

SB_GETTEXTLENGTHA

0403

1027

TBM_GETTIC

0403

1027

TB_PRESSBUTTON

0403

1027

TTM_SETDELAYTIME

0403

1027

WM_PSD_MARGINRECT

0404

1028

CBEM_GETITEMA

0404

1028

DDM_END

0404

1028

PBM_SETSTEP

0404

1028

RB_SETBARINFO

0404

1028

SB_SETPARTS

0404

1028

TB_HIDEBUTTON

0404

1028

TBM_SETTIC

0404

1028

TTM_ADDTOOLA

0404

1028

WM_PSD_GREEKTEXTRECT

0405

1029

CBEM_SETITEMA

0405

1029

PBM_STEPIT

0405

1029

TB_INDETERMINATE

0405

1029

TBM_SETPOS

0405

1029

TTM_DELTOOLA

0405

1029

WM_PSD_ENVSTAMPRECT

0406

1030

CBEM_GETCOMBOCONTROL

0406

1030

PBM_SETRANGE32

0406

1030

RB_SETBANDINFOA

0406

1030

SB_GETPARTS

0406

1030

TB_MARKBUTTON

0406

1030

TBM_SETRANGE

0406

1030

TTM_NEWTOOLRECTA

0406

1030

WM_PSD_YAFULLPAGERECT

0407

1031

CBEM_GETEDITCONTROL

0407

1031

PBM_GETRANGE

0407

1031

RB_SETPARENT

0407

1031

SB_GETBORDERS

0407

1031

TBM_SETRANGEMIN

0407

1031

TTM_RELAYEVENT

0408

1032

CBEM_SETEXSTYLE

0408

1032

PBM_GETPOS

0408

1032

RB_HITTEST

0408

1032

SB_SETMINHEIGHT

0408

1032

TBM_SETRANGEMAX

0408

1032

TTM_GETTOOLINFOA

0409

1033

CBEM_GETEXSTYLE

0409

1033

CBEM_GETEXTENDEDSTYLE

0409

1033

PBM_SETBARCOLOR

0409

1033

RB_GETRECT

0409

1033

SB_SIMPLE

0409

1033

TB_ISBUTTONENABLED

0409

1033

TBM_CLEARTICS

0409

1033

TTM_SETTOOLINFOA

040a

1034

CBEM_HASEDITCHANGED

040a

1034

RB_INSERTBANDW

040a

1034

SB_GETRECT

040a

1034

TB_ISBUTTONCHECKED

040a

1034

TBM_SETSEL

040a

1034

TTM_HITTESTA

040a

1034

WIZ_QUERYNUMPAGES

040b

1035

CBEM_INSERTITEMW

040b

1035

RB_SETBANDINFOW

040b

1035

SB_SETTEXTW

040b

1035

TB_ISBUTTONPRESSED

040b

1035

TBM_SETSELSTART

040b

1035

TTM_GETTEXTA

040b

1035

WIZ_NEXT

040c

1036

CBEM_SETITEMW

040c

1036

RB_GETBANDCOUNT

040c

1036

SB_GETTEXTLENGTHW

040c

1036

TB_ISBUTTONHIDDEN

040c

1036

TBM_SETSELEND

040c

1036

TTM_UPDATETIPTEXTA

040c

1036

WIZ_PREV

040d

1037

CBEM_GETITEMW

040d

1037

RB_GETROWCOUNT

040d

1037

SB_GETTEXTW

040d

1037

TB_ISBUTTONINDETERMINATE

040d

1037

TTM_GETTOOLCOUNT

040e

1038

CBEM_SETEXTENDEDSTYLE

040e

1038

RB_GETROWHEIGHT

040e

1038

SB_ISSIMPLE

040e

1038

TB_ISBUTTONHIGHLIGHTED

040e

1038

TBM_GETPTICS

040e

1038

TTM_ENUMTOOLSA

040f

1039

SB_SETICON

040f

1039

TBM_GETTICPOS

040f

1039

TTM_GETCURRENTTOOLA

0410

1040

RB_IDTOINDEX

0410

1040

SB_SETTIPTEXTA

0410

1040

TBM_GETNUMTICS

0410

1040

TTM_WINDOWFROMPOINT

0411

1041

RB_GETTOOLTIPS

0411

1041

SB_SETTIPTEXTW

0411

1041

TBM_GETSELSTART

0411

1041

TB_SETSTATE

0411

1041

TTM_TRACKACTIVATE

0412

1042

RB_SETTOOLTIPS

0412

1042

SB_GETTIPTEXTA

0412

1042

TB_GETSTATE

0412

1042

TBM_GETSELEND

0412

1042

TTM_TRACKPOSITION

0413

1043

RB_SETBKCOLOR

0413

1043

SB_GETTIPTEXTW

0413

1043

TB_ADDBITMAP

0413

1043

TBM_CLEARSEL

0413

1043

TTM_SETTIPBKCOLOR

0414

1044

RB_GETBKCOLOR

0414

1044

SB_GETICON

0414

1044

TB_ADDBUTTONSA

0414

1044

TBM_SETTICFREQ

0414

1044

TTM_SETTIPTEXTCOLOR

0415

1045

RB_SETTEXTCOLOR

0415

1045

TB_INSERTBUTTONA

0415

1045

TBM_SETPAGESIZE

0415

1045

TTM_GETDELAYTIME

0416

1046

RB_GETTEXTCOLOR

0416

1046

TB_DELETEBUTTON

0416

1046

TBM_GETPAGESIZE

0416

1046

TTM_GETTIPBKCOLOR

0417

1047

RB_SIZETORECT

0417

1047

TB_GETBUTTON

0417

1047

TBM_SETLINESIZE

0417

1047

TTM_GETTIPTEXTCOLOR

0418

1048

RB_BEGINDRAG

0418

1048

TB_BUTTONCOUNT

0418

1048

TBM_GETLINESIZE

0418

1048

TTM_SETMAXTIPWIDTH

0419

1049

RB_ENDDRAG

0419

1049

TB_COMMANDTOINDEX

0419

1049

TBM_GETTHUMBRECT

0419

1049

TTM_GETMAXTIPWIDTH

041a

1050

RB_DRAGMOVE

041a

1050

TBM_GETCHANNELRECT

041a

1050

TB_SAVERESTOREA

041a

1050

TTM_SETMARGIN

041b

1051

RB_GETBARHEIGHT

041b

1051

TB_CUSTOMIZE

041b

1051

TBM_SETTHUMBLENGTH

041b

1051

TTM_GETMARGIN

041c

1052

RB_GETBANDINFOW

041c

1052

TB_ADDSTRINGA

041c

1052

TBM_GETTHUMBLENGTH

041c

1052

TTM_POP

041d

1053

RB_GETBANDINFOA

041d

1053

TB_GETITEMRECT

041d

1053

TBM_SETTOOLTIPS

041d

1053

TTM_UPDATE

041e

1054

RB_MINIMIZEBAND

041e

1054

TB_BUTTONSTRUCTSIZE

041e

1054

TBM_GETTOOLTIPS

041e

1054

TTM_GETBUBBLESIZE

041f

1055

RB_MAXIMIZEBAND

041f

1055

TBM_SETTIPSIDE

041f

1055

TB_SETBUTTONSIZE

041f

1055

TTM_ADJUSTRECT

0420

1056

TBM_SETBUDDY

0420

1056

TB_SETBITMAPSIZE

0420

1056

TTM_SETTITLEA

0421

1057

MSG_FTS_JUMP_VA

0421

1057

TB_AUTOSIZE

0421

1057

TBM_GETBUDDY

0421

1057

TTM_SETTITLEW

0422

1058

RB_GETBANDBORDERS

0423

1059

MSG_FTS_JUMP_QWORD

0423

1059

RB_SHOWBAND

0423

1059

TB_GETTOOLTIPS

0424

1060

MSG_REINDEX_REQUEST

0424

1060

TB_SETTOOLTIPS

0425

1061

MSG_FTS_WHERE_IS_IT

0425

1061

RB_SETPALETTE

0425

1061

TB_SETPARENT

0426

1062

RB_GETPALETTE

0427

1063

RB_MOVEBAND

0427

1063

TB_SETROWS

0428

1064

TB_GETROWS

0429

1065

TB_GETBITMAPFLAGS

042a

1066

TB_SETCMDID

042b

1067

RB_PUSHCHEVRON

042b

1067

TB_CHANGEBITMAP

042c

1068

TB_GETBITMAP

042d

1069

MSG_GET_DEFFONT

042d

1069

TB_GETBUTTONTEXTA

042e

1070

TB_REPLACEBITMAP

042f

1071

TB_SETINDENT

0430

1072

TB_SETIMAGELIST

0431

1073

TB_GETIMAGELIST

0432

1074

TB_LOADIMAGES

0432

1074

TTM_ADDTOOLW

0433

1075

TB_GETRECT

0433

1075

TTM_DELTOOLW

0434

1076

TB_SETHOTIMAGELIST

0434

1076

TTM_NEWTOOLRECTW

0435

1077

TB_GETHOTIMAGELIST

0435

1077

TTM_GETTOOLINFOW

0436

1078

TB_SETDISABLEDIMAGELIST

0436

1078

TTM_SETTOOLINFOW

0437

1079

TB_GETDISABLEDIMAGELIST

0437

1079

TTM_HITTESTW

0438

1080

TB_SETSTYLE

0438

1080

TTM_GETTEXTW

0439

1081

TB_GETSTYLE

0439

1081

TTM_UPDATETIPTEXTW

043a

1082

TB_GETBUTTONSIZE

043a

1082

TTM_ENUMTOOLSW

043b

1083

TB_SETBUTTONWIDTH

043b

1083

TTM_GETCURRENTTOOLW

043c

1084

TB_SETMAXTEXTROWS

043d

1085

TB_GETTEXTROWS

043e

1086

TB_GETOBJECT

043f

1087

TB_GETBUTTONINFOW

0440

1088

TB_SETBUTTONINFOW

0441

1089

TB_GETBUTTONINFOA

0442

1090

TB_SETBUTTONINFOA

0443

1091

TB_INSERTBUTTONW

0444

1092

TB_ADDBUTTONSW

0445

1093

TB_HITTEST

0446

1094

TB_SETDRAWTEXTFLAGS

0447

1095

TB_GETHOTITEM

0448

1096

TB_SETHOTITEM

0449

1097

TB_SETANCHORHIGHLIGHT

044a

1098

TB_GETANCHORHIGHLIGHT

044b

1099

TB_GETBUTTONTEXTW

044c

1100

TB_SAVERESTOREW

044d

1101

TB_ADDSTRINGW

044e

1102

TB_MAPACCELERATORA

044f

1103

TB_GETINSERTMARK

0450

1104

TB_SETINSERTMARK

0451

1105

TB_INSERTMARKHITTEST

0452

1106

TB_MOVEBUTTON

0453

1107

TB_GETMAXSIZE

0454

1108

TB_SETEXTENDEDSTYLE

0455

1109

TB_GETEXTENDEDSTYLE

0456

1110

TB_GETPADDING

0457

1111

TB_SETPADDING

0458

1112

TB_SETINSERTMARKCOLOR

0459

1113

TB_GETINSERTMARKCOLOR

045a

1114

TB_MAPACCELERATORW

045b

1115

TB_GETSTRINGW

045c

1116

TB_GETSTRINGA

0463

1123

TAPI_REPLY

0464

1124

ACM_OPENA

0464

1124

BFFM_SETSTATUSTEXTA

0464

1124

CDM_FIRST

0464

1124

CDM_GETSPEC

0464

1124

IPM_CLEARADDRESS

0464

1124

WM_CAP_UNICODE_START

0465

1125

ACM_PLAY

0465

1125

BFFM_ENABLEOK

0465

1125

CDM_GETFILEPATH

0465

1125

IPM_SETADDRESS

0465

1125

PSM_SETCURSEL

0465

1125

UDM_SETRANGE

0465

1125

WM_CHOOSEFONT_SETLOGFONT

0466

1126

ACM_STOP

0466

1126

BFFM_SETSELECTIONA

0466

1126

CDM_GETFOLDERPATH

0466

1126

IPM_GETADDRESS

0466

1126

PSM_REMOVEPAGE

0466

1126

UDM_GETRANGE

0466

1126

WM_CAP_SET_CALLBACK_ERRORW

0466

1126

WM_CHOOSEFONT_SETFLAGS

0467

1127

ACM_OPENW

0467

1127

BFFM_SETSELECTIONW

0467

1127

CDM_GETFOLDERIDLIST

0467

1127

IPM_SETRANGE

0467

1127

PSM_ADDPAGE

0467

1127

UDM_SETPOS

0467

1127

WM_CAP_SET_CALLBACK_STATUSW

0468

1128

BFFM_SETSTATUSTEXTW

0468

1128

CDM_SETCONTROLTEXT

0468

1128

IPM_SETFOCUS

0468

1128

PSM_CHANGED

0468

1128

UDM_GETPOS

0469

1129

CDM_HIDECONTROL

0469

1129

IPM_ISBLANK

0469

1129

PSM_RESTARTWINDOWS

0469

1129

UDM_SETBUDDY

046a

1130

CDM_SETDEFEXT

046a

1130

PSM_REBOOTSYSTEM

046a

1130

UDM_GETBUDDY

046b

1131

PSM_CANCELTOCLOSE

046b

1131

UDM_SETACCEL

046c

1132

EM_CONVPOSITION

046c

1132

PSM_QUERYSIBLINGS

046c

1132

UDM_GETACCEL

046d

1133

MCIWNDM_GETZOOM

046d

1133

PSM_UNCHANGED

046d

1133

UDM_SETBASE

046e

1134

PSM_APPLY

046e

1134

UDM_GETBASE

046f

1135

PSM_SETTITLEA

046f

1135

UDM_SETRANGE32

0470

1136

PSM_SETWIZBUTTONS

0470

1136

UDM_GETRANGE32

0470

1136

WM_CAP_DRIVER_GET_NAMEW

0471

1137

PSM_PRESSBUTTON

0471

1137

UDM_SETPOS32

0471

1137

WM_CAP_DRIVER_GET_VERSIONW

0472

1138

PSM_SETCURSELID

0472

1138

UDM_GETPOS32

0473

1139

PSM_SETFINISHTEXTA

0474

1140

PSM_GETTABCONTROL

0475

1141

PSM_ISDIALOGMESSAGE

0476

1142

MCIWNDM_REALIZE

0476

1142

PSM_GETCURRENTPAGEHWND

0477

1143

MCIWNDM_SETTIMEFORMATA

0477

1143

PSM_INSERTPAGE

0478

1144

MCIWNDM_GETTIMEFORMATA

0478

1144

PSM_SETTITLEW

0478

1144

WM_CAP_FILE_SET_CAPTURE_FILEW

0479

1145

MCIWNDM_VALIDATEMEDIA

0479

1145

PSM_SETFINISHTEXTW

0479

1145

WM_CAP_FILE_GET_CAPTURE_FILEW

047b

1147

MCIWNDM_PLAYTO

047b

1147

WM_CAP_FILE_SAVEASW

047c

1148

MCIWNDM_GETFILENAMEA

047d

1149

MCIWNDM_GETDEVICEA

047d

1149

PSM_SETHEADERTITLEA

047d

1149

WM_CAP_FILE_SAVEDIBW

047e

1150

MCIWNDM_GETPALETTE

047e

1150

PSM_SETHEADERTITLEW

047f

1151

MCIWNDM_SETPALETTE

047f

1151

PSM_SETHEADERSUBTITLEA

0480

1152

MCIWNDM_GETERRORA

0480

1152

PSM_SETHEADERSUBTITLEW

0481

1153

PSM_HWNDTOINDEX

0482

1154

PSM_INDEXTOHWND

0483

1155

MCIWNDM_SETINACTIVETIMER

0483

1155

PSM_PAGETOINDEX

0484

1156

PSM_INDEXTOPAGE

0485

1157

DL_BEGINDRAG

0485

1157

MCIWNDM_GETINACTIVETIMER

0485

1157

PSM_IDTOINDEX

0486

1158

DL_DRAGGING

0486

1158

PSM_INDEXTOID

0487

1159

DL_DROPPED

0487

1159

PSM_GETRESULT

0488

1160

DL_CANCELDRAG

0488

1160

PSM_RECALCPAGESIZES

048c

1164

MCIWNDM_GET_SOURCE

048d

1165

MCIWNDM_PUT_SOURCE

048e

1166

MCIWNDM_GET_DEST

048f

1167

MCIWNDM_PUT_DEST

0490

1168

MCIWNDM_CAN_PLAY

0491

1169

MCIWNDM_CAN_WINDOW

0492

1170

MCIWNDM_CAN_RECORD

0493

1171

MCIWNDM_CAN_SAVE

0494

1172

MCIWNDM_CAN_EJECT

0495

1173

MCIWNDM_CAN_CONFIG

0496

1174

IE_GETINK

0496

1174

IE_MSGFIRST

0496

1174

MCIWNDM_PALETTEKICK

0497

1175

IE_SETINK

0498

1176

IE_GETPENTIP

0499

1177

IE_SETPENTIP

049a

1178

IE_GETERASERTIP

049b

1179

IE_SETERASERTIP

049c

1180

IE_GETBKGND

049d

1181

IE_SETBKGND

049e

1182

IE_GETGRIDORIGIN

049f

1183

IE_SETGRIDORIGIN

04a0

1184

IE_GETGRIDPEN

04a1

1185

IE_SETGRIDPEN

04a2

1186

IE_GETGRIDSIZE

04a3

1187

IE_SETGRIDSIZE

04a4

1188

IE_GETMODE

04a5

1189

IE_SETMODE

04a6

1190

IE_GETINKRECT

04a6

1190

WM_CAP_SET_MCI_DEVICEW

04a7

1191

WM_CAP_GET_MCI_DEVICEW

04b4

1204

WM_CAP_PAL_OPENW

04b5

1205

WM_CAP_PAL_SAVEW

04b8

1208

IE_GETAPPDATA

04b9

1209

IE_SETAPPDATA

04ba

1210

IE_GETDRAWOPTS

04bb

1211

IE_SETDRAWOPTS

04bc

1212

IE_GETFORMAT

04bd

1213

IE_SETFORMAT

04be

1214

IE_GETINKINPUT

04bf

1215

IE_SETINKINPUT

04c0

1216

IE_GETNOTIFY

04c1

1217

IE_SETNOTIFY

04c2

1218

IE_GETRECOG

04c3

1219

IE_SETRECOG

04c4

1220

IE_GETSECURITY

04c5

1221

IE_SETSECURITY

04c6

1222

IE_GETSEL

04c7

1223

IE_SETSEL

04c8

1224

CDM_LAST

04c8

1224

IE_DOCOMMAND

04c8

1224

MCIWNDM_NOTIFYMODE

04c9

1225

IE_GETCOMMAND

04ca

1226

IE_GETCOUNT

04cb

1227

IE_GETGESTURE

04cb

1227

MCIWNDM_NOTIFYMEDIA

04cc

1228

IE_GETMENU

04cd

1229

IE_GETPAINTDC

04cd

1229

MCIWNDM_NOTIFYERROR

04ce

1230

IE_GETPDEVENT

04cf

1231

IE_GETSELCOUNT

04d0

1232

IE_GETSELITEMS

04d1

1233

IE_GETSTYLE

04db

1243

MCIWNDM_SETTIMEFORMATW

04dc

1244

EM_OUTLINE

04dc

1244

MCIWNDM_GETTIMEFORMATW

04dd

1245

EM_GETSCROLLPOS

04de

1246

EM_SETSCROLLPOS

04df

1247

EM_SETFONTSIZE

04e0

1248

MCIWNDM_GETFILENAMEW

04e1

1249

MCIWNDM_GETDEVICEW

04e4

1252

MCIWNDM_GETERRORW

0600

1536

FM_GETFOCUS

0601

1537

FM_GETDRIVEINFOA

0602

1538

FM_GETSELCOUNT

0603

1539

FM_GETSELCOUNTLFN

0604

1540

FM_GETFILESELA

0605

1541

FM_GETFILESELLFNA

0606

1542

FM_REFRESH_WINDOWS

0607

1543

FM_RELOAD_EXTENSIONS

0611

1553

FM_GETDRIVEINFOW

0614

1556

FM_GETFILESELW

0615

1557

FM_GETFILESELLFNW

0659

1625

WLX_WM_SAS

07e8

2024

SM_GETSELCOUNT

07e8

2024

UM_GETSELCOUNT

07e8

2024

WM_CPL_LAUNCH

07e9

2025

SM_GETSERVERSELA

07e9

2025

UM_GETUSERSELA

07e9

2025

WM_CPL_LAUNCHED

07ea

2026

SM_GETSERVERSELW

07ea

2026

UM_GETUSERSELW

07eb

2027

SM_GETCURFOCUSA

07eb

2027

UM_GETGROUPSELA

07ec

2028

SM_GETCURFOCUSW

07ec

2028

UM_GETGROUPSELW

07ed

2029

SM_GETOPTIONS

07ed

2029

UM_GETCURFOCUSA

07ee

2030

UM_GETCURFOCUSW

07ef

2031

UM_GETOPTIONS

07f0

2032

UM_GETOPTIONS2

2000

8192

OCMBASE

2019

8217

OCM_CTLCOLOR

202b

8235

OCM_DRAWITEM

202c

8236

OCM_MEASUREITEM

202d

8237

OCM_DELETEITEM

202e

8238

OCM_VKEYTOITEM

202f

8239

OCM_CHARTOITEM

2039

8249

OCM_COMPAREITEM

204e

8270

OCM_NOTIFY

2111

8465

OCM_COMMAND

2114

8468

OCM_HSCROLL

2115

8469

OCM_VSCROLL

2132

8498

OCM_CTLCOLORMSGBOX

2133

8499

OCM_CTLCOLOREDIT

2134

8500

OCM_CTLCOLORLISTBOX

2135

8501

OCM_CTLCOLORBTN

2136

8502

OCM_CTLCOLORDLG

2137

8503

OCM_CTLCOLORSCROLLBAR

2138

8504

OCM_CTLCOLORSTATIC

2210

8720

OCM_PARENTNOTIFY

8000

32768

WM_APP

cccd

52429

WM_RASDIALEVENT

End, list Of Windows Messages


출처 : zextor님 블로그

Posted by Gungume
,




모니터를 30인치로 바꾼 후 해상도를 2560*1600으로 사용하고 있다.

프로그래밍을 할때는 전체화면으로 작업을 하면 편하지만, 이 해상도로 인터넷 등을 하면 너무 크기 때문에 가로크기를 보통 가로해상도의 절반 크기인 1280으로 맞춘후에 왼쪽에 붙혀서 사용하곤 한다.

그러다 가끔은 하나의 프로그램을 모니터화면상의 가운데로 놓고 쓰거나(한쪽에 붙혀서 사용하면 나도 모르게 몸이 그쪽으로 치우쳐진다;;;), 웹브라우저+문서프로그램 등 2개의 프로그램을 동일한 크기로 좌우로 나눠서 사용해야하는 경우가 생긴다.

프로그램의 위치를 가운데나 기타 위치로 이동하는 경우는 그냥 마우스로 이동시켜도 되지만 성격상 위치를 딱 맞춰주는걸 좋아하고(예전에 자석윈도우 프로그램을 썼었는데 비스타 64비트에서는 작동을 안한다...), 프로그램 2개를 나란히 띄우는 경우도 '창 세로 정렬 보기'를 이용하면 알아서 크기에 맞춰서 배치는 해주지만 왼쪽에 웹브라우저 오른쪽에 문서창 이렇게 하고 싶은데 위치가 서로 반대로 되는 경우도 있다.(원하는 위치지정이 가능한지는 모르겠지만 내 지식으로는 모르겠다;;;)

그래서 간단한 프로그램을 작성했다. 키보드 후킹을 이용해서 Ctrl+1, 2, 3키를 눌렀을 경우 작업표시줄에서 현재 활성화된 윈도우에 대해서 각각 왼쪽, 가운데, 오른쪽 정렬을 하게 만들었다.

내 편의에 맞게 만들어서 고해상도 모니터외에는 별로 쓸모없는 프로그램인것 같긴하다. ㅡㅡ

위에서 설명했듯이 우선 작업표시줄에서 현재 활성화된 윈도우에 대해서 작동을 하고 윈도우의 크기 중 세로길이는 화면상에서 작업표시줄을 제외한 영역중 가장 상단부터 하단까지 꽉 채우도록 지정되어 있다.

그리고 가로 크기는 해상도/2로 정했는데 이것역시 작업표시줄을 제외한 해상도를 사용했다.

즉, 프로그램 2개를 동시에 띄운후에 이 프로그램을 사용해서 위치를 지정해주면 작업표시줄의 크기와 위치에 상관없이 2개의 프로그램을 동일한 크기로 띄울 수 있다.

아래는 DLL에 작성된 키보드 후킹과 관련된 간단한 소스이다. 후킹쪽을 제대로 공부안하고 이전에 가지고 있던 소스 등을 활용해서 만들었기 때문에 조건문 등의 처리가 제대로 된건지 모르겠다...일단 작동은 한다;;;

LRESULT CALLBACK KeyboardHookProc(int code, WPARAM key, LPARAM lParam)
{
	if (code != HC_NOREMOVE) 
	{		
		if (lParam<0)
		{
			if(GetKeyState(VK_CONTROL)<0)
			{
				RECT rect;
				HWND Wnd = ::GetForegroundWindow();
				SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);

				switch(key)
				{
					case '1' : 
						rect.left = 0;
						rect.right = rect.right/2;
						::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE);
						break;

					case '2' : 
						rect.left = rect.right/2/2;
						rect.right = rect.right/2;
						::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE);
						break;

					case '3' : 
						rect.left = rect.right/2;
						rect.right = rect.right/2;
						::MoveWindow(Wnd, rect.left, rect.top, rect.right, rect.bottom, TRUE);

					break;
				}
			}
		}
	}
	return CallNextHookEx(NULL, code, key, lParam);
}  

메인 프로그램에서는 단순히 후킹작동과 해제(프로그램 시작과 종료시에 해당기능 호출), 트레이 아이콘 등 자잘한 것만 있다.

프로그램을 실행하면 아무 화면도 안나오고 단순히 트레이쪽에 아이콘 하나만 등록되면서 프로그램이 작동된다. 프로그램을 종료하고 싶으면 트레이아이콘을 더블클릭하거나 마우스 우클릭을 한 후에 '종료'를 누르면 된다.

- 참고 자료 -
트레이 아이콘 : CodeGuru
MFC 모달 다이알로그를 숨김 상태로 시작 : Jiniya.net

(사용언어 및 제작툴 : MFC / VS2008)


최신 버전 받기
2009/07/09 - [Win32 API] - Windows Layout (윈도우창 이동 프로그램 - 3)

Posted by Gungume
,

2008년 2월호 마이크로소프트웨어 책을 보다가 "CFileFind 안에 진짜 MAX_PATH 버그" 라는 권용휘님의 기사를 보게되었다.

CFileFind 클래스를 종종 이용하기 때문에 기사를 유심히 봤는데 문제가 되는 부분은 CFileFind 클래스의 FindFile() 멤버함수에서 경로를 설정하는 부분중 MAX_PATH를 사용하는데 해당되는 부분에서 영어인 경우는 문제가 없는데 한글인 경우에 문제가 생긴다는 내용인것 같다.

기사의 내용을 참조해 설명하자면 NTFS와 윈도우 커널자체에서는 유니코드를 사용한다고한다. 즉 윈도우에서 폴더나 파일명을 지정할때는 최대 256자(확장자, '.', null문자 등 포함 최대 260자...)를 지정할 수 있는데, NTFS를 사용하는 경우는 유니코드를 사용하기 때문에 영어, 한글 모두 260자까지 사용가능하다.

이때 문제가 되는 부분이 함수내에서 TCHAR가 사용된 부분인데 MFC에서 문자 집합을 "멀티바이트 문자 집합 사용" 으로 지정을 해 놓으면 TCHAR 부분이 ANSI 상태로 컴파일이 되므로 260바이트로 설정이된다.

그런데 한글의 경우 영어와 달리 문자열이 260자인 경우에 유니코드와 ANSI 문자열 모두 520바이트이다. 영어인 경우는 ANSI 문자열의 경우 260바이트이기 때문에 별다른 문제가 없지만 한글의 경우는 문자열이 길어져서 ANSI 문자열 기준으로 260바이트가 넘는다면 처리과정에서 MAX_PATH의 최대값을 넘어가기 때문에 오류가 발생한다..

즉, 한글로 된 폴더나 파일명의 길이가 ANSI 문자열 기준으로 260바이트가 넘게되는 경우에 오류가 발생하는 문제가 있다.

기사를 보고 직접 테스트했을 때 VisualStudio 2005에서 테스트했는데 기사내용처럼 문제가 생겼었고, 문자 집합을 "유니코드 문자 집합 사용"으로 설정한 경우는 정상작동을 했다.

아래는 마이크로소프트웨어에 있는 권용휘님 기사의 일부와 CFileFind의 FindFile 함수의 일부~.



- 기사 참조 -
마이크로소프트웨어(2008년 2월호) - "CFileFind 안에 진짜 MAX_PATH 버그" (권용휘, http://rodream.net)
(위의 글은 권용휘님께 허락을 받고 포스팅한것입니다. 퍼가시거나 할 경우 권용휘님께 연락을 해보세요...)
Posted by Gungume
,

Renamer3.exe

파일명 일괄변경 프로그램 - 3


오랜만에 업뎃한 리네이머...

기능상의 변화는 없고 성능을 조금 향상시켰다.

우선 왜 그랬는지 모르겠지만 기존 프로그램에서 진행률 출력부분에 Sleep() 함수가 쓰인거를 삭제했고, 많은 갯수의 파일을 다룰때 특히 파일을 드래그&드롭할 때 파일 갯수가 많으면 응답없음이 떴었는데 그 부분을 해결하기 위해서 단일 스레드를 사용했다.

드래그&드롭과, 파일명 변경하는 부분에 스레드를 사용했는데 그냥 단일스레드라 속도향상과는 별 상관없을듯;;;

또한 기존버전까지 있었던 이미지리스트를 제거했다. 있으면 모양은 괜찮아보이는데 드래그&드롭 부분을 스레드로 돌리고나니 뭐가 잘못됐는지 이미지리스트를 얻고 셋팅하는 부분에서 너무 많은 시간이 걸려서 걍 제거 ㅡㅡ

마지막으로 이미 목록에 추가된 파일을 다시 추가하는 것에 대한 중복처리를 반복문으로 처리했었는데 함수를 이용 검색하는 방법으로 중복처리를 함으로써 속도향상시킴...

Source: https://github.com/gungume/Renamer/releases/tag/0.3
(사용언어 및 제작툴 : MFC / VS2005)

이전 버전 받기
2006/09/05 - [프로그래밍.../Source] - 파일명 일괄변경 프로그램
2007/05/31 - [프로그래밍.../Source] - 파일명 일괄변경 프로그램 - 2


최신버전 받기

Posted by Gungume
,




교회에서 간단히 사용하려고 만든 프로그램이다...

교회에서 파워포인트 슬라이드쇼 파일(PPS)로된 찬송가 파일을 사용할때 매번 복사 또는 실행을 위해서 파일이 있는 폴더에 이동한 후에 해당 작업을 했었는데 약간의 편의성을 위해서 만들었다.

PPS 파일이 존재하는 경로를 '원본경로'에 지정해주고 원하는 찬송가의 번호를 입력한후에 복사 또는 실행을 하면 된다.

복사는 나열된 번호의 PPS 파일을 바탕화면에 복사해주는 기능이고, 실행은 말그대로 해당 찬송가 번호의 PPS파일을 실행시킴으로서 바로 슬라이드쇼가 진행되게 해준다.

'원본경로'를 변경시키면 변경된 정보가 바로 INI 파일에 저장되서, 다음에 프로그램 실행시 마지막으로 변경된 경로정보가 기본값으로 불러와진다.

특별한 기능 없이 CopyFile()과 ShellExecute() 함수를 이용해서 구현했다...

위의 두 함수만 사용해서 간단히 구현했기 때문에 파일이 없는 경우에 대한 에러처리가 없기 때문에 입력이 잘못되면 그냥 아무런 반응이 없다.

아래는 프로그램 스샷~
찬송가 슬라이드쇼 복사 및 실행

(사용언어 및 제작툴 : MFC / VS2005)

Posted by Gungume
,



오랜만에 코딩한 로또관련 프로그램으로 로또 당첨확인 프로그램이다...

대충 만들다보니 에러처리도 없고 사용방법도 좀 그렇다;;;

대략적인 사용방법은 파일에 저장된 숫자정보를 불러오거나 '수동입력' 버튼을 이용해서 응모한 번호를 입력한다.

파일을 이용하는 방법은 미리 텍스트 파일등에 공백없이 ','로 구분해서 숫자를 입력해놓는다(List.txt 파일 참조...)

'수동입력'은 프로그램 상단에 있는 에디트박스 6개에 숫자를 입력후 버튼을 누르면 입력이 된다.

두가지 방법중 어떤거를 쓰던 입력후에 에디트박스에 당첨번호와 보너스번호를 입력하고 '당첨확인' 버튼을 누르면 당첨여부를 확인할 수 있다.

위에서도 말했듯이 에러처리가 딱히 없으므로 숫자 입력시 중복이 되거나 1~45 이외의 문자를 입력했을때에 대한 처리가 없다.(특히 숫자이외의 문자를 입력하면 오류메시지 많이 뜬다;;;)

아래는 프로그램 스샷~

로또 당첨확인 프로그램

(사용언어 및 제작툴 : MFC / VS2005)
Posted by Gungume
,



VisualStudio를 사용해 MFC프로그램을 작성하는 경우 빌드 등을 할때 생성되는 불필요한 파일을 지우는 프로그램이다.

매번 직접 지우기 귀찮아서 간단히 만들어봤다.

사용법은 간단히 프로그램 실행후 정리를 하고 싶은 프로젝트를 폴더채로 드래그&드롭을 한후에 정리하기 버튼을 누르면 된다.

재귀함수를 이용했기 때문에 하위폴더에 있는 파일들도 제거가 가능하고 다수의 프로젝트도 한꺼번에 정리가 가능하다.

제거할 파일의 확장자 기본 목록은 데브피아 오승우님의 프로젝트 클리너 v0.01 을 사용했고 추가로 입력이 가능하다.

아래는 프로그램 스샷~
프로젝트 클리너

(사용언어 및 제작툴 : MFC / VS2005)

최신 버전 받기
Posted by Gungume
,
GetFileAttributes() 함수는 지정된 파일이나 폴더의 속성을 알아볼때 쓰는 함수이다.

함수의 원형은 아래와 같은데 인자로 파일이나 폴더의 경로를 넣어주면 된다.

DWORD WINAPI GetFileAttributes(
  LPCTSTR lpFileName
);

아래는 샘플소스로 지정된 경로가 폴더인지 아닌지 알아보는 소스이다

CString strPath;
strPath = "C:\\Path";
if(GetFileAttributes(strPath) == FILE_ATTRIBUTE_DIRECTORY)
	MessageBox("폴더o");
else
	MessageBox("폴더x");

자세한 리턴값은 아래 MSDN 원문을 통해서 확인~
MSDN 원문 보기...

Posted by Gungume
,