svnno****@sourc*****
svnno****@sourc*****
2014年 7月 29日 (火) 23:07:31 JST
Revision: 5643 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5643 Author: yutakapon Date: 2014-07-29 23:07:28 +0900 (Tue, 29 Jul 2014) Log Message: ----------- チケット #34056 SCPダウンロードすると応答なしになる チケット #32992 SSH SCPでファイル転送中、画面を最小化すると転送処理が強制終了される チケット #33954 タスクスケジューラからscprecvが動作しない。 上記問題に対処するため、SCP処理のキャンセル方法を変更した。 Ticket Links: ------------ http://sourceforge.jp/projects/ttssh2/tracker/detail/34056 http://sourceforge.jp/projects/ttssh2/tracker/detail/32992 http://sourceforge.jp/projects/ttssh2/tracker/detail/33954 Modified Paths: -------------- trunk/ttssh2/ttxssh/ssh.c -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2014-07-13 09:11:04 UTC (rev 5642) +++ trunk/ttssh2/ttxssh/ssh.c 2014-07-29 14:07:28 UTC (rev 5643) @@ -7615,6 +7615,7 @@ #define WM_SENDING_FILE (WM_USER + 1) #define WM_CHANNEL_CLOSE (WM_USER + 2) +#define WM_GET_CLOSED_STATUS (WM_USER + 3) typedef struct scp_dlg_parm { Channel_t *c; @@ -7625,9 +7626,11 @@ static LRESULT CALLBACK ssh_scp_dlg_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { + static int closed = 0; switch (msg) { case WM_INITDIALOG: + closed = 0; return FALSE; // SCP\x83t\x83@\x83C\x83\x8B\x8E\xF3\x90M(remote-to-local)\x8E\x9E\x81A\x8Eg\x97p\x82\xB7\x82\xE9\x81B @@ -7666,6 +7669,7 @@ //EndDialog(hWnd, 0); //DestroyWindow(hWnd); ShowWindow(hWnd, SW_HIDE); + closed = 1; return TRUE; default: return FALSE; @@ -7679,6 +7683,16 @@ case WM_DESTROY: return TRUE; + case WM_GET_CLOSED_STATUS: + { + int *flag = (int *)wp; + + + + *flag = closed; + } + return TRUE; + default: return FALSE; } @@ -7687,22 +7701,13 @@ static int is_canceled_window(HWND hd) { - // \x8Dŏ\xAC\x89\xBB\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x82Ƃ\xAB\x82́A\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82ł͂Ȃ\xA2\x81B - if (IsIconic(hd)) - return 0; - // \x83E\x83B\x83\x93\x83h\x83E\x82\xAA\x8C\xA9\x82\xA6\x82Ȃ\xAD\x82Ȃ\xC1\x82\xBD\x82\xE7\x81A\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82\xB3\x82ꂽ\x81B - if (IsWindow(hd) == 0) - return 1; - // \x83E\x83B\x83\x93\x83h\x83E\x82\xAA\x94\xF1\x95\\x8E\xA6\x82̏ꍇ\x81A\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82\xB3\x82ꂽ\x89\\x90\xAB\x82\xAA\x82\xA0\x82\xE9\x81B - if (IsWindowVisible(hd) == 0) { - HWND p = GetParent(hd); - // \x90e\x83E\x83B\x83\x93\x83h\x83E\x82\xAA\x8Dŏ\xAC\x89\xBB\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x82Ƃ\xAB\x82́A\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82ł͂Ȃ\xA2\x81B - if (IsIconic(p)) - return 0; + int closed = 0; + SendMessage(hd, WM_GET_CLOSED_STATUS, (WPARAM)&closed, 0); + if (closed) return 1; - } - return 0; + else + return 0; } void InitDlgProgress(HWND HDlg, int id_Progress, int *CurProgStat) {