OSDN Git Service

Modify resources for 1.98.
[ffftp/ffftp.git] / ras.c
1 /*=============================================================================\r
2 *\r
3 *                                                                       \82q\82`\82r\8aÖ\8cW\r
4 *\r
5 ===============================================================================\r
6 / Copyright (C) 1997-2007 Sota. All rights reserved.\r
7 /\r
8 / Redistribution and use in source and binary forms, with or without \r
9 / modification, are permitted provided that the following conditions \r
10 / are met:\r
11 /\r
12 /  1. Redistributions of source code must retain the above copyright \r
13 /     notice, this list of conditions and the following disclaimer.\r
14 /  2. Redistributions in binary form must reproduce the above copyright \r
15 /     notice, this list of conditions and the following disclaimer in the \r
16 /     documentation and/or other materials provided with the distribution.\r
17 /\r
18 / THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR \r
19 / IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \r
20 / OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \r
21 / IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, \r
22 / INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, \r
23 / BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF \r
24 / USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON \r
25 / ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
26 / (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF \r
27 / THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
28 /============================================================================*/\r
29 \r
30 #define  STRICT\r
31 \r
32 #define WINVER 0x400\r
33 \r
34 #include <windows.h>\r
35 #include <stdio.h>\r
36 #include <stdlib.h>\r
37 #include <string.h>\r
38 #include <mbstring.h>\r
39 #include <malloc.h>\r
40 #include <windowsx.h>\r
41 #include <winsock.h>\r
42 #include <ras.h>\r
43 #include <rasdlg.h>\r
44 #include <raserror.h>\r
45 \r
46 #include "common.h"\r
47 #include "resource.h"\r
48 \r
49 \r
50 typedef DWORD (WINAPI*FUNC_RASENUMCONNECTIONS) (LPRASCONN, LPDWORD, LPDWORD);\r
51 typedef DWORD (WINAPI*FUNC_RASENUMENTRIES) (LPCTSTR, LPCTSTR, LPRASENTRYNAME, LPDWORD, LPDWORD);\r
52 typedef DWORD (WINAPI*FUNC_RASHANGUP) (HRASCONN);\r
53 typedef BOOL (WINAPI*FUNC_RASDIAL) (LPRASDIALEXTENSIONS, LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN);\r
54 typedef BOOL (WINAPI*FUNC_RASGETENTRYDIALPARAMS) (LPCTSTR, LPRASDIALPARAMS, LPBOOL);\r
55 typedef BOOL (WINAPI*FUNC_RASGETCONNECTSTATUS) (HRASCONN, LPRASCONNSTATUS);\r
56 typedef BOOL (WINAPI*FUNC_RASGETERRORSTRING)(UINT, LPTSTR, DWORD);\r
57 \r
58 typedef BOOL (WINAPI*FUNC_RASDIALDLG) (LPSTR, LPSTR, LPSTR, LPRASDIALDLG);\r
59 \r
60 \r
61 static int GetCurConnections(RASCONN **Buf);\r
62 static DWORD RasHangUpWait(HRASCONN hRasConn);\r
63 static int DoDisconnect(RASCONN *Buf, int Num);\r
64 static BOOL CALLBACK DialCallBackProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
65 static VOID WINAPI RasDialFunc( UINT unMsg, RASCONNSTATE rasconnstate, DWORD dwError );\r
66 static void MakeRasConnMsg(char *Phone, RASCONNSTATE rasconn, char *Buf);\r
67 static BOOL CALLBACK DialPassCallBackProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
68 \r
69 \r
70 /*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
71 \r
72 static HINSTANCE m_hDll = NULL;\r
73 static HINSTANCE m_hDll2 = NULL;\r
74 \r
75 static FUNC_RASENUMCONNECTIONS m_RasEnumConnections = NULL;\r
76 static FUNC_RASENUMENTRIES m_RasEnumEntries = NULL;\r
77 static FUNC_RASHANGUP m_RasHangUp = NULL;\r
78 static FUNC_RASDIAL m_RasDial = NULL;\r
79 static FUNC_RASGETENTRYDIALPARAMS m_RasGetEntryDialParams = NULL;\r
80 static FUNC_RASGETCONNECTSTATUS m_RasGetConnectStatus = NULL;\r
81 static FUNC_RASGETERRORSTRING m_RasGetErrorString = NULL;\r
82 \r
83 static FUNC_RASDIALDLG m_RasDialDlg = NULL;\r
84 \r
85 static HWND hWndDial;\r
86 \r
87 \r
88 \r
89 /*----- RAS\83\89\83C\83u\83\89\83\8a\82ð\83\8d\81[\83h\82·\82é ---------------------------------------------\r
90 *\r
91 *       Parameter\r
92 *               \82È\82µ\r
93 *\r
94 *       Return Value\r
95 *               \82È\82µ\r
96 *\r
97 *       Note\r
98 *               RAS\83\89\83C\83u\83\89\83\8a\82Í\95K\82¸\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82é\82à\82Ì\82Å\82Í\82È\82¢\82Ì\82Å\81A\83X\83^\83e\83B\83b\83N\82É\r
99 *               \83\8a\83\93\83N\82µ\82È\82¢\81B\r
100 *----------------------------------------------------------------------------*/\r
101 \r
102 void LoadRasLib(void)\r
103 {\r
104         if((m_hDll = LoadLibrary("rasapi32.dll")) != NULL)\r
105         {\r
106                 m_RasEnumConnections = (FUNC_RASENUMCONNECTIONS)GetProcAddress(m_hDll, "RasEnumConnectionsA");\r
107                 m_RasEnumEntries = (FUNC_RASENUMENTRIES)GetProcAddress(m_hDll, "RasEnumEntriesA");\r
108                 m_RasHangUp = (FUNC_RASHANGUP)GetProcAddress(m_hDll, "RasHangUpA");\r
109                 m_RasDial = (FUNC_RASDIAL)GetProcAddress(m_hDll, "RasDialA");\r
110                 m_RasGetEntryDialParams = (FUNC_RASGETENTRYDIALPARAMS)GetProcAddress(m_hDll, "RasGetEntryDialParamsA");\r
111                 m_RasGetConnectStatus = (FUNC_RASGETCONNECTSTATUS)GetProcAddress(m_hDll, "RasGetConnectStatusA");\r
112                 m_RasGetErrorString = (FUNC_RASGETERRORSTRING)GetProcAddress(m_hDll, "RasGetErrorStringA");\r
113 \r
114                 if((m_RasEnumConnections == NULL) ||\r
115                    (m_RasEnumEntries == NULL) ||\r
116                    (m_RasHangUp == NULL) ||\r
117                    (m_RasDial == NULL) ||\r
118                    (m_RasGetEntryDialParams == NULL) ||\r
119                    (m_RasGetConnectStatus == NULL) ||\r
120                    (m_RasGetErrorString == NULL))\r
121                 {\r
122                         FreeLibrary(m_hDll);\r
123                         m_hDll = NULL;\r
124                 }\r
125         }\r
126 \r
127         if(m_hDll != NULL)\r
128         {\r
129                 if((m_hDll2 = LoadLibrary("rasdlg.dll")) != NULL)\r
130                 {\r
131                         m_RasDialDlg = (FUNC_RASDIALDLG)GetProcAddress(m_hDll2, "RasDialDlgA");\r
132 \r
133                         if(m_RasDialDlg == NULL)\r
134                         {\r
135                                 FreeLibrary(m_hDll2);\r
136                                 m_hDll2 = NULL;\r
137                         }\r
138                 }\r
139         }\r
140         return;\r
141 }\r
142 \r
143 \r
144 /*----- RAS\83\89\83C\83u\83\89\83\8a\82ð\83\8a\83\8a\81[\83X\82·\82é -------------------------------------------\r
145 *\r
146 *       Parameter\r
147 *               \82È\82µ\r
148 *\r
149 *       Return Value\r
150 *               \82È\82µ\r
151 *----------------------------------------------------------------------------*/\r
152 \r
153 void ReleaseRasLib(void)\r
154 {\r
155         if(m_hDll != NULL)\r
156                 FreeLibrary(m_hDll);\r
157         m_hDll = NULL;\r
158 \r
159         if(m_hDll2 != NULL)\r
160                 FreeLibrary(m_hDll2);\r
161         m_hDll2 = NULL;\r
162 \r
163         return;\r
164 }\r
165 \r
166 \r
167 /*----- RAS\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ---------------------------------------------\r
168 *\r
169 *       Parameter\r
170 *               \82È\82µ\r
171 *\r
172 *       Return Value\r
173 *               int RAS\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\r
174 *                       YES/NO\r
175 *----------------------------------------------------------------------------*/\r
176 \r
177 int AskRasUsable(void)\r
178 {\r
179         int Sts;\r
180 \r
181         Sts = NO;\r
182         if(m_hDll != NULL)\r
183                 Sts = YES;\r
184 \r
185         return(Sts);\r
186 }\r
187 \r
188 \r
189 /*----- \8c»\8dÝ\82ÌRAS\83R\83l\83N\83V\83\87\83\93\88ê\97\97\82ð\95Ô\82· ---------------------------------------\r
190 *\r
191 *       Parameter\r
192 *               RASCONN **Buf : \88ê\97\97\82Ö\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·\83\8f\81[\83N\r
193 *\r
194 *       Return Value\r
195 *               int \8cÂ\90\94 (-1=\83G\83\89\81[)\r
196 *\r
197 *       Note\r
198 *               Buf\82Ì\97Ì\88æ\82Í\8cÄ\8fo\91¤\82Å\8aJ\95ú\82·\82é\82±\82Æ\r
199 *----------------------------------------------------------------------------*/\r
200 \r
201 static int GetCurConnections(RASCONN **Buf)\r
202 {\r
203         RASCONN *RasConn;\r
204         RASCONN *Tmp;\r
205         DWORD Size;\r
206         DWORD Num;\r
207         DWORD Sts;\r
208         int Ret;\r
209 \r
210         Ret = -1;\r
211         Size = sizeof(RASCONN);\r
212         if((RasConn = malloc(Size)) != NULL)\r
213         {\r
214                 RasConn->dwSize = sizeof(RASCONN);\r
215                 Sts = (*m_RasEnumConnections)(RasConn, &Size, &Num);\r
216                 if((Sts == ERROR_BUFFER_TOO_SMALL) || (Sts == ERROR_NOT_ENOUGH_MEMORY))\r
217             {\r
218                         if((Tmp = realloc(RasConn, Size)) != NULL)\r
219                 {\r
220                                 RasConn = Tmp;\r
221                                 Sts = (*m_RasEnumConnections)(RasConn, &Size, &Num);\r
222                         }\r
223                 }\r
224 \r
225                 if(Sts == 0)\r
226                 {\r
227                         Ret = Num;\r
228                         *Buf = RasConn;\r
229                 }\r
230                 else\r
231                         free(RasConn);\r
232         }\r
233         return(Ret);\r
234 }\r
235 \r
236 \r
237 /*----- RasHangUp()------------------------------------------------------------\r
238 *\r
239 *       Parameter\r
240 *               HRASCONN hRasConn : \83n\83\93\83h\83\8b\r
241 *\r
242 *       Return Value\r
243 *               DWORD \83X\83e\81[\83^\83X\r
244 *\r
245 *       Note\r
246 *               \90Ø\92f\82ª\8a®\97¹\82·\82é\82Ü\82Å\91Ò\82Â\r
247 *----------------------------------------------------------------------------*/\r
248 \r
249 static DWORD RasHangUpWait(HRASCONN hRasConn)\r
250 {\r
251         RASCONNSTATUS RasSts;\r
252         DWORD Sts;\r
253 \r
254         Sts = (*m_RasHangUp)(hRasConn);\r
255 \r
256         RasSts.dwSize = sizeof(RASCONNSTATUS);\r
257         while((*m_RasGetConnectStatus)(hRasConn, &RasSts) != ERROR_INVALID_HANDLE)\r
258                 Sleep(10);\r
259 \r
260         return(Sts);\r
261 }\r
262 \r
263 \r
264 /*----- \8c»\8dÝ\82ÌRAS\83R\83l\83N\83V\83\87\83\93\82ð\90Ø\92f\82·\82é ---------------------------------------\r
265 *\r
266 *       Parameter\r
267 *               RASCONN *RasConn : \90Ú\91±\88ê\97\97\r
268 *               int Num : \8cÂ\90\94\r
269 *\r
270 *       Return Value\r
271 *               int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
272 *----------------------------------------------------------------------------*/\r
273 \r
274 static int DoDisconnect(RASCONN *RasConn, int Num)\r
275 {\r
276         int i;\r
277         int Sts;\r
278 \r
279         Sts = SUCCESS;\r
280         if(Num > 0)\r
281         {\r
282                 SetTaskMsg(MSGJPN220);\r
283                 for(i = 0; i < Num; i++)\r
284                 {\r
285                         if(RasHangUpWait(RasConn[i].hrasconn) != 0)\r
286                                 Sts = FAIL;\r
287                 }\r
288         }\r
289         return(Sts);\r
290 }\r
291 \r
292 \r
293 /*----- RAS\82ð\90Ø\92f\82·\82é ---------------------------------------------------------\r
294 *\r
295 *       Parameter\r
296 *               int Notify : \8am\94F\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
297 *\r
298 *       Return Value\r
299 *               \82È\82µ\r
300 *----------------------------------------------------------------------------*/\r
301 \r
302 void DisconnectRas(int Notify)\r
303 {\r
304         RASCONN *RasConn;\r
305         int Num;\r
306 \r
307         if(m_hDll != NULL)\r
308         {\r
309                 if((Num = GetCurConnections(&RasConn)) != -1)\r
310                 {\r
311                         if(Num > 0)\r
312                         {\r
313                                 if((Notify == NO) ||\r
314                                    (DialogBox(GetFtpInst(), MAKEINTRESOURCE(rasnotify_dlg), GetMainHwnd(), ExeEscDialogProc) == YES))\r
315                                 {\r
316                                         DoDisconnect(RasConn, Num);\r
317                                 }\r
318                         }\r
319                         free(RasConn);\r
320                 }\r
321         }\r
322         return;\r
323 }\r
324 \r
325 \r
326 /*----- RAS\82Ì\83G\83\93\83g\83\8a\88ê\97\97\82ð\83R\83\93\83{\83{\83b\83N\83X\82É\83Z\83b\83g\82·\82é -------------------------\r
327 *\r
328 *       Parameter\r
329 *               HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83n\83\93\83h\83\8b\r
330 *               int Item : \83R\83\93\83{\83{\83b\83N\83X\82Ì\83\8a\83\\81[\83X\94Ô\8d\86\r
331 *               char *CurName : \8f\89\8aú\92l\r
332 *\r
333 *       Return Value\r
334 *               int \83G\83\93\83g\83\8a\90\94\r
335 *----------------------------------------------------------------------------*/\r
336 \r
337 int SetRasEntryToComboBox(HWND hDlg, int Item, char *CurName)\r
338 {\r
339         RASENTRYNAME *Entry;\r
340         RASENTRYNAME *Tmp;\r
341         DWORD i;\r
342         DWORD Size;\r
343         DWORD Num;\r
344         DWORD Sts;\r
345 \r
346         Num = 0;\r
347         if(m_hDll != NULL)\r
348         {\r
349                 Size = sizeof(RASENTRYNAME);\r
350                 if((Entry = malloc(Size)) != NULL)\r
351                 {\r
352                         Entry->dwSize = sizeof(RASENTRYNAME);\r
353                         Sts = (*m_RasEnumEntries)(NULL, NULL, Entry, &Size, &Num);\r
354                         if((Sts == ERROR_BUFFER_TOO_SMALL) || (Sts == ERROR_NOT_ENOUGH_MEMORY))\r
355                         {\r
356                                 if((Tmp = realloc(Entry, Size)) != NULL)\r
357                         {\r
358                                         Entry = Tmp;\r
359                                         Sts = (*m_RasEnumEntries)(NULL, NULL, Entry, &Size, &Num);\r
360                                 }\r
361                         }\r
362 \r
363                         if((Sts == 0) && (Num > 0))\r
364                         {\r
365                                 for(i = 0; i < Num; i++)\r
366                                         SendDlgItemMessage(hDlg, Item, CB_ADDSTRING, 0, (LPARAM)Entry[i].szEntryName);\r
367 \r
368                                 SendDlgItemMessage(hDlg, Item, CB_SELECTSTRING, -1, (LPARAM)CurName);\r
369                         }\r
370                         free(Entry);\r
371                 }\r
372         }\r
373         return(Num);\r
374 }\r
375 \r
376 \r
377 /*----- RAS\82Ì\90Ú\91±\82ð\8ds\82¤ -------------------------------------------------------\r
378 *\r
379 *       Parameter\r
380 *               int Dialup : \83_\83C\83A\83\8b\83A\83b\83v\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
381 *               int UseThis : \95K\82¸\82±\82Ì\83G\83\93\83g\83\8a\82É\90Ú\91±\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
382 *               int Notify : \8dÄ\90Ú\91±\91O\82É\8am\94F\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
383 *               char *Name : \90Ú\91±\90æ\r
384 *\r
385 *       Return Value\r
386 *               int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
387 *----------------------------------------------------------------------------*/\r
388 \r
389 int ConnectRas(int Dialup, int UseThis, int Notify, char *Name)\r
390 {\r
391         RASDIALDLG DlgParam;\r
392         RASCONN *RasConn;\r
393         int i;\r
394         int Num;\r
395         int Sts;\r
396         int DoDial;\r
397         RASDIALPARAMS Param;\r
398         BOOL Flg;\r
399         OSVERSIONINFO VerInfo;\r
400 \r
401         Sts = SUCCESS;\r
402         if(Dialup == YES)\r
403         {\r
404                 if(m_hDll != NULL)\r
405                 {\r
406                         /* \8c»\8dÝ\82Ì\90Ú\91±\82ð\8am\94F */\r
407                         DoDial = 1;\r
408                         if((Num = GetCurConnections(&RasConn)) != -1)\r
409                         {\r
410                                 if(Num > 0)\r
411                                 {\r
412                                         DoDial = 0;\r
413                                         if(UseThis == YES)\r
414                                         {\r
415                                                 DoDial = 2;\r
416                                                 for(i = 0; i < Num; i++)\r
417                                                 {\r
418                                                         if(_mbscmp(RasConn[i].szEntryName, Name) == 0)\r
419                                                                 DoDial = 0;\r
420                                                 }\r
421 \r
422                                                 if(DoDial == 2)\r
423                                                 {\r
424                                                         if((Notify == NO) ||\r
425                                                            (DialogBox(GetFtpInst(), MAKEINTRESOURCE(rasreconnect_dlg), GetMainHwnd(), ExeEscDialogProc) == YES))\r
426                                                         {\r
427                                                                 DoDisconnect(RasConn, Num);\r
428                                                         }\r
429                                                         else\r
430                                                                 DoDial = 0;\r
431                                                 }\r
432                                         }\r
433                                 }\r
434                                 free(RasConn);\r
435                         }\r
436 \r
437                         if(DoDial != 0)\r
438                         {\r
439                                 /* \90Ú\91±\82·\82é */\r
440                                 SetTaskMsg(MSGJPN221);\r
441                                 Sts = FAIL;\r
442 \r
443                                 Num = 0;\r
444                                 VerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);\r
445                                 if(GetVersionEx(&VerInfo) == TRUE)\r
446                                 {\r
447                                         if(VerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)\r
448                                                 Num = 1;\r
449                                 }\r
450 \r
451                                 if(Num == 1)\r
452                                 {\r
453                                         if(m_hDll2 != NULL)\r
454                                         {\r
455                                                 /* Windows NT */\r
456                                                 DlgParam.dwSize = sizeof(RASDIALDLG);\r
457                                                 DlgParam.hwndOwner = GetMainHwnd();\r
458                                                 DlgParam.dwFlags = 0;\r
459                                                 DlgParam.dwSubEntry = 0;\r
460                                                 DlgParam.reserved = 0;\r
461                                                 DlgParam.reserved2 = 0;\r
462                                                 if((*m_RasDialDlg)(NULL, Name, NULL, &DlgParam) != 0)\r
463                                                         Sts = SUCCESS;\r
464                                         }\r
465                                         else\r
466                                                 SetTaskMsg(MSGJPN222);\r
467                                 }\r
468                                 else\r
469                                 {\r
470                                         /* Windows 95,98 */\r
471                                         Param.dwSize = sizeof(RASDIALPARAMS);\r
472                                         strcpy(Param.szEntryName, Name);\r
473                                         Flg = TRUE;\r
474                                         Sts = (*m_RasGetEntryDialParams)(NULL, &Param, &Flg);\r
475                                         strcpy(Param.szPhoneNumber, "");\r
476 \r
477                                         if(((strlen(Param.szUserName) != 0) && (strlen(Param.szPassword) != 0)) ||\r
478                                            (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(dial_password_dlg), GetMainHwnd(), (DLGPROC)DialPassCallBackProc, (LPARAM)&Param) == YES))\r
479                                         {\r
480                                                 if(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(dial_dlg), GetMainHwnd(), (DLGPROC)DialCallBackProc, (LPARAM)&Param) == YES)\r
481                                                         Sts = SUCCESS;\r
482                                         }\r
483                                 }\r
484                         }\r
485                 }\r
486         }\r
487         return(Sts);\r
488 }\r
489 \r
490 \r
491 /*----- RAS\83_\83C\83A\83\8b\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N -----------------------------------\r
492 *\r
493 *       Parameter\r
494 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
495 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
496 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
497 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
498 *\r
499 *       Return Value\r
500 *               BOOL TRUE/FALSE\r
501 *----------------------------------------------------------------------------*/\r
502 \r
503 static BOOL CALLBACK DialCallBackProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
504 {\r
505         static RASDIALPARAMS *Param;\r
506         static HRASCONN hRasConn;\r
507         char Tmp[RAS_NAME_LEN+25];\r
508         DWORD Sts;\r
509 \r
510         switch (message)\r
511         {\r
512                 case WM_INITDIALOG :\r
513                         Param = (RASDIALPARAMS *)lParam;\r
514                         hWndDial = hDlg;\r
515                         hRasConn = NULL;\r
516                         sprintf(Tmp, MSGJPN223, Param->szEntryName);\r
517                         SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)Tmp);\r
518                         Sts = (*m_RasDial)(NULL, NULL, Param, 0, &RasDialFunc, &hRasConn);\r
519                         if(Sts != 0)\r
520                         EndDialog(hDlg, NO);\r
521                     return(TRUE);\r
522 \r
523                 case WM_COMMAND :\r
524                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
525                         {\r
526                                 case IDCANCEL :\r
527                                         RasHangUpWait(hRasConn);\r
528                                         EndDialog(hDlg, NO);\r
529                                         break;\r
530                         }\r
531                         return(TRUE);\r
532 \r
533                 case WM_DIAL_MSG :\r
534                         if(lParam != 0)\r
535                         {\r
536                                 /* \83G\83\89\81[\94­\90¶ */\r
537                                 if((*m_RasGetErrorString)((UINT)lParam, (LPTSTR)Tmp, RAS_NAME_LEN+25) != 0)\r
538                                         sprintf(Tmp, MSGJPN224);\r
539                                 RasHangUpWait(hRasConn);\r
540                                 MessageBox(hDlg, Tmp, MSGJPN225, MB_OK | MB_ICONSTOP);\r
541                                 EndDialog(hDlg, NO);\r
542                         }\r
543                         else if(wParam & RASCS_DONE)\r
544                         {\r
545                                 /* \8fI\97¹ */\r
546                                 EndDialog(hDlg, YES);\r
547                         }\r
548                         else\r
549                         {\r
550                                 /* \83X\83e\81[\83^\83X\95Ï\8dX */\r
551                                 MakeRasConnMsg(Param->szPhoneNumber, wParam, Tmp);\r
552                                 SendDlgItemMessage(hDlg, DIAL_STATUS, WM_SETTEXT, 0, (LPARAM)Tmp);\r
553                         }\r
554                         return(TRUE);\r
555         }\r
556         return(FALSE);\r
557 }\r
558 \r
559 \r
560 /*----- RasDial()\82Ì\83R\81[\83\8b\83o\83b\83N -----------------------------------------------\r
561 *\r
562 *       Parameter\r
563 *               UINT unMsg : \83\81\83b\83Z\81[\83W\r
564 *               RASCONNSTATE rasconnstate : \83X\83e\81[\83^\83X\r
565 *               DWORD dwError : \83G\83\89\81[\r
566 *\r
567 *       Return Value\r
568 *               \82È\82µ\r
569 *----------------------------------------------------------------------------*/\r
570 \r
571 static VOID WINAPI RasDialFunc(UINT unMsg, RASCONNSTATE rasconnstate, DWORD dwError)\r
572 {\r
573         PostMessage(hWndDial, WM_DIAL_MSG, (WPARAM)rasconnstate, (LPARAM)dwError );\r
574 }\r
575 \r
576 \r
577 /*----- RasDial()\82Ì\83X\83e\81[\83^\83X\83\81\83b\83Z\81[\83W\82ð\8dì\90¬\82·\82é -----------------------------\r
578 *\r
579 *       Parameter\r
580 *               char *Phone : \93d\98b\94Ô\8d\86\r
581 *               RASCONNSTATE rasconn : \83X\83e\81[\83^\83X\r
582 *               char *Buf : \95\8e\9a\97ñ\82ð\83Z\83b\83g\82·\82é\83o\83b\83t\83@\r
583 *\r
584 *       Return Value\r
585 *               \82È\82µ\r
586 *----------------------------------------------------------------------------*/\r
587 \r
588 static void MakeRasConnMsg(char *Phone, RASCONNSTATE rasconn, char *Buf)\r
589 {\r
590     switch( rasconn )\r
591     {\r
592         case RASCS_OpenPort:\r
593             strcpy(Buf, MSGJPN226);\r
594                         break;\r
595         case RASCS_PortOpened:\r
596             strcpy(Buf, MSGJPN227);\r
597                         break;\r
598         case RASCS_ConnectDevice:\r
599             sprintf(Buf, MSGJPN228);\r
600                         break;\r
601         case RASCS_DeviceConnected:\r
602             strcpy(Buf, MSGJPN229);\r
603                         break;\r
604         case RASCS_AllDevicesConnected:\r
605             strcpy(Buf, MSGJPN230);\r
606                         break;\r
607         case RASCS_Authenticate:\r
608         case RASCS_AuthNotify:\r
609             strcpy(Buf, MSGJPN231);\r
610                         break;\r
611         case RASCS_AuthRetry:\r
612         case RASCS_ReAuthenticate:\r
613             strcpy(Buf, MSGJPN232);\r
614                         break;\r
615         case RASCS_AuthChangePassword:\r
616             strcpy(Buf, MSGJPN233);\r
617                         break;\r
618         case RASCS_Authenticated:\r
619             strcpy(Buf, MSGJPN234);\r
620                         break;\r
621         case RASCS_Connected:\r
622             strcpy(Buf, MSGJPN235);\r
623                         break;\r
624         case RASCS_Disconnected:\r
625             strcpy(Buf, MSGJPN236);\r
626                         break;\r
627         case RASCS_AuthCallback:\r
628         case RASCS_PrepareForCallback:\r
629         case RASCS_WaitForModemReset:\r
630         case RASCS_WaitForCallback:\r
631         case RASCS_Interactive:\r
632         case RASCS_RetryAuthentication:\r
633         case RASCS_CallbackSetByCaller:\r
634         case RASCS_PasswordExpired:\r
635         case RASCS_AuthProject:\r
636         case RASCS_AuthLinkSpeed:\r
637         case RASCS_AuthAck:\r
638         default:\r
639             strcpy(Buf, MSGJPN237);\r
640                         break;\r
641     }\r
642         return;\r
643 }\r
644 \r
645 \r
646 /*----- \83\86\81[\83U\96¼\81A\83p\83X\83\8f\81[\83h\93ü\97Í\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------\r
647 *\r
648 *       Parameter\r
649 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
650 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
651 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
652 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
653 *\r
654 *       Return Value\r
655 *               BOOL TRUE/FALSE\r
656 *----------------------------------------------------------------------------*/\r
657 \r
658 static BOOL CALLBACK DialPassCallBackProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
659 {\r
660         static RASDIALPARAMS *Param;\r
661         char Tmp[RAS_NAME_LEN+25];\r
662 \r
663         switch (message)\r
664         {\r
665                 case WM_INITDIALOG :\r
666                         Param = (RASDIALPARAMS *)lParam;\r
667                         sprintf(Tmp, MSGJPN238, Param->szEntryName);\r
668                         SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)Tmp);\r
669                         SendDlgItemMessage(hDlg, RASPASS_USER, EM_LIMITTEXT, UNLEN, 0);\r
670                         SendDlgItemMessage(hDlg, RASPASS_PASS, EM_LIMITTEXT, PWLEN, 0);\r
671                         SendDlgItemMessage(hDlg, RASPASS_USER, WM_SETTEXT, 0, (LPARAM)Param->szUserName);\r
672                         SendDlgItemMessage(hDlg, RASPASS_PASS, WM_SETTEXT, 0, (LPARAM)Param->szPassword);\r
673                     return(TRUE);\r
674 \r
675                 case WM_COMMAND :\r
676                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
677                         {\r
678                                 case IDOK :\r
679                                         SendDlgItemMessage(hDlg, RASPASS_USER, WM_GETTEXT, UNLEN+1, (LPARAM)Param->szUserName);\r
680                                         SendDlgItemMessage(hDlg, RASPASS_PASS, WM_GETTEXT, PWLEN+1, (LPARAM)Param->szPassword);\r
681                                         EndDialog(hDlg, YES);\r
682                                         break;\r
683 \r
684                                 case IDCANCEL :\r
685                                         EndDialog(hDlg, NO);\r
686                                         break;\r
687                         }\r
688                         return(TRUE);\r
689         }\r
690         return(FALSE);\r
691 }\r
692 \r
693 \r