OSDN Git Service

Add support displaying a progress bar on the taskbar (Windows 7 or later only).
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sun, 26 Jan 2014 06:18:51 +0000 (15:18 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sun, 26 Jan 2014 06:18:51 +0000 (15:18 +0900)
Change to require Windows SDK 7.0 or later to build.
Fix project files.
Modify documents.

13 files changed:
FFFTP.vc80ee.vcproj
FFFTP.vc90.vcproj
FFFTP.vcproj
FFFTP_Eng_Release/FFFTP.exe
FFFTP_English.vc80ee.vcproj
FFFTP_English.vc90.vcproj
FFFTP_English.vcproj
Release/FFFTP.exe
common.h
getput.c
howtobuild.htm
main.c
socket.c

index 4e67f65..ce74271 100644 (file)
@@ -74,7 +74,7 @@
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
index fca4d95..fb8628f 100644 (file)
@@ -75,7 +75,7 @@
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
index cecbb7a..66b9c41 100644 (file)
@@ -74,7 +74,7 @@
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
index af3d605..6331d9f 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index fca3abf..e1a141d 100644 (file)
@@ -75,7 +75,7 @@
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
index 84cbf0e..c4eb34e 100644 (file)
@@ -76,7 +76,7 @@
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
index 83d4e60..bd83203 100644 (file)
@@ -75,7 +75,7 @@
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Debug_64\FFFTP.exe"\r
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib winmm.lib wintrust.lib ws2_32.lib"\r
+                               AdditionalDependencies="comctl32.lib crypt32.lib htmlhelp.lib imagehlp.lib rasapi32.lib sfc.lib uuid.lib winmm.lib wintrust.lib ws2_32.lib"\r
                                OutputFile=".\FFFTP_Eng_Release_64\FFFTP.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
index 71e7c93..f8ad9c4 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 092df06..375ba63 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1373,6 +1373,11 @@ int AskPortableVersion(void);
 // 全設定暗号化対応\r
 int Restart();\r
 void RestartAndTerminate();\r
+// タスクバー進捗表示\r
+int LoadTaskbarList3();\r
+void FreeTaskbarList3();\r
+int IsTaskbarList3Loaded();\r
+void UpdateTaskbarProgress();\r
 \r
 /*===== filelist.c =====*/\r
 \r
@@ -1719,6 +1724,10 @@ void GoForwardTransWindow(void);
 void InitTransCurDir(void);\r
 int DoDownload(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork);\r
 int CheckPathViolation(TRANSPACKET *packet);\r
+// タスクバー進捗表示\r
+LONGLONG AskTransferSizeLeft(void);\r
+LONGLONG AskTransferSizeTotal(void);\r
+int AskTransferErrorDisplay(void);\r
 \r
 /*===== codecnv.c =====*/\r
 \r
index f12290a..39a7194 100644 (file)
--- a/getput.c
+++ b/getput.c
@@ -170,6 +170,10 @@ static int WaitForMainThread = NO;
 // 再転送対応\r
 static int TransferErrorMode = EXIST_OVW;\r
 static int TransferErrorNotify = NO;\r
+// タスクバー進捗表示\r
+static LONGLONG TransferSizeLeft = 0;\r
+static LONGLONG TransferSizeTotal = 0;\r
+static int TransferErrorDisplay = 0;\r
 \r
 /*===== 外部参照 =====*/\r
 \r
@@ -419,6 +423,9 @@ void AddTransFileList(TRANSPACKET *Pkt)
                   (strncmp(Pkt->Cmd, "STOR", 4) == 0))\r
                {\r
                        TransFiles++;\r
+                       // タスクバー進捗表示\r
+                       TransferSizeLeft += Pkt->Size;\r
+                       TransferSizeTotal += Pkt->Size;\r
                        PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0);\r
                }\r
        }\r
@@ -494,6 +501,9 @@ void AppendTransFileList(TRANSPACKET *Pkt)
                   (strncmp(Pkt->Cmd, "STOR", 4) == 0))\r
                {\r
                        TransFiles++;\r
+                       // タスクバー進捗表示\r
+                       TransferSizeLeft += Pkt->Size;\r
+                       TransferSizeTotal += Pkt->Size;\r
                        PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0);\r
                }\r
                Pkt = Pkt->Next;\r
@@ -590,6 +600,9 @@ static void EraseTransFileList(void)
        // 同時接続対応\r
        NextTransPacketBase = NotDel;\r
        TransFiles = 0;\r
+       // タスクバー進捗表示\r
+       TransferSizeLeft = 0;\r
+       TransferSizeTotal = 0;\r
        PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0);\r
        ReleaseMutex(hListAccMutex);\r
        // 同時接続対応\r
@@ -1192,6 +1205,13 @@ static ULONG WINAPI TransferThread(void *Dummy)
 //                                             TransFiles--;\r
                                                if(TransFiles > 0)\r
                                                        TransFiles--;\r
+                                               // タスクバー進捗表示\r
+                                               if(TransferSizeLeft > 0)\r
+                                                       TransferSizeLeft -= Pos->Size;\r
+                                               if(TransferSizeLeft < 0)\r
+                                                       TransferSizeLeft = 0;\r
+                                               if(TransFiles == 0)\r
+                                                       TransferSizeTotal = 0;\r
                                                PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0);\r
                                        }\r
 //                                     Pos = TransPacketBase;\r
@@ -2406,6 +2426,8 @@ static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode)
                                {\r
                                        if(strncmp(Pkt->Cmd, "RETR", 4) == 0 || strncmp(Pkt->Cmd, "STOR", 4) == 0)\r
                                        {\r
+                                               // タスクバー進捗表示\r
+                                               TransferErrorDisplay++;\r
                                                if(TransferErrorNotify == YES && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Pkt) == NO)\r
                                                        ClearAll = YES;\r
                                                else\r
@@ -2413,6 +2435,8 @@ static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode)
                                                        Pkt->Mode = TransferErrorMode;\r
                                                        AddTransFileList(Pkt);\r
                                                }\r
+                                               // タスクバー進捗表示\r
+                                               TransferErrorDisplay--;\r
                                        }\r
                                }\r
                        }\r
@@ -3716,6 +3740,8 @@ static void DispUploadFinishMsg(TRANSPACKET *Pkt, int iRetCode)
                                {\r
                                        if(strncmp(Pkt->Cmd, "RETR", 4) == 0 || strncmp(Pkt->Cmd, "STOR", 4) == 0)\r
                                        {\r
+                                               // タスクバー進捗表示\r
+                                               TransferErrorDisplay++;\r
                                                if(TransferErrorNotify == YES && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt) == NO)\r
                                                        ClearAll = YES;\r
                                                else\r
@@ -3723,6 +3749,8 @@ static void DispUploadFinishMsg(TRANSPACKET *Pkt, int iRetCode)
                                                        Pkt->Mode = TransferErrorMode;\r
                                                        AddTransFileList(Pkt);\r
                                                }\r
+                                               // タスクバー進捗表示\r
+                                               TransferErrorDisplay--;\r
                                        }\r
                                }\r
                        }\r
@@ -4417,3 +4445,20 @@ static char* GetErrMsg()
        ReleaseMutex(hErrMsgMutex);\r
        return r;\r
 }\r
+\r
+// タスクバー進捗表示\r
+LONGLONG AskTransferSizeLeft(void)\r
+{\r
+       return(TransferSizeLeft);\r
+}\r
+\r
+LONGLONG AskTransferSizeTotal(void)\r
+{\r
+       return(TransferSizeTotal);\r
+}\r
+\r
+int AskTransferErrorDisplay(void)\r
+{\r
+       return(TransferErrorDisplay);\r
+}\r
+\r
index a2c76ba..959eb85 100644 (file)
@@ -8,6 +8,18 @@
 <body>\r
 SourceForge.JP版<span style="font-weight:bold"><span style="color:yellow;vertical-align:super">F</span><span style="color:green">F</span><span style="color:red;vertical-align:sub">F</span><span style="color:green">TP</span></span>のビルドおよび開発の手順について<br>\r
 <ol>\r
+       <li>ビルドの準備<br>\r
+       FFFTPをビルドするには以下のものをご用意ください。\r
+       <ol>\r
+               <li>次のいずれかのバージョンのVisual C++\r
+               <ol>\r
+                       <li>Visual C++ 2005\r
+                       <li>Visual C++ 2005 Express Edition\r
+                       <li>Visual C++ 2008\r
+                       <li>Visual C++ 2010以降(各自でプロジェクトファイルを変換してください)\r
+               </ol>\r
+               <li>Windows SDK 7.0以降(Visual C++ 2010以降には標準で付属)\r
+       </ol>\r
        <li>ビルドの手順<br>\r
        FFFTPをビルドするには以下の手順に従ってください。\r
        <ol>\r
diff --git a/main.c b/main.c
index e89439d..db8f722 100644 (file)
--- a/main.c
+++ b/main.c
@@ -43,6 +43,8 @@
 #include <stdarg.h>\r
 // IPv6対応\r
 //#include <winsock.h>\r
+// タスクバー進捗表示\r
+#include <shobjidl.h>\r
 \r
 #include "common.h"\r
 #include "resource.h"\r
@@ -145,6 +147,8 @@ static char PortableFilePath[FMAX_PATH+1];
 static int PortableVersion;\r
 // ローカル側自動更新\r
 HANDLE ChangeNotification = INVALID_HANDLE_VALUE;\r
