svnno****@sourc*****
svnno****@sourc*****
2017年 5月 27日 (土) 09:24:51 JST
Revision: 6749 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6749 Author: maya Date: 2017-05-27 09:24:51 +0900 (Sat, 27 May 2017) Log Message: ----------- FileDir の初期値をDownloads(XP以前はMy Documents)に変更 Modified Paths: -------------- trunk/teraterm/common/ttlib.c trunk/teraterm/common/ttlib.h trunk/teraterm/ttpcmn/ttpcmn.def trunk/teraterm/ttpset/ttset.c -------------- next part -------------- Modified: trunk/teraterm/common/ttlib.c =================================================================== --- trunk/teraterm/common/ttlib.c 2017-05-24 14:56:53 UTC (rev 6748) +++ trunk/teraterm/common/ttlib.c 2017-05-27 00:24:51 UTC (rev 6749) @@ -823,6 +823,37 @@ return v; } +void GetDownloadFolder(char *dest, int destlen) +{ + HMODULE hDll; + typedef GUID KNOWNFOLDERID; + typedef HRESULT(WINAPI *SHGETKNOWNFOLDERPATH)(KNOWNFOLDERID*, DWORD, HANDLE, PWSTR*); + // {374DE290-123F-4565-9164-39C4925E467B} + KNOWNFOLDERID FOLDERID_Downloads = { 0x374de290, 0x123f, 0x4565, 0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b }; + char download[MAX_PATH]; + + memset(download, 0, sizeof(download)); + if (hDll = LoadLibrary("shell32.dll")) { + SHGETKNOWNFOLDERPATH pSHGetKnownFolderPath = (SHGETKNOWNFOLDERPATH)GetProcAddress(hDll, "SHGetKnownFolderPath"); + if (pSHGetKnownFolderPath) { + PWSTR pBuffer = NULL; + pSHGetKnownFolderPath(&FOLDERID_Downloads, 0, NULL, &pBuffer); + WideCharToMultiByte(CP_ACP, 0, pBuffer, -1, download, sizeof(download), NULL, NULL); + } + FreeLibrary(hDll); + } + if (strlen(download) == 0) { + LPITEMIDLIST pidl; + if (SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl) == NOERROR) { + SHGetPathFromIDList(pidl, download); + CoTaskMemFree(pidl); + } + } + if (strlen(download) > 0) { + strncpy_s(dest, destlen, download, _TRUNCATE); + } +} + void WINAPI GetDefaultFName(char *home, char *file, char *dest, int destlen) { // My Documents \x82\xC9 file \x82\xAA\x82\xA0\x82\xE9\x8Fꍇ\x81A Modified: trunk/teraterm/common/ttlib.h =================================================================== --- trunk/teraterm/common/ttlib.h 2017-05-24 14:56:53 UTC (rev 6748) +++ trunk/teraterm/common/ttlib.h 2017-05-27 00:24:51 UTC (rev 6749) @@ -37,6 +37,7 @@ BOOL GetNthString(PCHAR Source, int Nth, int Size, PCHAR Dest); void GetNthNum(PCHAR Source, int Nth, int far *Num); int GetNthNum2(PCHAR Source, int Nth, int defval); +void GetDownloadFolder(char *dest, int destlen); void WINAPI GetDefaultFName(char *home, char *file, char *dest, int destlen); void GetDefaultSetupFName(char *home, char *dest, int destlen); void GetUILanguageFile(char *buf, int buflen); Modified: trunk/teraterm/ttpcmn/ttpcmn.def =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.def 2017-05-24 14:56:53 UTC (rev 6748) +++ trunk/teraterm/ttpcmn/ttpcmn.def 2017-05-27 00:24:51 UTC (rev 6749) @@ -83,3 +83,4 @@ HasGetAdaptersAddresses @72 HasDnsQuery @73 HasBalloonTipSupport @87 + GetDownloadFolder @88 Modified: trunk/teraterm/ttpset/ttset.c =================================================================== --- trunk/teraterm/ttpset/ttset.c 2017-05-24 14:56:53 UTC (rev 6748) +++ trunk/teraterm/ttpset/ttset.c 2017-05-27 00:24:51 UTC (rev 6749) @@ -1102,11 +1102,11 @@ GetPrivateProfileString(Section, "FileDir", "", ts->FileDir, sizeof(ts->FileDir), FName); if (strlen(ts->FileDir) == 0) - strncpy_s(ts->FileDir, sizeof(ts->FileDir), ts->HomeDir, _TRUNCATE); + GetDownloadFolder(ts->FileDir, sizeof(ts->FileDir)); else { _getcwd(Temp, sizeof(Temp)); if (_chdir(ts->FileDir) != 0) - strncpy_s(ts->FileDir, sizeof(ts->FileDir), ts->HomeDir, _TRUNCATE); + GetDownloadFolder(ts->FileDir, sizeof(ts->FileDir)); _chdir(Temp); }