1 /*=============================================================================
\r
3 *
\82»
\82Ì
\91¼
\82Ì
\94Ä
\97p
\83T
\83u
\83\8b\81[
\83`
\83\93\r
5 ===============================================================================
\r
6 / Copyright (C) 1997-2007 Sota. All rights reserved.
\r
8 / Redistribution and use in source and binary forms, with or without
\r
9 / modification, are permitted provided that the following conditions
\r
12 / 1. Redistributions of source code must retain the above copyright
\r
13 / notice, this list of conditions and the following disclaimer.
\r
14 / 2. Redistributions in binary form must reproduce the above copyright
\r
15 / notice, this list of conditions and the following disclaimer in the
\r
16 / documentation and/or other materials provided with the distribution.
\r
18 / THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
\r
19 / IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
\r
20 / OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
\r
21 / IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
\r
22 / INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
\r
23 / BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
\r
24 / USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
\r
25 / ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
\r
26 / (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
\r
27 / THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\r
28 /============================================================================*/
\r
35 #include <mbstring.h>
\r
36 #include <winsock.h>
\r
37 #include <windowsx.h>
\r
38 #include <commctrl.h>
\r
43 #include "resource.h"
\r
45 #include <htmlhelp.h>
\r
49 #undef __MBSWRAPPER_H__
\r
50 #include "mbswrapper.h"
\r
54 /*=====
\93ü
\97Í
\83_
\83C
\83A
\83\8d\83O
\83f
\81[
\83^
\82Ì
\83X
\83g
\83\89\83N
\83`
\83\83 =====*/
\r
57 char Title[80]; /*
\83_
\83C
\83A
\83\8d\83O
\82Ì
\83^
\83C
\83g
\83\8b */
\r
58 char Str[FMAX_PATH+1]; /*
\83f
\83t
\83H
\83\8b\83g
\95¶
\8e\9a\97ñ
\81^
\93ü
\97Í
\82³
\82ê
\82½
\95¶
\8e\9a\97ñ(Output) */
\r
59 int MaxLen; /*
\95¶
\8e\9a\97ñ
\82Ì
\8dÅ
\92· */
\r
60 int Anonymous; /* Anonymous
\83t
\83\89\83O(Output) */
\r
63 /*=====
\83v
\83\8d\83g
\83^
\83C
\83v =====*/
\r
65 static BOOL CALLBACK InputDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);
\r
67 /*=====
\8aO
\95\94\8eQ
\8fÆ =====*/
\r
69 extern HWND hHelpWin;
\r
71 /*=====
\83\8d\81[
\83J
\83\8b\82È
\83\8f\81[
\83N =====*/
\r
73 static DIALOGDATA *DialogData; /*
\93ü
\97Í
\83_
\83C
\83A
\83\8d\83O
\83f
\81[
\83^ */
\r
74 static int HelpPage;
\r
78 /*-----
\93ü
\97Í
\83_
\83C
\83A
\83\8d\83O
\82ð
\95\
\8e¦ --------------------------------------------------
\r
81 * int Res :
\83_
\83C
\83A
\83\8d\83O
\83{
\83b
\83N
\83X
\82ÌID
\r
82 * HWND hWnd :
\90e
\83E
\83C
\83\93\83h
\83E
\82Ì
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
83 * char *Title :
\83E
\83C
\83\93\83h
\83E
\83^
\83C
\83g
\83\8b (NULL=
\90Ý
\92è
\82µ
\82È
\82¢)
\r
84 * char *Buf :
\83G
\83f
\83B
\83b
\83g
\83{
\83b
\83N
\83X
\82Ì
\8f\89\8aú
\95¶
\8e\9a\97ñ
\81^
\93ü
\97Í
\95¶
\8e\9a\97ñ
\82ð
\95Ô
\82·
\83o
\83b
\83t
\83@
\r
85 * int Max :
\83o
\83b
\83t
\83@
\82Ì
\83T
\83C
\83Y (FMAX_PATH+1
\88È
\89º
\82Å
\82 \82é
\82±
\82Æ)
\r
86 * int *Flg :
\83t
\83\89\83O
\82Ì
\8f\89\8aú
\92l
\81^
\83t
\83\89\83O
\82ð
\95Ô
\82·
\83\8f\81[
\83N
\r
87 * int Help :
\83w
\83\8b\83v
\82Ì
\83R
\83\93\83e
\83L
\83X
\83g
\94Ô
\8d\86\r
90 * int
\83X
\83e
\81[
\83^
\83X (YES/NO=
\8eæ
\82è
\8fÁ
\82µ)
\r
93 *
\83_
\83C
\83A
\83\8d\83O
\82Í
\82P
\8cÂ
\82ÌEditBox
\82Æ
\82P
\8cÂ
\82ÌButton
\82ð
\8e\9d\82Â
\82à
\82Ì
\82ð
\8eg
\82¤
\r
94 *----------------------------------------------------------------------------*/
\r
96 int InputDialogBox(int Res, HWND hWnd, char *Title, char *Buf, int Max, int *Flg, int Help)
\r
101 dData.MaxLen = Max;
\r
102 memset(dData.Str, NUL, FMAX_PATH+1);
\r
103 strncpy(dData.Str, Buf, FMAX_PATH);
\r
104 strcpy(dData.Title, "");
\r
106 strcpy(dData.Title, Title);
\r
107 dData.Anonymous = *Flg;
\r
108 DialogData = &dData;
\r
111 Ret = DialogBox(GetFtpInst(), MAKEINTRESOURCE(Res), hWnd, InputDialogCallBack);
\r
115 memset(Buf, NUL, Max);
\r
116 strncpy(Buf, dData.Str, Max-1);
\r
117 *Flg = dData.Anonymous;
\r
123 /*-----
\93ü
\97Í
\83_
\83C
\83A
\83\8d\83O
\82Ì
\83R
\81[
\83\8b\83o
\83b
\83N ------------------------------------------
\r
126 * HWND hDlg :
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
127 * UINT message :
\83\81\83b
\83Z
\81[
\83W
\94Ô
\8d\86\r
128 * WPARAM wParam :
\83\81\83b
\83Z
\81[
\83W
\82Ì WPARAM
\88ø
\90\94\r
129 * LPARAM lParam :
\83\81\83b
\83Z
\81[
\83W
\82Ì LPARAM
\88ø
\90\94\r
133 *----------------------------------------------------------------------------*/
\r
135 static BOOL CALLBACK InputDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)
\r
137 char Tmp[FMAX_PATH+1];
\r
141 case WM_INITDIALOG :
\r
142 if(strlen(DialogData->Title) != 0)
\r
143 SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)DialogData->Title);
\r
144 SendDlgItemMessage(hDlg, INP_INPSTR, EM_LIMITTEXT, DialogData->MaxLen-1, 0);
\r
145 SendDlgItemMessage(hDlg, INP_INPSTR, WM_SETTEXT, 0, (LPARAM)DialogData->Str);
\r
146 SendDlgItemMessage(hDlg, INP_ANONYMOUS, BM_SETCHECK, DialogData->Anonymous, 0);
\r
150 switch(GET_WM_COMMAND_ID(wParam, lParam))
\r
153 SendDlgItemMessage(hDlg, INP_INPSTR, WM_GETTEXT, DialogData->MaxLen, (LPARAM)DialogData->Str);
\r
154 DialogData->Anonymous = SendDlgItemMessage(hDlg, INP_ANONYMOUS, BM_GETCHECK, 0, 0);
\r
155 EndDialog(hDlg, YES);
\r
159 EndDialog(hDlg, NO);
\r
163 hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, HelpPage);
\r
167 if(SelectDir(hDlg, Tmp, FMAX_PATH) == TRUE)
\r
168 SendDlgItemMessage(hDlg, INP_INPSTR, WM_SETTEXT, 0, (LPARAM)Tmp);
\r
177 /*-----
\81m
\8eÀ
\8ds
\81n
\82Æ
\81m
\8eæ
\8fÁ
\81n
\82¾
\82¯
\82Ì
\83_
\83C
\83A
\83\8d\83O
\82Ì
\8b¤
\92Ê
\83R
\81[
\83\8b\83o
\83b
\83N
\8aÖ
\90\94 --------------
\r
180 * HWND hDlg :
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
181 * UINT message :
\83\81\83b
\83Z
\81[
\83W
\94Ô
\8d\86\r
182 * WPARAM wParam :
\83\81\83b
\83Z
\81[
\83W
\82Ì WPARAM
\88ø
\90\94\r
183 * LPARAM lParam :
\83\81\83b
\83Z
\81[
\83W
\82Ì LPARAM
\88ø
\90\94\r
187 *----------------------------------------------------------------------------*/
\r
189 BOOL CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
\r
193 case WM_INITDIALOG :
\r
197 switch(GET_WM_COMMAND_ID(wParam, lParam))
\r
200 EndDialog(hDlg, YES);
\r
204 EndDialog(hDlg, NO);
\r
213 /*-----
\81m
\8eÀ
\8ds
\81n
\82Æ
\81m
\8eæ
\8fÁ
\81n
\82¾
\82¯
\82Ì
\83_
\83C
\83A
\83\8d\83O
\82Ì
\8b¤
\92Ê
\83R
\81[
\83\8b\83o
\83b
\83N
\8aÖ
\90\94(
\83e
\83L
\83X
\83g
\95\
\8e¦
\82Â
\82«)
\r
216 * HWND hDlg :
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
217 * UINT message :
\83\81\83b
\83Z
\81[
\83W
\94Ô
\8d\86\r
218 * WPARAM wParam :
\83\81\83b
\83Z
\81[
\83W
\82Ì WPARAM
\88ø
\90\94\r
219 * LPARAM lParam :
\83\81\83b
\83Z
\81[
\83W
\82Ì LPARAM
\88ø
\90\94\r
223 *----------------------------------------------------------------------------*/
\r
225 BOOL CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
\r
229 case WM_INITDIALOG :
\r
230 SendDlgItemMessage(hDlg, COMMON_TEXT, WM_SETTEXT, 0, lParam);
\r
234 switch(GET_WM_COMMAND_ID(wParam, lParam))
\r
237 EndDialog(hDlg, YES);
\r
241 EndDialog(hDlg, NO);
\r
250 /*-----
\95¶
\8e\9a\97ñ
\82Ì
\8dÅ
\8cã
\82É "\"
\82ð
\95t
\82¯
\82é -------------------------------------------
\r
253 * char *Str :
\95¶
\8e\9a\97ñ
\r
259 *
\83I
\83\8a\83W
\83i
\83\8b\82Ì
\95¶
\8e\9a\97ñ char *Str
\82ª
\95Ï
\8dX
\82³
\82ê
\82Ü
\82·
\81B
\r
260 *----------------------------------------------------------------------------*/
\r
262 void SetYenTail(char *Str)
\r
264 if(_mbscmp(_mbsninc(Str, _mbslen(Str) - 1), "\\") != 0)
\r
271 /*-----
\95¶
\8e\9a\97ñ
\82Ì
\8dÅ
\8cã
\82Ì "\"
\82ð
\8eæ
\82è
\8f\9c\82 -----------------------------------------
\r
274 * char *Str :
\95¶
\8e\9a\97ñ
\r
280 *
\83I
\83\8a\83W
\83i
\83\8b\82Ì
\95¶
\8e\9a\97ñ char *Str
\82ª
\95Ï
\8dX
\82³
\82ê
\82Ü
\82·
\81B
\r
281 *----------------------------------------------------------------------------*/
\r
283 void RemoveYenTail(char *Str)
\r
287 if(strlen(Str) > 0)
\r
289 Pos = _mbsninc(Str, _mbslen(Str) - 1);
\r
290 if(_mbscmp(Pos, "\\") == 0)
\r
297 /*-----
\95¶
\8e\9a\97ñ
\82Ì
\8dÅ
\8cã
\82É "/"
\82ð
\95t
\82¯
\82é -------------------------------------------
\r
300 * char *Str :
\95¶
\8e\9a\97ñ
\r
306 *
\83I
\83\8a\83W
\83i
\83\8b\82Ì
\95¶
\8e\9a\97ñ char *Str
\82ª
\95Ï
\8dX
\82³
\82ê
\82Ü
\82·
\81B
\r
307 *----------------------------------------------------------------------------*/
\r
309 void SetSlashTail(char *Str)
\r
311 if(_mbscmp(_mbsninc(Str, _mbslen(Str) - 1), "/") != 0)
\r
318 /*-----
\95¶
\8e\9a\97ñ
\82©
\82ç
\89ü
\8ds
\83R
\81[
\83h
\82ð
\8eæ
\82è
\8f\9c\82 ----------------------------------------
\r
321 * char *Str :
\95¶
\8e\9a\97ñ
\r
327 *
\83I
\83\8a\83W
\83i
\83\8b\82Ì
\95¶
\8e\9a\97ñ char *Str
\82ª
\95Ï
\8dX
\82³
\82ê
\82Ü
\82·
\81B
\r
328 *----------------------------------------------------------------------------*/
\r
330 void RemoveReturnCode(char *Str)
\r
334 if((Pos = strchr(Str, 0x0D)) != NULL)
\r
336 if((Pos = strchr(Str, 0x0A)) != NULL)
\r
342 /*-----
\95¶
\8e\9a\97ñ
\93à
\82Ì
\93Á
\92è
\82Ì
\95¶
\8e\9a\82ð
\91S
\82Ä
\92u
\82«
\8a·
\82¦
\82é ----------------------------------
\r
345 * char *Str :
\95¶
\8e\9a\97ñ
\r
346 * char Src :
\8c\9f\8dõ
\95¶
\8e\9a\r
347 * char Dst :
\92u
\8a·
\95¶
\8e\9a\r
351 *----------------------------------------------------------------------------*/
\r
353 void ReplaceAll(char *Str, char Src, char Dst)
\r
357 while((Pos = _mbschr(Str, Src)) != NULL)
\r
363 /*-----
\90\94\8e\9a\82à
\82µ
\82
\82Í
\93Á
\92è
\82Ì
\82P
\95¶
\8e\9a\82©
\83`
\83F
\83b
\83N ------------------------------------
\r
366 * int Ch :
\83`
\83F
\83b
\83N
\82·
\82é
\95¶
\8e\9a\r
367 * int Sym :
\8bL
\8d\86\r
370 * int
\83X
\83e
\81[
\83^
\83X
\r
371 * 0=
\90\94\8e\9a\82Å
\82à
\93Á
\92è
\82Ì
\8bL
\8d\86\82Å
\82à
\82È
\82¢
\r
372 *----------------------------------------------------------------------------*/
\r
374 int IsDigitSym(int Ch, int Sym)
\r
378 if((Ret = IsDigit(Ch)) == 0)
\r
380 if((Sym != NUL) && (Sym == Ch))
\r
387 /*-----
\95¶
\8e\9a\97ñ
\82ª
\91S
\82Ä
\93¯
\82¶
\95¶
\8e\9a\82©
\83`
\83F
\83b
\83N ----------------------------------------
\r
390 * char *Str :
\95¶
\8e\9a\97ñ
\r
391 * int Ch :
\95¶
\8e\9a\r
394 * int
\83X
\83e
\81[
\83^
\83X
\r
396 *----------------------------------------------------------------------------*/
\r
398 int StrAllSameChar(char *Str, char Ch)
\r
416 /*-----
\95¶
\8e\9a\97ñ
\82Ì
\96\96\94ö
\82Ì
\83X
\83y
\81[
\83X
\82ð
\8dí
\8f\9c ------------------------------------------
\r
419 * char *Str :
\95¶
\8e\9a\97ñ
\r
423 *----------------------------------------------------------------------------*/
\r
425 void RemoveTailingSpaces(char *Str)
\r
429 Pos = Str + strlen(Str);
\r
440 /*-----
\91å
\95¶
\8e\9a\81^
\8f¬
\95¶
\8e\9a\82ð
\8bæ
\95Ê
\82µ
\82È
\82¢strstr --------------------------------------
\r
443 * char *s1 :
\95¶
\8e\9a\97ñ
\82P
\r
444 * char *s2 :
\95¶
\8e\9a\97ñ
\82Q
\r
447 * char *
\95¶
\8e\9a\97ñ
\82P
\92\86\82Å
\95¶
\8e\9a\97ñ
\82Q
\82ª
\8c©
\82Â
\82©
\82Á
\82½
\88Ê
\92u
\r
448 * NULL=
\8c©
\82Â
\82©
\82ç
\82È
\82©
\82Á
\82½
\r
449 *----------------------------------------------------------------------------*/
\r
451 char *stristr(char *s1, char *s2)
\r
458 if((tolower(*s1) == tolower(*s2)) &&
\r
459 (_strnicmp(s1, s2, strlen(s2)) == 0))
\r
470 /*-----
\95¶
\8e\9a\97ñ
\92\86\82Ì
\83X
\83y
\81[
\83X
\82Å
\8bæ
\90Ø
\82ç
\82ê
\82½
\8e\9f\82Ì
\83t
\83B
\81[
\83\8b\83h
\82ð
\95Ô
\82· --------------------
\r
473 * char *Str :
\95¶
\8e\9a\97ñ
\r
476 * char *
\8e\9f\82Ì
\83t
\83B
\81[
\83\8b\83h
\r
477 * NULL=
\8c©
\82Â
\82©
\82ç
\82È
\82©
\82Á
\82½
\r
478 *----------------------------------------------------------------------------*/
\r
480 char *GetNextField(char *Str)
\r
482 if((Str = strchr(Str, ' ')) != NULL)
\r
498 /*-----
\8c»
\8dÝ
\82Ì
\83t
\83B
\81[
\83\8b\83h
\82Ì
\95¶
\8e\9a\97ñ
\82ð
\83R
\83s
\81[
\82·
\82é ----------------------------------
\r
501 * char *Str :
\95¶
\8e\9a\97ñ
\r
502 * char *Buf :
\83R
\83s
\81[
\90æ
\r
503 * int Max :
\8dÅ
\91å
\95¶
\8e\9a\90\94\r
506 * int
\83X
\83e
\81[
\83^
\83X
\r
507 * SUCCESS/FAIL=
\92·
\82³
\82ª
\92·
\82·
\82¬
\82é
\r
508 *----------------------------------------------------------------------------*/
\r
510 int GetOneField(char *Str, char *Buf, int Max)
\r
516 if((Pos = strchr(Str, ' ')) == NULL)
\r
518 if((int)strlen(Str) <= Max)
\r
526 if(Pos - Str <= Max)
\r
528 strncpy(Buf, Str, Pos - Str);
\r
529 *(Buf + (Pos - Str)) = NUL;
\r
537 /*-----
\83J
\83\93\83}
\82ð
\8eæ
\82è
\8f\9c\82 ------------------------------------------------------
\r
540 * char *Str :
\95¶
\8e\9a\97ñ
\r
544 *----------------------------------------------------------------------------*/
\r
546 void RemoveComma(char *Str)
\r
565 /*-----
\83p
\83X
\96¼
\82Ì
\92\86\82Ì
\83t
\83@
\83C
\83\8b\96¼
\82Ì
\90æ
\93ª
\82ð
\95Ô
\82· ------------------------------------
\r
568 * char *Path :
\83p
\83X
\96¼
\r
571 * char *
\83t
\83@
\83C
\83\8b\96¼
\82Ì
\90æ
\93ª
\r
574 *
\83f
\83B
\83\8c\83N
\83g
\83\8a\82Ì
\8bæ
\90Ø
\82è
\8bL
\8d\86\82Í "\"
\82Æ "/"
\82Ì
\97¼
\95û
\82ª
\97L
\8cø
\r
575 *----------------------------------------------------------------------------*/
\r
577 char *GetFileName(char *Path)
\r
581 if((Pos = _mbschr(Path, ':')) != NULL)
\r
584 if((Pos = _mbsrchr(Path, '\\')) != NULL)
\r
587 if((Pos = _mbsrchr(Path, '/')) != NULL)
\r
594 /*-----
\83c
\81[
\83\8b\82Ì
\95\
\8e¦
\96¼
\82ð
\95Ô
\82· --------------------------------------------------
\r
597 * char *Path :
\83p
\83X
\96¼
\r
600 * char * :
\95\
\8e¦
\96¼
\r
601 *----------------------------------------------------------------------------*/
\r
603 char *GetToolName(char *Path)
\r
607 if((Pos = _mbschr(Path, ':')) != NULL)
\r
610 if((Pos = _mbsrchr(Path, '\\')) != NULL)
\r
617 /*-----
\83p
\83X
\96¼
\82Ì
\92\86\82Ì
\8ag
\92£
\8eq
\82Ì
\90æ
\93ª
\82ð
\95Ô
\82· ----------------------------------------
\r
620 * char *Path :
\83p
\83X
\96¼
\r
623 * char *
\8ag
\92£
\8eq
\82Ì
\90æ
\93ª
\r
624 *----------------------------------------------------------------------------*/
\r
626 char *GetFileExt(char *Path)
\r
630 Ret = _mbschr(Path, NUL);
\r
631 if((_mbscmp(Path, ".") != 0) &&
\r
632 (_mbscmp(Path, "..") != 0))
\r
634 while((Path = _mbschr(Path, '.')) != NULL)
\r
644 /*-----
\83p
\83X
\96¼
\82©
\82ç
\83t
\83@
\83C
\83\8b\96¼
\82ð
\8eæ
\82è
\8f\9c\82 ----------------------------------------
\r
647 * char *Path :
\83p
\83X
\96¼
\r
648 * char *Buf :
\83t
\83@
\83C
\83\8b\96¼
\82ð
\8f\9c\82¢
\82½
\83p
\83X
\96¼
\82Ì
\83R
\83s
\81[
\90æ
\r
654 *
\83f
\83B
\83\8c\83N
\83g
\83\8a\82Ì
\8bæ
\90Ø
\82è
\8bL
\8d\86\82Í "\"
\82Æ "/"
\82Ì
\97¼
\95û
\82ª
\97L
\8cø
\r
655 *----------------------------------------------------------------------------*/
\r
657 void RemoveFileName(char *Path, char *Buf)
\r
663 if((Pos = _mbsrchr(Buf, '/')) != NULL)
\r
665 else if((Pos = _mbsrchr(Buf, '\\')) != NULL)
\r
667 if((Pos == Buf) ||
\r
668 ((Pos != Buf) && (*(Pos - 1) != ':')))
\r
675 /*-----
\8fã
\88Ê
\83f
\83B
\83\8c\83N
\83g
\83\8a\82Ì
\83p
\83X
\96¼
\82ð
\8eæ
\93¾ ----------------------------------------
\r
678 * char *Path :
\83p
\83X
\96¼
\r
684 *
\83f
\83B
\83\8c\83N
\83g
\83\8a\82Ì
\8bæ
\90Ø
\82è
\8bL
\8d\86\82Í "\"
\82Æ "/"
\82Ì
\97¼
\95û
\82ª
\97L
\8cø
\r
685 *
\8dÅ
\8f\89\82Ì "\"
\82â"/"
\82Í
\8ec
\82·
\r
686 *
\97á
\81j "/pub" --> "/"
\r
687 *
\97á
\81j "C:\DOS" --> "C:\"
\r
688 *----------------------------------------------------------------------------*/
\r
690 void GetUpperDir(char *Path)
\r
695 if(((Top = _mbschr(Path, '/')) != NULL) ||
\r
696 ((Top = _mbschr(Path, '\\')) != NULL))
\r
699 if(((Pos = _mbsrchr(Top, '/')) != NULL) ||
\r
700 ((Pos = _mbsrchr(Top, '\\')) != NULL))
\r
709 /*-----
\8fã
\88Ê
\83f
\83B
\83\8c\83N
\83g
\83\8a\82Ì
\83p
\83X
\96¼
\82ð
\8eæ
\93¾ ----------------------------------------
\r
712 * char *Path :
\83p
\83X
\96¼
\r
718 *
\83f
\83B
\83\8c\83N
\83g
\83\8a\82Ì
\8bæ
\90Ø
\82è
\8bL
\8d\86\82Í "\"
\82Æ "/"
\82Ì
\97¼
\95û
\82ª
\97L
\8cø
\r
719 *
\8dÅ
\8f\89\82Ì "\"
\82â"/"
\82à
\8fÁ
\82·
\r
720 *
\97á
\81j "/pub" --> ""
\r
721 *
\97á
\81j "C:\DOS" --> "C:"
\r
722 *----------------------------------------------------------------------------*/
\r
724 void GetUpperDirEraseTopSlash(char *Path)
\r
728 if(((Pos = _mbsrchr(Path, '/')) != NULL) ||
\r
729 ((Pos = _mbsrchr(Path, '\\')) != NULL))
\r
738 /*-----
\83f
\83B
\83\8c\83N
\83g
\83\8a\82Ì
\8aK
\91w
\90\94\82ð
\95Ô
\82· --------------------------------------------
\r
741 * char *Path :
\83p
\83X
\96¼
\r
747 *
\92P
\82É '\'
\82Æ '/'
\82Ì
\90\94\82ð
\95Ô
\82·
\82¾
\82¯
\r
748 *----------------------------------------------------------------------------*/
\r
750 int AskDirLevel(char *Path)
\r
756 while(((Pos = _mbschr(Path, '/')) != NULL) ||
\r
757 ((Pos = _mbschr(Path, '\\')) != NULL))
\r
766 /*-----
\83t
\83@
\83C
\83\8b\83T
\83C
\83Y
\82ð
\95¶
\8e\9a\97ñ
\82É
\95Ï
\8a·
\82·
\82é --------------------------------------
\r
769 * double Size :
\83t
\83@
\83C
\83\8b\83T
\83C
\83Y
\r
770 * char *Buf :
\95¶
\8e\9a\97ñ
\82ð
\95Ô
\82·
\83o
\83b
\83t
\83@
\r
774 *----------------------------------------------------------------------------*/
\r
776 void MakeSizeString(double Size, char *Buf)
\r
778 if(Size >= (1024*1024))
\r
780 Size /= (1024*1024);
\r
781 sprintf(Buf, "%.2fM Bytes", Size);
\r
783 else if (Size >= 1024)
\r
786 sprintf(Buf, "%.2fK Bytes", Size);
\r
789 sprintf(Buf, "%.0f Bytes", Size);
\r
795 /*----- StaticText
\82Ì
\97Ì
\88æ
\82É
\8eû
\82Ü
\82é
\82æ
\82¤
\82É
\83p
\83X
\96¼
\82ð
\90®
\8c`
\82µ
\82Ä
\95\
\8e¦ --------------------
\r
798 * HWND hWnd :
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
799 * char *Str :
\95¶
\8e\9a\97ñ (
\92·
\82³
\82ÍFMAX_PATH
\88È
\89º)
\r
803 *----------------------------------------------------------------------------*/
\r
805 void DispStaticText(HWND hWnd, char *Str)
\r
807 char Buf[FMAX_PATH+1];
\r
815 GetClientRect(hWnd, &Rect);
\r
816 Rect.right -= Rect.left;
\r
824 GetTextExtentPoint32(hDC, Pos, strlen(Pos), &fSize);
\r
826 if(fSize.cx <= Rect.right)
\r
829 if(_mbslen(Pos) <= 4)
\r
833 Pos = _mbsninc(Pos, 4);
\r
834 if((Tmp = _mbschr(Pos, '\\')) == NULL)
\r
835 Tmp = _mbschr(Pos, '/');
\r
838 Tmp = _mbsninc(Pos, 4);
\r
841 memset(Pos, '.', 3);
\r
844 ReleaseDC(hWnd, hDC);
\r
846 SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)Pos);
\r
851 /*-----
\95¶
\8e\9a\97ñ
\83A
\83\8c\83C
\82Ì
\92·
\82³
\82ð
\8b\81\82ß
\82é --------------------------------------------
\r
854 * char *Str :
\95¶
\8e\9a\97ñ
\83A
\83\8c\83C (
\96\96\94ö
\82ÍNUL
\82Q
\82Â)
\r
860 *
\8fI
\92[
\82Ì2
\82Â
\82ÌNUL
\82Ì
\82¤
\82¿
\82Ì
\8dÅ
\8cã
\82Ì
\95¨
\82Í
\90\94\82¦
\82È
\82¢
\r
861 * StrMultiLen("") = 0
\r
862 * StrMultiLen("abc\0xyz\0") = 8
\r
863 * StrMultiLen("abc") =
\8fI
\92[
\82ª
\82Q
\82Â
\82ÌNUL
\82Å
\82È
\82¢
\82Ì
\82Å
\8b\81\82ß
\82ç
\82ê
\82È
\82¢
\r
864 *----------------------------------------------------------------------------*/
\r
866 int StrMultiLen(char *Str)
\r
874 Tmp = strlen(Str) + 1;
\r
882 /*----- RECT
\82ð
\83N
\83\89\83C
\83A
\83\93\83g
\8dÀ
\95W
\82©
\82ç
\83X
\83N
\83\8a\81[
\83\93\8dÀ
\95W
\82É
\95Ï
\8a· ------------------------
\r
885 * HWND hWnd :
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
886 * RECT *Rect : RECT
\r
890 *----------------------------------------------------------------------------*/
\r
892 void RectClientToScreen(HWND hWnd, RECT *Rect)
\r
896 Tmp.x = Rect->left;
\r
898 ClientToScreen(hWnd, &Tmp);
\r
899 Rect->left = Tmp.x;
\r
902 Tmp.x = Rect->right;
\r
903 Tmp.y = Rect->bottom;
\r
904 ClientToScreen(hWnd, &Tmp);
\r
905 Rect->right = Tmp.x;
\r
906 Rect->bottom = Tmp.y;
\r
912 /*----- 16
\90i
\95¶
\8e\9a\82ð
\83o
\83C
\83i
\83\8a\82É
\95Ï
\8a· ----------------------------------------------
\r
915 * char Ch : 16
\90i
\95¶
\8e\9a\r
918 * int
\83o
\83C
\83i
\83\8a\92l
\r
919 *----------------------------------------------------------------------------*/
\r
921 int hex2bin(char Ch)
\r
925 if((Ch >= '0') && (Ch <= '9'))
\r
927 else if((Ch >= 'A') && (Ch <= 'F'))
\r
928 Ret = Ch - 'A' + 10;
\r
929 else if((Ch >= 'a') && (Ch <= 'f'))
\r
930 Ret = Ch - 'a' + 10;
\r
936 /*-----
\82t
\82m
\82b
\95¶
\8e\9a\97ñ
\82ð
\95ª
\89ð
\82·
\82é ------------------------------------------------
\r
939 * char *unc : UNC
\95¶
\8e\9a\97ñ
\r
940 * char *Host :
\83z
\83X
\83g
\96¼
\82ð
\83R
\83s
\81[
\82·
\82é
\83o
\83b
\83t
\83@ (
\83T
\83C
\83Y
\82Í HOST_ADRS_LEN+1)
\r
941 * char *Path :
\83p
\83X
\96¼
\82ð
\83R
\83s
\81[
\82·
\82é
\83o
\83b
\83t
\83@ (
\83T
\83C
\83Y
\82Í FMAX_PATH+1)
\r
942 * char *File :
\83t
\83@
\83C
\83\8b\96¼
\82ð
\83R
\83s
\81[
\82·
\82é
\83o
\83b
\83t
\83@ (
\83T
\83C
\83Y
\82Í FMAX_PATH+1)
\r
943 * char *User :
\83\86\81[
\83U
\96¼
\82ð
\83R
\83s
\81[
\82·
\82é
\83o
\83b
\83t
\83@ (
\83T
\83C
\83Y
\82Í USER_NAME_LEN+1)
\r
944 * char *Pass :
\83p
\83X
\83\8f\81[
\83h
\82ð
\83R
\83s
\81[
\82·
\82é
\83o
\83b
\83t
\83@ (
\83T
\83C
\83Y
\82Í PASSWORD_LEN+1)
\r
945 * int *Port :
\83|
\81[
\83g
\94Ô
\8d\86\82ð
\83R
\83s
\81[
\82·
\82é
\83o
\83b
\83t
\83@
\r
948 * int
\83X
\83e
\81[
\83^
\83X
\r
951 * "\"
\82Í
\91S
\82Ä"/"
\82É
\92u
\82«
\8a·
\82¦
\82é
\r
952 *----------------------------------------------------------------------------*/
\r
954 int SplitUNCpath(char *unc, char *Host, char *Path, char *File, char *User, char *Pass, int *Port)
\r
959 char Tmp[FMAX_PATH+1];
\r
961 memset(Host, NUL, HOST_ADRS_LEN+1);
\r
962 memset(Path, NUL, FMAX_PATH+1);
\r
963 memset(File, NUL, FMAX_PATH+1);
\r
964 memset(User, NUL, USER_NAME_LEN+1);
\r
965 memset(Pass, NUL, PASSWORD_LEN+1);
\r
968 ReplaceAll(unc, '\\', '/');
\r
970 if((Pos1 = _mbsstr(unc, "//")) != NULL)
\r
975 if((Pos2 = _mbschr(Pos1, '@')) != NULL)
\r
977 memset(Tmp, NUL, FMAX_PATH+1);
\r
978 memcpy(Tmp, Pos1, Pos2-Pos1);
\r
981 if((Pos2 = _mbschr(Tmp, ':')) != NULL)
\r
983 memcpy(User, Tmp, min1(Pos2-Tmp, USER_NAME_LEN));
\r
984 strncpy(Pass, Pos2+1, PASSWORD_LEN);
\r
987 strncpy(User, Tmp, USER_NAME_LEN);
\r
990 if((Pos2 = _mbschr(Pos1, ':')) != NULL)
\r
992 memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));
\r
996 *Port = atoi(Pos2);
\r
997 while(*Pos2 != NUL)
\r
999 if(IsDigit(*Pos2) == 0)
\r
1004 RemoveFileName(Pos2, Path);
\r
1005 strncpy(File, GetFileName(Pos2), FMAX_PATH);
\r
1007 else if((Pos2 = _mbschr(Pos1, '/')) != NULL)
\r
1009 memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));
\r
1010 RemoveFileName(Pos2, Path);
\r
1011 strncpy(File, GetFileName(Pos2), FMAX_PATH);
\r
1015 strncpy(Host, Pos1, HOST_ADRS_LEN);
\r
1019 if(strlen(Host) > 0)
\r
1026 /*-----
\93ú
\95t
\95¶
\8e\9a\97ñ(JST)
\82ðFILETIME(UTC)
\82É
\95Ï
\8a· ----------------------------------
\r
1029 * char *Time :
\93ú
\95t
\95¶
\8e\9a\97ñ ("yyyy/mm/dd hh:mm")
\r
1030 * FILETIME *Buf :
\83t
\83@
\83C
\83\8b\83^
\83C
\83\80\82ð
\95Ô
\82·
\83\8f\81[
\83N
\r
1033 * int
\83X
\83e
\81[
\83^
\83X
\r
1034 * YES/NO=
\93ú
\95t
\8fî
\95ñ
\82ª
\82È
\82©
\82Á
\82½
\r
1035 *----------------------------------------------------------------------------*/
\r
1037 int TimeString2FileTime(char *Time, FILETIME *Buf)
\r
1044 Buf->dwLowDateTime = 0;
\r
1045 Buf->dwHighDateTime = 0;
\r
1047 if(strlen(Time) >= 16)
\r
1049 if(IsDigit(Time[0]) && IsDigit(Time[5]) && IsDigit(Time[8]) &&
\r
1050 IsDigit(Time[12]) && IsDigit(Time[14]))
\r
1055 sTime.wYear = atoi(Time);
\r
1056 sTime.wMonth = atoi(Time + 5);
\r
1057 sTime.wDay = atoi(Time + 8);
\r
1058 if(Time[11] != ' ')
\r
1059 sTime.wHour = atoi(Time + 11);
\r
1061 sTime.wHour = atoi(Time + 12);
\r
1062 sTime.wMinute = atoi(Time + 14);
\r
1063 sTime.wSecond = 0;
\r
1064 sTime.wMilliseconds = 0;
\r
1066 SystemTimeToFileTime(&sTime, &fTime);
\r
1067 LocalFileTimeToFileTime(&fTime, Buf);
\r
1073 /*----- FILETIME(UTC)
\82ð
\93ú
\95t
\95¶
\8e\9a\97ñ(JST)
\82É
\95Ï
\8a· ----------------------------------
\r
1076 * FILETIME *Time :
\83t
\83@
\83C
\83\8b\83^
\83C
\83\80\r
1077 * char *Buf :
\93ú
\95t
\95¶
\8e\9a\97ñ
\82ð
\95Ô
\82·
\83\8f\81[
\83N
\r
1078 * int Mode :
\83\82\81[
\83h (DISPFORM_xxx)
\r
1079 * int InfoExist :
\8fî
\95ñ
\82ª
\82 \82é
\82©
\82Ç
\82¤
\82© (FINFO_xxx)
\r
1083 *----------------------------------------------------------------------------*/
\r
1085 void FileTime2TimeString(FILETIME *Time, char *Buf, int Mode, int InfoExist)
\r
1090 if(Mode == DISPFORM_LEGACY)
\r
1092 if((Time->dwLowDateTime == 0) && (Time->dwHighDateTime == 0))
\r
1095 /* "yyyy/mm/dd hh:mm" */
\r
1096 FileTimeToLocalFileTime(Time, &fTime);
\r
1097 FileTimeToSystemTime(&fTime, &sTime);
\r
1099 if(InfoExist & FINFO_DATE)
\r
1100 sprintf(Buf, "%04d/%02d/%02d ", sTime.wYear, sTime.wMonth, sTime.wDay);
\r
1102 sprintf(Buf, " ");
\r
1104 if(InfoExist & FINFO_TIME)
\r
1105 sprintf(Buf+11, "%2d:%02d", sTime.wHour, sTime.wMinute);
\r
1107 sprintf(Buf+11, " ");
\r
1111 // if (!strftime((char *)str, 100, "%c", (const struct tm *)thetime))
\r
1112 // SetTaskMsg("strftime
\82ª
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½!\n");
\r
1118 /*-----
\83t
\83@
\83C
\83\8b\83^
\83C
\83\80\82ð
\8ew
\92è
\83^
\83C
\83\80\83]
\81[
\83\93\82Ì
\83\8d\81[
\83J
\83\8b\83^
\83C
\83\80\82©
\82çGMT
\82É
\95Ï
\8a· ---------
\r
1121 * FILETIME *Time :
\83t
\83@
\83C
\83\8b\83^
\83C
\83\80\r
1122 * int TimeZone :
\83^
\83C
\83\80\83]
\81[
\83\93\r
1126 *----------------------------------------------------------------------------*/
\r
1128 void SpecificLocalFileTime2FileTime(FILETIME *Time, int TimeZone)
\r
1130 unsigned __int64 Tmp64;
\r
1132 Tmp64 = (unsigned __int64)Time->dwLowDateTime +
\r
1133 ((unsigned __int64)Time->dwHighDateTime << 32);
\r
1135 Tmp64 -= (__int64)TimeZone * (__int64)36000000000;
\r
1137 Time->dwHighDateTime = (DWORD)(Tmp64 >> 32);
\r
1138 Time->dwLowDateTime = (DWORD)(Tmp64 & 0xFFFFFFFF);
\r
1144 /*-----
\91®
\90«
\95¶
\8e\9a\97ñ
\82ð
\92l
\82É
\95Ï
\8a· --------------------------------------------------
\r
1147 * char *Str :
\91®
\90«
\95¶
\8e\9a\97ñ ("rwxrwxrwx")
\r
1151 *----------------------------------------------------------------------------*/
\r
1153 int AttrString2Value(char *Str)
\r
1159 memset(Tmp, 0, 10);
\r
1160 strncpy(Tmp, Str, 9);
\r
1187 /*-----
\91®
\90«
\82Ì
\92l
\82ð
\95¶
\8e\9a\97ñ
\82É
\95Ï
\8a· ------------------------------------------------
\r
1190 * int Attr :
\91®
\90«
\82Ì
\92l
\r
1191 * char *Buf :
\91®
\90«
\95¶
\8e\9a\97ñ
\82ð
\83Z
\83b
\83g
\82·
\82é
\83o
\83b
\83t
\83@ ("rwxrwxrwx")
\r
1195 *----------------------------------------------------------------------------*/
\r
1197 void AttrValue2String(int Attr, char *Buf)
\r
1199 strcpy(Buf, "---------");
\r
1226 /*----- INI
\83t
\83@
\83C
\83\8b\95¶
\8e\9a\97ñ
\82ð
\90®
\8c` -----------------------------------------------
\r
1229 * char *Str :
\95¶
\8e\9a\97ñ
\r
1233 *----------------------------------------------------------------------------*/
\r
1235 void FormatIniString(char *Str)
\r
1240 while(*Str != NUL)
\r
1242 if((*Str != ' ') && (*Str != '\t') && (*Str != '\n'))
\r
1248 while(*Str != NUL)
\r
1250 if((*Str != 0x22) && (*Str != '\n'))
\r
1260 /*-----
\83t
\83@
\83C
\83\8b\91I
\91ð ----------------------------------------------------------
\r
1263 * HWND hWnd :
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
1264 * char *Fname :
\83t
\83@
\83C
\83\8b\96¼
\82ð
\95Ô
\82·
\83o
\83b
\83t
\83@
\r
1265 * char *Title :
\83^
\83C
\83g
\83\8b\r
1266 * char *Filters :
\83t
\83B
\83\8b\83^
\81[
\95¶
\8e\9a\97ñ
\r
1267 * char *Ext :
\83f
\83t
\83H
\83\8b\83g
\8ag
\92£
\8eq
\r
1268 * int Flags :
\92Ç
\89Á
\82·
\82é
\83t
\83\89\83O
\r
1269 * int Save :
\81u
\8aJ
\82
\81v
\82©
\81u
\95Û
\91¶
\81v
\82© (0=
\8aJ
\82, 1=
\95Û
\91¶)
\r
1272 * int
\83X
\83e
\81[
\83^
\83X
\r
1273 * TRUE/FALSE=
\8eæ
\8fÁ
\r
1274 *----------------------------------------------------------------------------*/
\r
1276 int SelectFile(HWND hWnd, char *Fname, char *Title, char *Filters, char *Ext, int Flags, int Save)
\r
1278 OPENFILENAME OpenFile;
\r
1279 char Tmp[FMAX_PATH+1];
\r
1280 char Cur[FMAX_PATH+1];
\r
1283 GetCurrentDirectory(FMAX_PATH, Cur);
\r
1285 strcpy(Tmp, Fname);
\r
1286 OpenFile.lStructSize = sizeof(OPENFILENAME);
\r
1287 OpenFile.hwndOwner = hWnd;
\r
1288 OpenFile.hInstance = 0;
\r
1289 OpenFile.lpstrFilter = Filters;
\r
1290 OpenFile.lpstrCustomFilter = NULL;
\r
1291 OpenFile.nFilterIndex = 1;
\r
1292 OpenFile.lpstrFile = Tmp;
\r
1293 OpenFile.nMaxFile = FMAX_PATH;
\r
1294 OpenFile.lpstrFileTitle = NULL;
\r
1295 OpenFile.nMaxFileTitle = 0;
\r
1296 OpenFile.lpstrInitialDir = NULL;
\r
1297 OpenFile.lpstrTitle = Title;
\r
1298 OpenFile.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | Flags;
\r
1299 OpenFile.nFileOffset = 0;
\r
1300 OpenFile.nFileExtension = 0;
\r
1301 OpenFile.lpstrDefExt = Ext;
\r
1302 OpenFile.lCustData = 0;
\r
1303 OpenFile.lpfnHook = NULL;
\r
1304 OpenFile.lpTemplateName = NULL;
\r
1308 if((Sts = GetOpenFileName(&OpenFile)) == TRUE)
\r
1309 strcpy(Fname,Tmp);
\r
1313 if((Sts = GetSaveFileName(&OpenFile)) == TRUE)
\r
1314 strcpy(Fname,Tmp);
\r
1316 SetCurrentDirectory(Cur);
\r
1321 /*-----
\83f
\83B
\83\8c\83N
\83g
\83\8a\82ð
\91I
\91ð ----------------------------------------------------
\r
1324 * HWND hWnd :
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
1325 * char *Buf :
\83f
\83B
\83\8c\83N
\83g
\83\8a\96¼
\82ð
\95Ô
\82·
\83o
\83b
\83t
\83@
\81i
\8f\89\8aú
\83f
\83B
\83\8c\83N
\83g
\83\8a\96¼
\81j
\r
1326 * int MaxLen :
\83o
\83b
\83t
\83@
\82Ì
\83T
\83C
\83Y
\r
1329 * int
\83X
\83e
\81[
\83^
\83X
\r
1330 * TRUE/FALSE=
\8eæ
\8fÁ
\r
1331 *----------------------------------------------------------------------------*/
\r
1333 int SelectDir(HWND hWnd, char *Buf, int MaxLen)
\r
1335 char Tmp[FMAX_PATH+1];
\r
1336 char Cur[FMAX_PATH+1];
\r
1338 LPITEMIDLIST lpIdll;
\r
1340 LPMALLOC lpMalloc;
\r
1343 GetCurrentDirectory(FMAX_PATH, Cur);
\r
1345 if(SHGetMalloc(&lpMalloc) == NOERROR)
\r
1347 Binfo.hwndOwner = hWnd;
\r
1348 Binfo.pidlRoot = NULL;
\r
1349 Binfo.pszDisplayName = Tmp;
\r
1350 Binfo.lpszTitle = MSGJPN185;
\r
1351 Binfo.ulFlags = BIF_RETURNONLYFSDIRS;
\r
1352 Binfo.lpfn = NULL;
\r
1355 if((lpIdll = SHBrowseForFolder(&Binfo)) != NULL)
\r
1357 SHGetPathFromIDList(lpIdll, Tmp);
\r
1358 memset(Buf, NUL, MaxLen);
\r
1359 strncpy(Buf, Tmp, MaxLen-1);
\r
1361 lpMalloc->lpVtbl->Free(lpMalloc, lpIdll);
\r
1363 lpMalloc->lpVtbl->Release(lpMalloc);
\r
1364 SetCurrentDirectory(Cur);
\r
1370 /*-----
\92l
\82É
\8aÖ
\98A
\95t
\82¯
\82ç
\82ê
\82½
\83\89\83W
\83I
\83{
\83^
\83\93\82ð
\83`
\83F
\83b
\83N
\82·
\82é --------------------------
\r
1373 * HWND hDlg :
\83_
\83C
\83A
\83\8d\83O
\83{
\83b
\83N
\83X
\82Ì
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
1374 * int Value :
\92l
\r
1375 * const RADIOBUTTON *Buttons :
\83\89\83W
\83I
\83{
\83^
\83\93\82Æ
\92l
\82Ì
\8aÖ
\98A
\95t
\82¯
\83e
\81[
\83u
\83\8b\r
1376 * int Num :
\83{
\83^
\83\93\82Ì
\90\94\r
1382 *
\92l
\82É
\8aÖ
\98A
\95t
\82¯
\82ç
\82ê
\82½
\83{
\83^
\83\93\82ª
\96³
\82¢
\8e\9e\82Í
\81A
\83e
\81[
\83u
\83\8b\82Ì
\8dÅ
\8f\89\82É
\93o
\98^
\82³
\82ê
\82Ä
\82¢
\82é
\83{
\83^
\r
1383 *
\83\93\82ð
\83`
\83F
\83b
\83N
\82·
\82é
\r
1384 *----------------------------------------------------------------------------*/
\r
1386 void SetRadioButtonByValue(HWND hDlg, int Value, const RADIOBUTTON *Buttons, int Num)
\r
1391 Def = Buttons->ButID;
\r
1392 for(i = 0; i < Num; i++)
\r
1394 if(Value == Buttons->Value)
\r
1396 SendDlgItemMessage(hDlg, Buttons->ButID, BM_SETCHECK, 1, 0);
\r
1397 /*
\83\89\83W
\83I
\83{
\83^
\83\93\82ð
\95Ï
\8dX
\82µ
\82½
\8e\9e\82É
\91¼
\82Ì
\8d\80\96Ú
\82Ì
\83n
\83C
\83h
\82È
\82Ç
\82ð
\8ds
\82È
\82¤
\8e\96\82ª */
\r
1398 /*
\82 \82é
\82Ì
\82Å
\81A
\82»
\82Ì
\82½
\82ß
\82É WM_COMMAND
\82ð
\91\97\82é */
\r
1399 SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(Buttons->ButID, 0), 0);
\r
1406 SendDlgItemMessage(hDlg, Def, BM_SETCHECK, 1, 0);
\r
1407 SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(Def, 0), 0);
\r
1413 /*-----
\83`
\83F
\83b
\83N
\82³
\82ê
\82Ä
\82¢
\82é
\83{
\83^
\83\93\82É
\8aÖ
\98A
\95t
\82¯
\82ç
\82ê
\82½
\92l
\82ð
\95Ô
\82· ----------------------
\r
1416 * HWND hDlg :
\83_
\83C
\83A
\83\8d\83O
\83{
\83b
\83N
\83X
\82Ì
\83E
\83C
\83\93\83h
\83E
\83n
\83\93\83h
\83\8b\r
1417 * const RADIOBUTTON *Buttons :
\83\89\83W
\83I
\83{
\83^
\83\93\82Æ
\92l
\82Ì
\8aÖ
\98A
\95t
\82¯
\83e
\81[
\83u
\83\8b\r
1418 * int Num :
\83{
\83^
\83\93\82Ì
\90\94\r
1424 *
\82Ç
\82Ì
\83{
\83^
\83\93\82à
\83`
\83F
\83b
\83N
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\8e\9e\82Í
\81A
\83e
\81[
\83u
\83\8b\82Ì
\8dÅ
\8f\89\82É
\93o
\98^
\82³
\82ê
\82Ä
\82¢
\82é
\83{
\r
1425 *
\83^
\83\93\82Ì
\92l
\82ð
\95Ô
\82·
\r
1426 *----------------------------------------------------------------------------*/
\r
1428 int AskRadioButtonValue(HWND hDlg, const RADIOBUTTON *Buttons, int Num)
\r
1433 Ret = Buttons->Value;
\r
1434 for(i = 0; i < Num; i++)
\r
1436 if(SendDlgItemMessage(hDlg, Buttons->ButID, BM_GETCHECK, 0, 0) == 1)
\r
1438 Ret = Buttons->Value;
\r
1447 /*-----
\82P
\82U
\90i
\95¶
\8e\9a\97ñ
\82ð
\90\94\92l
\82É
\95Ï
\8a· ----------------------------------------------
\r
1450 * char *Str :
\95¶
\8e\9a\97ñ
\r
1454 *----------------------------------------------------------------------------*/
\r
1456 int xtoi(char *Str)
\r
1461 while(*Str != NUL)
\r
1464 if((*Str >= '0') && (*Str <= '9'))
\r
1465 Ret += *Str - '0';
\r
1466 else if((*Str >= 'A') && (*Str <= 'F'))
\r
1467 Ret += *Str - 'A' + 10;
\r
1468 else if((*Str >= 'a') && (*Str <= 'f'))
\r
1469 Ret += *Str - 'a' + 10;
\r
1479 /*-----
\83t
\83@
\83C
\83\8b\82ª
\93Ç
\82Ý
\8eæ
\82è
\89Â
\94\
\82©
\82Ç
\82¤
\82©
\82ð
\95Ô
\82· ----------------------------------
\r
1482 * char *Fname :
\83t
\83@
\83C
\83\8b\96¼
\r
1485 * int
\83X
\83e
\81[
\83^
\83X
\r
1487 *----------------------------------------------------------------------------*/
\r
1489 int CheckFileReadable(char *Fname)
\r
1492 HANDLE iFileHandle;
\r
1493 SECURITY_ATTRIBUTES Sec;
\r
1497 Sec.nLength = sizeof(SECURITY_ATTRIBUTES);
\r
1498 Sec.lpSecurityDescriptor = NULL;
\r
1499 Sec.bInheritHandle = FALSE;
\r
1501 if((iFileHandle = CreateFile(Fname, GENERIC_READ,
\r
1502 FILE_SHARE_READ|FILE_SHARE_WRITE, &Sec, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE)
\r
1505 CloseHandle(iFileHandle);
\r
1514 int max1(int n, int m)
\r
1524 int min1(int n, int m)
\r
1533 void ExcEndianDWORD(DWORD *x)
\r
1540 *(Pos + 0) = *(Pos + 3);
\r
1543 *(Pos + 1) = *(Pos + 2);
\r
1551 /*----- int
\92l
\82Ì
\93ü
\82ê
\91Ö
\82¦ -------------------------------------------------------
\r
1554 * int *Num1 :
\90\94\92l
\82P
\r
1555 * int *Num2 :
\90\94\92l
\82Q
\r
1559 *----------------------------------------------------------------------------*/
\r
1561 void SwapInt(int *Num1, int *Num2)
\r
1572 /*-----
\8ew
\92è
\82³
\82ê
\82½
\83t
\83H
\83\8b\83_
\82ª
\82 \82é
\82©
\82Ç
\82¤
\82©
\83`
\83F
\83b
\83N -------------------------------
\r
1575 * char *Path :
\83p
\83X
\r
1578 * int
\83X
\83e
\81[
\83^
\83X (YES/NO)
\r
1579 *----------------------------------------------------------------------------*/
\r
1581 int IsFolderExist(char *Path)
\r
1584 char Tmp[FMAX_PATH+1];
\r
1588 if(strlen(Path) > 0)
\r
1590 strcpy(Tmp, Path);
\r
1591 if(_mbscmp(Tmp+1, ":\\") != 0)
\r
1592 RemoveYenTail(Tmp);
\r
1594 Attr = GetFileAttributes(Tmp);
\r
1595 if((Attr == 0xFFFFFFFF) || ((Attr & FILE_ATTRIBUTE_DIRECTORY) == 0))
\r
1602 /*-----
\83e
\81[
\83u
\83\8b\82É
\82µ
\82½
\82ª
\82Á
\82Ä
\90\94\92l
\82ð
\93o
\98^ -----------------------------------------
\r
1605 * int x :
\90\94\92l
\r
1606 * int Dir :
\95Ï
\8a·
\95û
\8cü
\r
1607 * INTCONVTBL *Tbl :
\83e
\81[
\83u
\83\8b\r
1608 * int Num :
\83e
\81[
\83u
\83\8b\82Ì
\90\94\92l
\82Ì
\90\94\r
1612 *----------------------------------------------------------------------------*/
\r
1614 int ConvertNum(int x, int Dir, const INTCONVTBL *Tbl, int Num)
\r
1620 for(i = 0; i < Num; i++)
\r
1622 if((Dir == 0) && (Tbl->Num1 == x))
\r
1627 else if((Dir == 1) && (Tbl->Num2 == x))
\r
1642 /*-----
\83t
\83@
\83C
\83\8b\82ð
\83S
\83~
\94 \82É
\8dí
\8f\9c ------------------------------------------------
\r
1645 * char *Path :
\83t
\83@
\83C
\83\8b\96¼
\r
1648 * int
\83X
\83e
\81[
\83^
\83X (0=
\90³
\8fí
\8fI
\97¹)
\r
1649 *----------------------------------------------------------------------------*/
\r
1651 int MoveFileToTrashCan(char *Path)
\r
1653 SHFILEOPSTRUCT FileOp;
\r
1654 char Tmp[FMAX_PATH+2];
\r
1656 memset(Tmp, 0, FMAX_PATH+2);
\r
1657 strcpy(Tmp, Path);
\r
1658 FileOp.hwnd = NULL;
\r
1659 FileOp.wFunc = FO_DELETE;
\r
1660 FileOp.pFrom = Tmp;
\r
1662 FileOp.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_ALLOWUNDO;
\r
1663 FileOp.lpszProgressTitle = "";
\r
1664 return(SHFileOperation(&FileOp));
\r
1670 LONGLONG MakeLongLong(DWORD High, DWORD Low)
\r
1675 x1 = (LONGLONG)Low;
\r
1676 y1 = (LONGLONG)High;
\r
1677 z = x1 | (y1 << 32);
\r
1682 char *MakeNumString(LONGLONG Num, char *Buf, BOOL Comma)
\r
1693 *Pos++ = (char)(Num % 10) + '0';
\r
1695 if((Comma == TRUE) && ((i % 3) == 0) && (Num != 0))
\r