+// タスクバー進捗表示\r
+static ITaskbarList3* pTaskbarList3;\r
 \r
 \r
 /*===== グローバルなワーク =====*/\r
@@ -373,6 +377,8 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
        // UPnP対応\r
        CoInitialize(NULL);\r
        LoadUPnP();\r
+       // タスクバー進捗表示\r
+       LoadTaskbarList3();\r
 \r
        // UTF-8対応\r
        LoadUnicodeNormalizationDll();\r
@@ -422,6 +428,8 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
 #endif\r
        // SFTP対応\r
        FreePuTTY();\r
+       // タスクバー進捗表示\r
+       FreeTaskbarList3();\r
        // UPnP対応\r
        FreeUPnP();\r
        CoUninitialize();\r
@@ -977,12 +985,15 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
        switch (message)\r
        {\r
                // ローカル側自動更新\r
+               // タスクバー進捗表示\r
                case WM_CREATE :\r
                        SetTimer(hWnd, 1, 1000, NULL);\r
+                       SetTimer(hWnd, 2, 100, NULL);\r
                        break;\r
 \r
                // ローカル側自動更新\r
                // 自動切断対策\r
+               // タスクバー進捗表示\r
                case WM_TIMER :\r
                        switch(wParam)\r
                        {\r
@@ -1015,6 +1026,10 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                        LastDataConnectionTime = time(NULL);\r
                                }\r
                                break;\r
+                       case 2:\r
+                               if(IsTaskbarList3Loaded() == YES)\r
+                                       UpdateTaskbarProgress();\r
+                               break;\r
                        }\r
                        break;\r
 \r
@@ -1885,6 +1900,8 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                        KillTimer(hWnd, 1);\r
                        if(ChangeNotification != INVALID_HANDLE_VALUE)\r
                                FindCloseChangeNotification(ChangeNotification);\r
+                       // タスクバー進捗表示\r
+                       KillTimer(hWnd, 2);\r
 //                     WSACleanup();\r
 //                     DestroyWindow(hWndFtp);\r
                        PostQuitMessage(0);\r
@@ -3403,3 +3420,45 @@ void RestartAndTerminate()
        exit(1);\r
 }\r
 \r
+// タスクバー進捗表示\r
+int LoadTaskbarList3()\r
+{\r
+       int Sts;\r
+       Sts = FFFTP_FAIL;\r
+       if(CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_ALL, &IID_ITaskbarList3, (void**)&pTaskbarList3) == S_OK)\r
+       {\r
+               Sts = FFFTP_SUCCESS;\r
+       }\r
+       return Sts;\r
+}\r
+\r
+void FreeTaskbarList3()\r
+{\r
+       if(pTaskbarList3 != NULL)\r
+               pTaskbarList3->lpVtbl->Release(pTaskbarList3);\r
+       pTaskbarList3 = NULL;\r
+}\r
+\r
+int IsTaskbarList3Loaded()\r
+{\r
+       int Sts;\r
+       Sts = NO;\r
+       if(pTaskbarList3 != NULL)\r
+               Sts = YES;\r
+       return Sts;\r
+}\r
+\r
+void UpdateTaskbarProgress()\r
+{\r
+       if(AskTransferSizeTotal() > 0)\r
+       {\r
+               if(AskTransferErrorDisplay() > 0)\r
+                       pTaskbarList3->lpVtbl->SetProgressState(pTaskbarList3, GetMainHwnd(), TBPF_ERROR);\r
+               else\r
+                       pTaskbarList3->lpVtbl->SetProgressState(pTaskbarList3, GetMainHwnd(), TBPF_NORMAL);\r
+               pTaskbarList3->lpVtbl->SetProgressValue(pTaskbarList3, GetMainHwnd(), (ULONGLONG)(AskTransferSizeTotal() - AskTransferSizeLeft()), (ULONGLONG)AskTransferSizeTotal());\r
+       }\r
+       else\r
+               pTaskbarList3->lpVtbl->SetProgressState(pTaskbarList3, GetMainHwnd(), TBPF_NOPROGRESS);\r
+}\r
+\r
index 663120a..80f3889 100644 (file)
--- a/socket.c
+++ b/socket.c
@@ -1383,9 +1383,9 @@ void FreeUPnP()
 int IsUPnPLoaded()\r
 {\r
        int Sts;\r
-       Sts = FFFTP_FAIL;\r
+       Sts = NO;\r
        if(pUPnPNAT != NULL && pUPnPMap != NULL)\r
-               Sts = FFFTP_SUCCESS;\r
+               Sts = YES;\r
        return Sts;\r
 }\r
 \r