📄 w2k_wiz.c
字号:
}
// -----------------------------------------------------------------
BOOL WINAPI FileEscape (HANDLE hf,
BYTE bEscape)
{
BYTE abData [] = "% ";
PBYTE pbData = abData;
switch (abData [1] = bEscape)
{
case 'n': pbData = gabName; break;
case 'N': pbData = gabNameU; break;
case 's': pbData = gabSettings; break;
case 'd': pbData = gabDay; break;
case 'm': pbData = gabMonth; break;
case 'y': pbData = gabYear; break;
case 't': pbData = gabText; break;
case 'c': pbData = gabCompany; break;
case 'a': pbData = gabAuthor; break;
case 'e': pbData = gabEmail; break;
case 'p': pbData = gabPrefix; break;
case 'i': pbData = gabInclude; break;
case 'l': pbData = gabFree; break;
case 'L': pbData = gabChecked; break;
}
return FileWrite (hf, pbData, MAXDWORD);
}
// -----------------------------------------------------------------
BOOL WINAPI FileCopy (PTBYTE ptSource,
PTBYTE ptTarget,
BOOL fCustomize)
{
PBYTE pbData;
DWORD dData, i, n;
HANDLE hf;
BOOL fOk = FALSE;
printf (gatLoading, ptSource);
pbData = FileLoad (ptSource, &dData);
printf (gatLine, (pbData != NULL ? gatOk : gatError));
if (pbData != NULL)
{
printf (gatWriting, ptTarget);
if ((hf = FileNew (ptTarget)) != INVALID_HANDLE_VALUE)
{
if (fCustomize)
{
for (n = i = 0; i < dData; i++)
{
if ((pbData [i] == '%') && (i+1 < dData))
{
if ((!FileWrite (hf, pbData+n, (i++)-n)) ||
(!FileEscape (hf, pbData [i])))
break;
n = i+1;
}
}
fOk = (i == dData) && FileWrite (hf, pbData+n, i-n);
}
else
{
fOk = FileWrite (hf, pbData, dData);
}
FileClose (hf);
}
printf (gatLine, (fOk ? gatOk : gatError));
FileUnload (pbData);
}
return fOk;
}
// -----------------------------------------------------------------
BOOL WINAPI FileCopyEx (PTBYTE ptFolder,
PTBYTE ptSource,
PTBYTE ptTarget,
BOOL fCustomize)
{
TBYTE atSource [MAX_PATH];
TBYTE atTarget [MAX_PATH];
DWORD i, j, n;
BOOL fOk = FALSE;
if ((ptFolder != NULL) &&
(ptSource != NULL) && (ptTarget != NULL) &&
(i = GetModuleFileName (NULL, atSource, MAX_PATH)))
{
while (i && (atSource [i-1] != '\\')
&& (atSource [i-1] != ':' )
&& (atSource [--i] != '.' ));
if ((atSource [i] == '.') &&
(i + lstrlen (ptSource) < MAX_PATH))
{
lstrcpy (atSource+i, ptSource);
if (n = lstrlen (ptFolder))
{
i = j = n-1;
while (i && (ptFolder [i-1] != '\\')
&& (ptFolder [i-1] != ':' )) i--;
if ((j -= i) &&
(n+j + lstrlen (ptTarget) < MAX_PATH))
{
lstrcpy (atTarget, ptFolder);
lstrcpyn (atTarget+n, ptFolder+i, j+1);
lstrcpy (atTarget+n+j, ptTarget);
fOk = FileCopy (atSource, atTarget, fCustomize);
}
}
}
}
return fOk;
}
// =================================================================
// SETTINGS MANAGEMENT
// =================================================================
DWORD WINAPI SettingsFolder (PTBYTE ptRoot,
PTBYTE ptFolder,
PTBYTE ptBuffer,
DWORD dBuffer)
{
TBYTE atPath [MAX_PATH];
PTBYTE ptFile;
DWORD i, j, k;
DWORD n = 0;
if ((ptBuffer != NULL) && dBuffer)
{
i = 0;
if ((ptFolder == NULL) || (!ptFolder [i]))
{
lstrcpyn (atPath, T("."), MAX_PATH);
}
else if (ptFolder [i] != '*')
{
lstrcpyn (atPath, ptFolder, MAX_PATH);
}
else
{
if (ptFolder [++i] &&
((ptFolder [i] != '\\') || ptFolder [++i]) &&
(j = RegistryRead (ptRoot, atPath, MAX_PATH)) &&
((atPath [j-1] == '\\') || (++j < MAX_PATH)) &&
(j + lstrlen (ptFolder+i) < MAX_PATH))
{
atPath [j-1] = '\\';
lstrcpy (atPath+j, ptFolder+i);
}
else
{
atPath [0] = 0;
}
}
if (atPath [0])
{
n = GetFullPathName (atPath, dBuffer, ptBuffer,
&ptFile);
}
if (n && (n < MAX_PATH) &&
((ptBuffer [n-1] == '\\') || (++n < MAX_PATH)))
{
ptBuffer [n-1] = '\\';
}
else
{
n = 0;
}
i = j = (n ? n-1 : 0);
while (i && (ptBuffer [i-1] != '\\')
&& (ptBuffer [i-1] != ':' )) i--;
if ((j-i) && (j-i < MAX_PATH))
{
for (k = 0; k < j-i; k++)
{
if (ptBuffer [i+k] < 0x0100)
{
gabName [k] = (BYTE) ptBuffer [i+k];
}
else
{
sprintfA (gabName+k, "%C", ptBuffer [i+k]);
}
}
gabName [k] = 0;
lstrcpyA (gabNameU, gabName);
CharUpperA (gabNameU);
}
ptBuffer [n] = 0;
}
return n;
}
// -----------------------------------------------------------------
DWORD WINAPI SettingsValue (PBYTE pbKey,
PBYTE pbValue)
{
DWORD i;
DWORD n = 0;
if (pbValue != NULL)
{
if (pbKey != NULL)
{
GetPrivateProfileStringA ("Settings", pbKey, "",
pbValue, N_VALUE,
gabSettings);
for (i = 0; pbValue [i] == ' '; i++);
while (pbValue [i]) pbValue [n++] = pbValue [i++];
while (n && (pbValue [n-1] == ' ')) n--;
}
pbValue [n] = 0;
}
return n;
}
// -----------------------------------------------------------------
DWORD WINAPI SettingsLoad (PBYTE pbExtension,
PTBYTE ptFolder,
PTBYTE ptBuffer,
DWORD dBuffer)
{
BYTE abRoot [N_VALUE];
TBYTE atRoot [N_VALUE];
SYSTEMTIME st;
DWORD i;
DWORD n = 0;
if ((ptBuffer != NULL) && dBuffer)
{
if ((pbExtension != NULL) &&
(i = GetModuleFileNameA (NULL, gabSettings, MAX_PATH)))
{
while (i && (gabSettings [i-1] != '\\')
&& (gabSettings [i-1] != ':' )
&& (gabSettings [--i] != '.' ));
if ((gabSettings [i] == '.') &&
(i + lstrlenA (pbExtension) < MAX_PATH))
{
lstrcpyA (gabSettings+i, pbExtension);
GetLocalTime (&st);
sprintfA (gabDay, "%02hu", st.wDay );
sprintfA (gabMonth, "%02hu", st.wMonth);
sprintfA (gabYear, "%04hu", st.wYear );
if (SettingsValue ("Text", gabText ) &&
SettingsValue ("Company", gabCompany) &&
SettingsValue ("Author", gabAuthor ) &&
SettingsValue ("Email", gabEmail ) &&
SettingsValue ("Prefix", gabPrefix ) &&
SettingsValue ("Include", gabInclude) &&
SettingsValue ("Free", gabFree ) &&
SettingsValue ("Checked", gabChecked) &&
SettingsValue ("Root", abRoot ))
{
for (i = 0; i < N_VALUE; i++)
{
if (!(atRoot [i] = abRoot [i])) break;
}
n = SettingsFolder (atRoot, ptFolder,
ptBuffer, dBuffer);
}
}
}
ptBuffer [n] = 0;
}
return n;
}
// =================================================================
// MAIN PROGRAM
// =================================================================
DWORD Main (DWORD argc, PTBYTE *argv, PTBYTE *argp)
{
TBYTE atFolder [MAX_PATH];
printf (atAbout);
if (argc < 2)
{
printf (atUsage, T("[*]<folder>"));
}
else
{
if (SettingsLoad (".ini", argv [1], atFolder, MAX_PATH))
{
printf (gatTarget, atFolder);
FileCopyEx (atFolder, T(".tc"), T(".c"), TRUE);
FileCopyEx (atFolder, T(".td"), T(".def"), TRUE);
FileCopyEx (atFolder, T(".th"), T(".h"), TRUE);
FileCopyEx (atFolder, T(".ti"), T(".ico"), FALSE);
FileCopyEx (atFolder, T(".tp"), T(".dsp"), TRUE);
FileCopyEx (atFolder, T(".tr"), T(".rc"), TRUE);
FileCopyEx (atFolder, T(".tw"), T(".dsw"), TRUE);
}
else
{
printf (gatAborted);
}
}
return 0;
}
// =================================================================
// END OF PROGRAM
// =================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -