svnno****@sourc*****
svnno****@sourc*****
2013年 4月 20日 (土) 19:05:27 JST
Revision: 5208 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5208 Author: maya Date: 2013-04-20 19:05:27 +0900 (Sat, 20 Apr 2013) Log Message: ----------- iphlpapi.dll, user32.dll を遅延読み込みに変更 GetMonitorInfo が Windows95 にないため r5161 の修正を再修正 Revision Links: -------------- http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5161 Modified Paths: -------------- trunk/teraterm/ttpmacro/ttl.c trunk/teraterm/ttpmacro/ttpmacro.vcproj -------------- next part -------------- Modified: trunk/teraterm/ttpmacro/ttl.c =================================================================== --- trunk/teraterm/ttpmacro/ttl.c 2013-04-19 15:41:37 UTC (rev 5207) +++ trunk/teraterm/ttpmacro/ttl.c 2013-04-20 10:05:27 UTC (rev 5208) @@ -39,6 +39,7 @@ #include <winsock2.h> #include <ws2tcpip.h> #include <iptypes.h> +#include <iphlpapi.h> #define TTERMCOMMAND "TTERMPRO /D=" #define CYGTERMCOMMAND "cyglaunch -o /D=" @@ -2330,23 +2331,16 @@ } -typedef DWORD (__stdcall *pGetAdaptersAddresses)(ULONG Family, - DWORD Flags, - PVOID Reserved, - PIP_ADAPTER_ADDRESSES pAdapterAddresses, - PULONG pOutBufLen); - WORD TTLGetIPv6Addr() { WORD Err; TVarId VarId, VarId2, id; int num, result, arysize; - DWORD ret; - IP_ADAPTER_ADDRESSES addr[256];/* XXX */ - ULONG len = sizeof(addr); + DWORD ret; + IP_ADAPTER_ADDRESSES addr[256];/* XXX */ + ULONG len = sizeof(addr); char ipv6str[64]; - HMODULE h; - pGetAdaptersAddresses pfunc; + OSVERSIONINFO osvi; Err = 0; GetStrAryVar(&VarId,&Err); @@ -2355,22 +2349,22 @@ Err = ErrSyntax; if (Err!=0) return Err; - // \x8E\xA9\x95\xAA\x8E\xA9\x90g\x82̑SIPv6\x83A\x83h\x83\x8C\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B - if ((h = LoadLibrary("iphlpapi.dll")) == NULL) { + // IPv6 \x82\xAA\x83T\x83|\x81[\x83g\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2 OS \x82͂\xB1\x82\xB1\x82\xC5 return + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); + if ( osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS || + (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion == 4) ) { + // 9x, NT4.0 \x82\xCD IPv6 \x94\xF1\x91Ή\x9E SetResult(-1); SetIntVal(VarId2, 0); return Err; } - if ((pfunc = (pGetAdaptersAddresses)GetProcAddress(h, "GetAdaptersAddresses")) == NULL) { - FreeLibrary(h); - SetResult(-1); - SetIntVal(VarId2, 0); - return Err; - } + + // \x8E\xA9\x95\xAA\x8E\xA9\x90g\x82̑SIPv6\x83A\x83h\x83\x8C\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B arysize = GetStrAryVarSize(VarId); num = 0; result = 1; - ret = pfunc(AF_INET6, 0, NULL, addr, &len); + ret = GetAdaptersAddresses(AF_INET6, 0, NULL, addr, &len); if (ret == ERROR_SUCCESS) { IP_ADAPTER_ADDRESSES *padap = &addr[0]; @@ -2406,7 +2400,6 @@ SetResult(result); SetIntVal(VarId2, num); - FreeLibrary(h); return Err; } Modified: trunk/teraterm/ttpmacro/ttpmacro.vcproj =================================================================== --- trunk/teraterm/ttpmacro/ttpmacro.vcproj 2013-04-19 15:41:37 UTC (rev 5207) +++ trunk/teraterm/ttpmacro/ttpmacro.vcproj 2013-04-20 10:05:27 UTC (rev 5208) @@ -79,11 +79,12 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="onig_s.lib Version.lib" + AdditionalDependencies="onig_s.lib Version.lib iphlpapi.lib" OutputFile="..\Release/ttpmacro.exe" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="..\..\libs\oniguruma;..\release" + DelayLoadDLLs="iphlpapi.dll;user32.dll" GenerateDebugInformation="true" ProgramDatabaseFile="..\Release/ttpmacro.pdb" SubSystem="2" @@ -176,11 +177,12 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="onig_sd.lib Version.lib" + AdditionalDependencies="onig_sd.lib Version.lib iphlpapi.lib" OutputFile="..\Debug/ttpmacro.exe" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="..\..\libs\oniguruma;..\debug" + DelayLoadDLLs="iphlpapi.dll;user32.dll" GenerateDebugInformation="true" ProgramDatabaseFile="..\Debug/ttpmacro.pdb" SubSystem="2"