1 // SoftEther UT-VPN SourceCode
\r
3 // Copyright (C) 2004-2010 SoftEther Corporation.
\r
4 // Copyright (C) 2004-2010 University of Tsukuba, Japan.
\r
5 // Copyright (C) 2003-2010 Daiyuu Nobori.
\r
6 // All Rights Reserved.
\r
8 // http://utvpn.tsukuba.ac.jp/
\r
10 // This program is free software; you can redistribute it and/or
\r
11 // modify it under the terms of the GNU General Public License
\r
12 // version 2 as published by the Free Software Foundation.
\r
14 // This program is distributed in the hope that it will be useful,
\r
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
17 // GNU General Public License for more details.
\r
19 // You should have received a copy of the GNU General Public License version 2
\r
20 // along with this program; if not, write to the Free Software
\r
21 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
\r
23 // このファイルは GPL バージョン 2 ライセンスで公開されています。
\r
24 // 誰でもこのファイルの内容を複製、改変したり、改変したバージョンを再配布
\r
25 // することができます。ただし、原著作物を改変した場合は、原著作物の著作権表示
\r
26 // を除去することはできません。改変した著作物を配布する場合は、改変実施者の
\r
27 // 著作権表示を原著作物の著作権表示に付随して記載するようにしてください。
\r
29 // この SoftEther UT-VPN オープンソース・プロジェクトは、日本国の
\r
30 // ソフトイーサ株式会社 (SoftEther Corporation, http://www.softether.co.jp/ )
\r
31 // および筑波大学 (University of Tsukuba, http://www.tsukuba.ac.jp/ ) によって
\r
33 // 本プログラムの配布者は、本プログラムを、業としての利用以外のため、
\r
34 // および、試験または研究のために利用が行われることを想定して配布
\r
36 // SoftEther UT-VPN プロジェクトの Web サイトは http://utvpn.tsukuba.ac.jp/ に
\r
38 // 本ソフトウェアの不具合の修正、機能改良、セキュリティホールの修復などのコード
\r
39 // の改変を行った場合で、その成果物を SoftEther UT-VPN プロジェクトに提出して
\r
40 // いただける場合は、 http://utvpn.tsukuba.ac.jp/ までソースコードを送付して
\r
41 // ください。SoftEther UT-VPN プロジェクトの本体リリースまたはブランチリリース
\r
44 // GPL に基づいて原著作物が提供される本ソフトウェアの改良版を配布、販売する
\r
45 // 場合は、そのソースコードを GPL に基づいて誰にでも開示する義務が生じます。
\r
47 // 本ソフトウェアに関連する著作権、特許権、商標権はソフトイーサ株式会社
\r
48 // (SoftEther Corporation) およびその他の著作権保持者が保有しています。
\r
49 // ソフトイーサ株式会社等はこれらの権利を放棄していません。本ソフトウェアの
\r
50 // 二次著作物を配布、販売する場合は、これらの権利を侵害しないようにご注意
\r
53 // お願い: どのような通信ソフトウェアにも通常は必ず未発見の
\r
54 // セキュリティホールが潜んでいます。本ソースコードをご覧いただいた結果、
\r
55 // UT-VPN にセキュリティホールを発見された場合は、当該セキュリティホールの
\r
56 // 情報を不特定多数に開示される前に、必ず、ソフトイーサ株式会社
\r
57 // および脆弱性情報の届出を受け付ける公的機関まで通報いただき、
\r
58 // 公益保護にご協力いただきますようお願い申し上げます。
\r
60 // ソフトイーサ株式会社は、当該セキュリティホールについて迅速に対処を
\r
61 // 行い、UT-VPN および UT-VPN に関連するソフトウェアのユーザー・顧客
\r
64 // ソフトイーサへの届出先: http://www.softether.co.jp/jp/contact/
\r
65 // 日本国内の脆弱性情報届出受付公的機関:
\r
67 // http://www.ipa.go.jp/security/vuln/report/
\r
69 // 上記各事項について不明な点は、ソフトイーサ株式会社までご連絡ください。
\r
70 // 連絡先: http://www.softether.co.jp/jp/contact/
\r
72 // -----------------------------------------------
\r
75 // 新規リリース by SoftEther
\r
76 // -----------------------------------------------
\r
79 // Win32 用ユーザーインターフェースコード
\r
83 #define WINUI_DEBUG_TEXT "@winui_debug.txt"
\r
85 #define LV_INSERT_RESET_ALL_ITEM_MIN 500
\r
87 #define WINUI_PASSWORD_NULL_USERNAME "NULL"
\r
89 #define WINUI_DEFAULT_DIALOG_UNIT_X 7
\r
90 #define WINUI_DEFAULT_DIALOG_UNIT_Y 12
\r
92 // Windows 用の型が windows.h をインクルードしていなくても使えるようにする
\r
96 typedef void *HFONT;
\r
97 typedef void *HICON;
\r
98 typedef void *HMENU;
\r
99 typedef UINT_PTR WPARAM;
\r
100 typedef LONG_PTR LPARAM;
\r
101 typedef void *HINSTANCE;
\r
107 #define FREE_REGKEY "Software\\SoftEther Corporation\\UT-VPN Client\\Free Edition Info"
\r
108 #define ONCE_MSG_REGKEY "Software\\SoftEther Corporation\\UT-VPN\\Common"
\r
109 #define ONCE_MSG_REGVALUE "HideMessage_%u"
\r
111 #define SPLASH_BMP_REGKEY "Software\\SoftEther Corporation\\UT-VPN\\SplashScreen"
\r
112 #define SPLASH_BMP_REGVALUE "LastId"
\r
114 #define NICINFO_AUTOCLOSE_TIME_1 (20 * 1000)
\r
115 #define NICINFO_AUTOCLOSE_TIME_2 1800
\r
117 extern bool UseAlpha;
\r
118 extern UINT AlphaValue;
\r
122 #define DIALOG DIALOGEX(false)
\r
123 #define DIALOG_WHITE DIALOGEX(true)
\r
124 #define DIALOGEX(white) \
\r
125 void *param = GetParam(hWnd); \
\r
128 ret = DlgProc(hWnd, msg, wParam, lParam, white); \
\r
129 if (ret != 0) return ret; \
\r
132 typedef UINT (__stdcall DIALOG_PROC)(HWND, UINT, WPARAM, LPARAM);
\r
134 typedef UINT (WINUI_DIALOG_PROC)(HWND, UINT, WPARAM, LPARAM, void *);
\r
138 #define WINUI_SECURE_ENUM_OBJECTS 1 // オブジェクトの列挙
\r
139 #define WINUI_SECURE_WRITE_DATA 2 // データの書き込み
\r
140 #define WINUI_SECURE_READ_DATA 3 // データの読み込み
\r
141 #define WINUI_SECURE_WRITE_CERT 4 // 証明書の書き込み
\r
142 #define WINUI_SECURE_READ_CERT 5 // 証明書の読み込み
\r
143 #define WINUI_SECURE_WRITE_KEY 6 // 秘密鍵の書き込み
\r
144 #define WINUI_SECURE_SIGN_WITH_KEY 7 // 秘密鍵による署名
\r
145 #define WINUI_SECURE_DELETE_OBJECT 8 // オブジェクトの削除
\r
146 #define WINUI_SECURE_DELETE_CERT 9 // 証明書の削除
\r
147 #define WINUI_SECURE_DELETE_KEY 10 // 秘密鍵の削除
\r
148 #define WINUI_SECURE_DELETE_DATA 11 // データの削除
\r
151 typedef struct WINUI_SECURE_BATCH
\r
153 UINT Type; // 動作の種類
\r
155 bool Private; // プライベートモード
\r
156 BUF *InputData; // 入力データ
\r
157 BUF *OutputData; // 出力データ
\r
158 X *InputX; // 入力証明書
\r
159 X *OutputX; // 出力証明書
\r
160 K *InputK; // 入力秘密鍵
\r
161 LIST *EnumList; // 列挙リスト
\r
162 UCHAR OutputSign[128]; // 出力署名
\r
163 bool Succeed; // 成功フラグ
\r
164 } WINUI_SECURE_BATCH;
\r
167 typedef struct STATUS_WINDOW
\r
174 typedef struct LVB_ITEM
\r
176 UINT NumStrings; // 文字列数
\r
177 wchar_t **Strings; // 文字列バッファ
\r
178 UINT Image; // 画像番号
\r
179 void *Param; // パラメータ
\r
185 LIST *ItemList; // アイテムリスト
\r
189 #ifdef CreateWindow
\r
194 typedef struct FONT
\r
199 bool UnderLine; // 下線
\r
200 bool StrikeOut; // 取り消し線
\r
201 char *Name; // フォント名
\r
202 HFONT hFont; // フォント
\r
203 UINT x, y; // フォントサイズ
\r
207 static LIST *font_list = NULL;
\r
210 typedef struct DIALOG_PARAM
\r
214 WINUI_DIALOG_PROC *proc;
\r
219 typedef struct SECURE_DEVICE_WINDOW
\r
221 WINUI_SECURE_BATCH *batch;
\r
224 struct SECURE_DEVICE_THREAD *p;
\r
227 } SECURE_DEVICE_WINDOW;
\r
230 typedef struct SECURE_DEVICE_THREAD
\r
232 SECURE_DEVICE_WINDOW *w;
\r
235 wchar_t *ErrorMessage;
\r
237 } SECURE_DEVICE_THREAD;
\r
239 void StartSecureDevice(HWND hWnd, SECURE_DEVICE_WINDOW *w);
\r
242 typedef struct PASSPHRASE_DLG
\r
244 char pass[MAX_SIZE];
\r
249 void PassphraseDlgProcCommand(HWND hWnd, PASSPHRASE_DLG *p);
\r
252 typedef struct STATUS_WINDOW_PARAM
\r
257 wchar_t AccountName[MAX_ACCOUNT_NAME_LEN + 1];
\r
258 } STATUS_WINDOW_PARAM;
\r
261 typedef struct CERT_DLG
\r
268 typedef struct IMAGELIST_ICON
\r
276 typedef struct SEARCH_WINDOW_PARAM
\r
280 } SEARCH_WINDOW_PARAM;
\r
283 typedef struct WINUI_REMOTE
\r
286 char *RegKeyName; // レジストリキー名
\r
288 wchar_t *Caption; // キャプション
\r
289 wchar_t *Title; // タイトル
\r
290 char *Hostname; // ホスト名
\r
291 char *DefaultHostname; // デフォルトホスト名
\r
292 LIST *CandidateList; // 候補リスト
\r
295 void InitImageList();
\r
296 void FreeImageList();
\r
297 IMAGELIST_ICON *LoadIconForImageList(UINT id);
\r
298 int CompareImageListIcon(void *p1, void *p2);
\r
299 BOOL CALLBACK EnumResNameProc(HMODULE hModule, LPCTSTR lpszType, LPTSTR lpszName, LONG_PTR lParam);
\r
300 void PrintCertInfo(HWND hWnd, CERT_DLG *p);
\r
301 void CertDlgUpdate(HWND hWnd, CERT_DLG *p);
\r
302 bool CALLBACK SearchWindowEnumProc(HWND hWnd, LPARAM lParam);
\r
303 UINT RemoteDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
304 void RemoteDlgInit(HWND hWnd, WINUI_REMOTE *r);
\r
305 void RemoteDlgRefresh(HWND hWnd, WINUI_REMOTE *r);
\r
306 void RemoteDlgOnOk(HWND hWnd, WINUI_REMOTE *r);
\r
307 int CALLBACK LvSortProc(LPARAM param1, LPARAM param2, LPARAM sort_param);
\r
310 typedef struct ICON_CACHE
\r
317 static LIST *icon_cache_list = NULL;
\r
320 typedef struct WINUI_LV_SORT
\r
330 typedef struct WINUI_ABOUT
\r
337 UINT AboutDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
338 void AboutDlgInit(HWND hWnd, WINUI_ABOUT *a);
\r
340 typedef struct WIN9X_REBOOT_DLG
\r
344 } WIN9X_REBOOT_DLG;
\r
349 typedef struct STRING_DLG
\r
351 wchar_t String[MAX_SIZE];
\r
359 void StringDlgInit(HWND hWnd, STRING_DLG *s);
\r
360 void StringDlgUpdate(HWND hWnd, STRING_DLG *s);
\r
362 // PIN コードは 5 分間キャッシュされる
\r
363 #define WINUI_SECUREDEVICE_PIN_CACHE_TIME (5 * 60 * 1000)
\r
364 extern char cached_pin_code[MAX_SIZE];
\r
365 extern UINT64 cached_pin_code_expires;
\r
368 typedef struct WINCONNECT_DLG_DATA
\r
380 } WINCONNECT_DLG_DATA;
\r
385 typedef struct KAKUSHI
\r
389 volatile bool Halt;
\r
390 UINT64 StartTick, Span;
\r
394 typedef struct FREEINFO
\r
396 char ServerName[MAX_SERVER_STR_LEN + 1];
\r
403 typedef struct ONCEMSG_DLG
\r
415 typedef struct BAD_PROCESS
\r
422 typedef struct WINBMP
\r
425 UINT Width, Height, Bits;
\r
430 typedef struct WINMEMDC
\r
433 UINT Width, Height;
\r
440 // 競合するアンチウイルスソフトのプロセス名一覧
\r
441 static BAD_PROCESS bad_processes[] =
\r
443 {"nod32krn.exe", "NOD32 Antivirus",},
\r
446 static UINT num_bad_processes = sizeof(bad_processes) / sizeof(bad_processes[0]);
\r
451 void InitWinUi(wchar_t *software_name, char *font, UINT fontsize);
\r
452 void SetWinUiTitle(wchar_t *title);
\r
454 HWND DlgItem(HWND hWnd, UINT id);
\r
455 void SetText(HWND hWnd, UINT id, wchar_t *str);
\r
456 void SetTextInner(HWND hWnd, UINT id, wchar_t *str);
\r
457 void SetTextA(HWND hWnd, UINT id, char *str);
\r
458 wchar_t *GetText(HWND hWnd, UINT id);
\r
459 char *GetTextA(HWND hWnd, UINT id);
\r
460 bool GetTxt(HWND hWnd, UINT id, wchar_t *str, UINT size);
\r
461 bool GetTxtA(HWND hWnd, UINT id, char *str, UINT size);
\r
462 bool IsEnable(HWND hWnd, UINT id);
\r
463 bool IsDisable(HWND hWnd, UINT id);
\r
464 void Enable(HWND hWnd, UINT id);
\r
465 void Disable(HWND hWnd, UINT id);
\r
466 void SetEnable(HWND hWnd, UINT id, bool b);
\r
467 void Close(HWND hWnd);
\r
468 void DoEvents(HWND hWnd);
\r
469 void Refresh(HWND hWnd);
\r
470 UINT GetInt(HWND hWnd, UINT id);
\r
471 void SetInt(HWND hWnd, UINT id, UINT value);
\r
472 void SetIntEx(HWND hWnd, UINT id, UINT value);
\r
473 void Focus(HWND hWnd, UINT id);
\r
474 void FocusEx(HWND hWnd, UINT id);
\r
475 bool IsFocus(HWND hWnd, UINT id);
\r
476 wchar_t *GetClass(HWND hWnd, UINT id);
\r
477 char *GetClassA(HWND hWnd, UINT id);
\r
478 void SelectEdit(HWND hWnd, UINT id);
\r
479 void UnselectEdit(HWND hWnd, UINT id);
\r
480 UINT SendMsg(HWND hWnd, UINT id, UINT msg, WPARAM wParam, LPARAM lParam);
\r
481 bool IsEmpty(HWND hWnd, UINT id);
\r
482 UINT GetTextLen(HWND hWnd, UINT id, bool unicode);
\r
483 UINT GetTextSize(HWND hWnd, UINT id, bool unicode);
\r
484 UINT GetStyle(HWND hWnd, UINT id);
\r
485 void SetStyle(HWND hWnd, UINT id, UINT style);
\r
486 void RemoveStyle(HWND hWnd, UINT id, UINT style);
\r
487 UINT GetExStyle(HWND hWnd, UINT id);
\r
488 void SetExStyle(HWND hWnd, UINT id, UINT style);
\r
489 void RemoveExStyle(HWND hWnd, UINT id, UINT style);
\r
490 void Hide(HWND hWnd, UINT id);
\r
491 void Show(HWND hWnd, UINT id);
\r
492 void SetShow(HWND hWnd, UINT id, bool b);
\r
493 bool IsHide(HWND hWnd, UINT id);
\r
494 bool IsShow(HWND hWnd, UINT id);
\r
495 void Top(HWND hWnd);
\r
496 void NoTop(HWND hWnd);
\r
497 void *GetParam(HWND hWnd);
\r
498 void SetParam(HWND hWnd, void *param);
\r
499 UINT DlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, bool white_color);
\r
500 void SetAplha(HWND hWnd, UINT value0_255);
\r
501 void NoticeSettingChange();
\r
503 UINT DialogInternal(HWND hWnd, UINT id, DIALOG_PROC *proc, void *param);
\r
504 UINT MsgBox(HWND hWnd, UINT flag, wchar_t *msg);
\r
505 UINT MsgBoxEx(HWND hWnd, UINT flag, wchar_t *msg, ...);
\r
506 void SetTextEx(HWND hWnd, UINT id, wchar_t *str, ...);
\r
507 void SetTextExA(HWND hWnd, UINT id, char *str, ...);
\r
508 void FormatText(HWND hWnd, UINT id, ...);
\r
509 void FormatTextA(HWND hWnd, UINT id, ...);
\r
510 void Center(HWND hWnd);
\r
511 void Center2(HWND hWnd);
\r
512 void CenterParent(HWND hWnd);
\r
513 void GetMonitorSize(UINT *width, UINT *height);
\r
514 void DisableClose(HWND hWnd);
\r
515 void EnableClose(HWND hWnd);
\r
518 int CompareFont(void *p1, void *p2);
\r
519 HFONT GetFont(char *name, UINT size, bool bold, bool italic, bool underline, bool strikeout);
\r
520 bool CalcFontSize(HFONT hFont, UINT *x, UINT *y);
\r
521 bool GetFontSize(HFONT hFont, UINT *x, UINT *y);
\r
522 void SetFont(HWND hWnd, UINT id, HFONT hFont);
\r
523 void LimitText(HWND hWnd, UINT id, UINT count);
\r
524 bool CheckTextLen(HWND hWnd, UINT id, UINT len, bool unicode);
\r
525 bool CheckTextSize(HWND hWnd, UINT id, UINT size, bool unicode);
\r
526 void Check(HWND hWnd, UINT id, bool b);
\r
527 bool IsChecked(HWND hWnd, UINT id);
\r
528 void SetIcon(HWND hWnd, UINT id, UINT icon_id);
\r
529 void SetBitmap(HWND hWnd, UINT id, UINT bmp_id);
\r
530 bool SecureDeviceWindow(HWND hWnd, WINUI_SECURE_BATCH *batch, UINT num_batch, UINT device_id, UINT bitmap_id);
\r
531 UINT Dialog(HWND hWnd, UINT id, WINUI_DIALOG_PROC *proc, void *param);
\r
532 UINT DialogEx(HWND hWnd, UINT id, WINUI_DIALOG_PROC *proc, void *param, bool white);
\r
533 UINT DialogEx2(HWND hWnd, UINT id, WINUI_DIALOG_PROC *proc, void *param, bool white, bool meiryo);
\r
534 HWND DialogCreateEx(HWND hWnd, UINT id, WINUI_DIALOG_PROC *proc, void *param, bool white);
\r
535 UINT __stdcall InternalDialogProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
\r
536 UINT SecureDeviceWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
537 HFONT Font(UINT size, UINT bold);
\r
538 void DlgFont(HWND hWnd, UINT id, UINT size, UINT bold);
\r
539 void OpenAvi(HWND hWnd, UINT id, UINT avi_id);
\r
540 void CloseAvi(HWND hWnd, UINT id);
\r
541 void PlayAvi(HWND hWnd, UINT id, bool repeat);
\r
542 void StopAvi(HWND hWnd, UINT id);
\r
543 void EnableSecureDeviceWindowControls(HWND hWnd, bool enable);
\r
544 void SecureDeviceThread(THREAD *t, void *param);
\r
545 void Command(HWND hWnd, UINT id);
\r
546 wchar_t *OpenDlg(HWND hWnd, wchar_t *filter, wchar_t *title);
\r
547 char *OpenDlgA(HWND hWnd, char *filter, char *title);
\r
548 wchar_t *SaveDlg(HWND hWnd, wchar_t *filter, wchar_t *title, wchar_t *default_name, wchar_t *default_ext);
\r
549 char *SaveDlgA(HWND hWnd, char *filter, char *title, char *default_name, char *default_ext);
\r
550 wchar_t *MakeFilter(wchar_t *str);
\r
551 char *MakeFilterA(char *str);
\r
553 UINT PkcsUtilProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
554 void PkcsUtilWrite(HWND hWnd);
\r
555 void PkcsUtilErase(HWND hWnd);
\r
556 bool PassphraseDlg(HWND hWnd, char *pass, UINT pass_size, BUF *buf, bool p12);
\r
557 UINT PassphraseDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
558 bool PasswordDlg(HWND hWnd, UI_PASSWORD_DLG *p);
\r
559 void PasswordDlgOnOk(HWND hWnd, UI_PASSWORD_DLG *p);
\r
560 UINT PasswordDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
561 void PasswordDlgProcChange(HWND hWnd, UI_PASSWORD_DLG *p);
\r
562 UINT CbAddStr(HWND hWnd, UINT id, wchar_t *str, UINT data);
\r
563 UINT CbAddStrA(HWND hWnd, UINT id, char *str, UINT data);
\r
564 UINT CbAddStr9xA(HWND hWnd, UINT id, char *str, UINT data);
\r
565 UINT CbInsertStr(HWND hWnd, UINT id, UINT index, wchar_t *str, UINT data);
\r
566 UINT CbInsertStrA(HWND hWnd, UINT id, UINT index, char *str, UINT data);
\r
567 UINT CbInsertStr9xA(HWND hWnd, UINT id, UINT index, char *str, UINT data);
\r
568 void CbSelectIndex(HWND hWnd, UINT id, UINT index);
\r
569 UINT CbNum(HWND hWnd, UINT id);
\r
570 UINT CbFindStr(HWND hWnd, UINT id, wchar_t *str);
\r
571 UINT CbFindStr9xA(HWND hWnd, UINT id, char *str);
\r
572 wchar_t *CbGetStr(HWND hWnd, UINT id);
\r
573 UINT CbFindData(HWND hWnd, UINT id, UINT data);
\r
574 UINT CbGetData(HWND hWnd, UINT id, UINT index);
\r
575 void CbSelect(HWND hWnd, UINT id, int data);
\r
576 void CbReset(HWND hWnd, UINT id);
\r
577 void CbSetHeight(HWND hWnd, UINT id, UINT value);
\r
578 UINT CbGetSelectIndex(HWND hWnd, UINT id);
\r
579 UINT CbGetSelect(HWND hWnd, UINT id);
\r
580 void SetRange(HWND hWnd, UINT id, UINT start, UINT end);
\r
581 void SetPos(HWND hWnd, UINT id, UINT pos);
\r
582 UINT LbAddStr(HWND hWnd, UINT id, wchar_t *str, UINT data);
\r
583 UINT LbAddStrA(HWND hWnd, UINT id, char *str, UINT data);
\r
584 UINT LbInsertStr(HWND hWnd, UINT id, UINT index, wchar_t *str, UINT data);
\r
585 UINT LbInsertStrA(HWND hWnd, UINT id, UINT index, char *str, UINT data);
\r
586 void LbSelectIndex(HWND hWnd, UINT id, UINT index);
\r
587 UINT LbNum(HWND hWnd, UINT id);
\r
588 UINT LbFindStr(HWND hWnd, UINT id, wchar_t *str);
\r
589 wchar_t *LbGetStr(HWND hWnd, UINT id);
\r
590 UINT LbFindData(HWND hWnd, UINT id, UINT data);
\r
591 UINT LbGetData(HWND hWnd, UINT id, UINT index);
\r
592 void LbSelect(HWND hWnd, UINT id, int data);
\r
593 void LbReset(HWND hWnd, UINT id);
\r
594 void LbSetHeight(HWND hWnd, UINT id, UINT value);
\r
595 UINT LbGetSelectIndex(HWND hWnd, UINT id);
\r
596 UINT LbGetSelect(HWND hWnd, UINT id);
\r
597 STATUS_WINDOW *StatusPrinterWindowStart(SOCK *s, wchar_t *account_name);
\r
598 void StatusPrinterWindowStop(STATUS_WINDOW *sw);
\r
599 void StatusPrinterWindowPrint(STATUS_WINDOW *sw, wchar_t *str);
\r
600 void StatusPrinterWindowThread(THREAD *thread, void *param);
\r
601 UINT StatusPrinterWindowDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
602 void CertDlg(HWND hWnd, X *x, X *issuer_x, bool manager);
\r
603 UINT CertDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
604 void LvInit(HWND hWnd, UINT id);
\r
605 void LvInitEx(HWND hWnd, UINT id, bool no_image);
\r
606 void LvInitEx2(HWND hWnd, UINT id, bool no_image, bool large_icon);
\r
607 void LvReset(HWND hWnd, UINT id);
\r
608 void LvInsertColumn(HWND hWnd, UINT id, UINT index, wchar_t *str, UINT width);
\r
609 UINT GetIcon(UINT icon_id);
\r
610 void LvInsert(HWND hWnd, UINT id, UINT icon, void *param, UINT num_str, ...);
\r
611 UINT LvInsertItem(HWND hWnd, UINT id, UINT icon, void *param, wchar_t *str);
\r
612 UINT LvInsertItemByImageListId(HWND hWnd, UINT id, UINT image, void *param, wchar_t *str);
\r
613 UINT LvInsertItemByImageListIdA(HWND hWnd, UINT id, UINT image, void *param, char *str);
\r
614 void LvSetItem(HWND hWnd, UINT id, UINT index, UINT pos, wchar_t *str);
\r
615 void LvSetItemA(HWND hWnd, UINT id, UINT index, UINT pos, char *str);
\r
616 void LvSetItemParam(HWND hWnd, UINT id, UINT index, void *param);
\r
617 void LvSetItemImage(HWND hWnd, UINT id, UINT index, UINT icon);
\r
618 void LvSetItemImageByImageListId(HWND hWnd, UINT id, UINT index, UINT image);
\r
619 void LvDeleteItem(HWND hWnd, UINT id, UINT index);
\r
620 UINT LvNum(HWND hWnd, UINT id);
\r
621 void *LvGetParam(HWND hWnd, UINT id, UINT index);
\r
622 wchar_t *LvGetStr(HWND hWnd, UINT id, UINT index, UINT pos);
\r
623 char *LvGetStrA(HWND hWnd, UINT id, UINT index, UINT pos);
\r
624 void LvShow(HWND hWnd, UINT id, UINT index);
\r
625 UINT LvSearchParam(HWND hWnd, UINT id, void *param);
\r
626 UINT LvSearchStr(HWND hWnd, UINT id, UINT pos, wchar_t *str);
\r
627 UINT LvSearchStrA(HWND hWnd, UINT id, UINT pos, char *str);
\r
628 UINT LvGetSelected(HWND hWnd, UINT id);
\r
629 UINT LvGetFocused(HWND hWnd, UINT id);
\r
630 wchar_t *LvGetFocusedStr(HWND hWnd, UINT id, UINT pos);
\r
631 wchar_t *LvGetSelectedStr(HWND hWnd, UINT id, UINT pos);
\r
632 char *LvGetSelectedStrA(HWND hWnd, UINT id, UINT pos);
\r
633 bool LvIsSelected(HWND hWnd, UINT id);
\r
634 UINT LvGetNextMasked(HWND hWnd, UINT id, UINT start);
\r
635 bool LvIsMasked(HWND hWnd, UINT id);
\r
636 bool LvIsSingleSelected(HWND hWnd, UINT id);
\r
637 bool LvIsMultiMasked(HWND hWnd, UINT id);
\r
638 UINT LvGetMaskedNum(HWND hWnd, UINT id);
\r
639 void LvAutoSize(HWND hWnd, UINT id);
\r
640 void LvSelect(HWND hWnd, UINT id, UINT index);
\r
641 void LvSelectAll(HWND hWnd, UINT id);
\r
642 void LvSwitchSelect(HWND hWnd, UINT id);
\r
643 void LvSetView(HWND hWnd, UINT id, bool details);
\r
644 UINT LvGetColumnWidth(HWND hWnd, UINT id, UINT index);
\r
645 void CheckCertDlg(UI_CHECKCERT *p);
\r
646 UINT CheckCertDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
647 void PrintCheckCertInfo(HWND hWnd, UI_CHECKCERT *p);
\r
648 void ShowDlgDiffWarning(HWND hWnd, UI_CHECKCERT *p);
\r
649 void CheckCertDialogOnOk(HWND hWnd, UI_CHECKCERT *p);
\r
650 bool ConnectErrorDlg(UI_CONNECTERROR_DLG *p);
\r
651 UINT ConnectErrorDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
652 HINSTANCE GetUiDll();
\r
653 HICON LoadLargeIconInner(UINT id);
\r
654 HICON LoadSmallIconInner(UINT id);
\r
655 HICON LoadLargeIcon(UINT id);
\r
656 HICON LoadSmallIcon(UINT id);
\r
657 HICON LoadIconEx(UINT id, bool small_icon);
\r
658 void InitIconCache();
\r
659 void FreeIconCache();
\r
660 LVB *LvInsertStart();
\r
661 void LvInsertAdd(LVB *b, UINT icon, void *param, UINT num_str, ...);
\r
662 void LvInsertEnd(LVB *b, HWND hWnd, UINT id);
\r
663 void LvInsertEndEx(LVB *b, HWND hWnd, UINT id, bool force_reset);
\r
664 void LvSetStyle(HWND hWnd, UINT id, UINT style);
\r
665 void LvRemoveStyle(HWND hWnd, UINT id, UINT style);
\r
666 HMENU LoadSubMenu(UINT menu_id, UINT pos, HMENU *parent_menu);
\r
667 UINT GetMenuItemPos(HMENU hMenu, UINT id);
\r
668 void DeleteMenuItem(HMENU hMenu, UINT pos);
\r
669 void SetMenuItemEnable(HMENU hMenu, UINT pos, bool enable);
\r
670 void SetMenuItemBold(HMENU hMenu, UINT pos, bool bold);
\r
671 wchar_t *GetMenuStr(HMENU hMenu, UINT pos);
\r
672 char *GetMenuStrA(HMENU hMenu, UINT pos);
\r
673 void SetMenuStr(HMENU hMenu, UINT pos, wchar_t *str);
\r
674 void SetMenuStrA(HMENU hMenu, UINT pos, char *str);
\r
675 void RemoveShortcutKeyStrFromMenu(HMENU hMenu);
\r
676 UINT GetMenuNum(HMENU hMenu);
\r
677 void PrintMenu(HWND hWnd, HMENU hMenu);
\r
678 void LvRename(HWND hWnd, UINT id, UINT pos);
\r
679 void AllowFGWindow(UINT process_id);
\r
680 HWND SearchWindow(wchar_t *caption);
\r
681 char *RemoteDlg(HWND hWnd, char *regkey, UINT icon, wchar_t *caption, wchar_t *title, char *default_host);
\r
682 LIST *ReadCandidateFromReg(UINT root, char *key, char *name);
\r
683 void WriteCandidateToReg(UINT root, char *key, LIST *o, char *name);
\r
684 UINT LvGetColumnNum(HWND hWnd, UINT id);
\r
685 void LvSetItemParamEx(HWND hWnd, UINT id, UINT index, UINT subitem, void *param);
\r
686 void LvSortEx(HWND hWnd, UINT id, UINT subitem, bool desc, bool numeric);
\r
687 void LvSort(HWND hWnd, UINT id, UINT subitem, bool desc);
\r
688 void *LvGetParamEx(HWND hWnd, UINT id, UINT index, UINT subitem);
\r
689 void LvSortHander(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, UINT id);
\r
690 void LvStandardHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, UINT id);
\r
691 void IpSet(HWND hWnd, UINT id, UINT ip);
\r
692 UINT IpGet(HWND hWnd, UINT id);
\r
693 void IpClear(HWND hWnd, UINT id);
\r
694 bool IpIsFilled(HWND hWnd, UINT id);
\r
695 UINT IpGetFilledNum(HWND hWnd, UINT id);
\r
696 void About(HWND hWnd, CEDAR *cedar, char *product_name, UINT bitmap);
\r
697 void Win9xReboot(HWND hWnd);
\r
698 void Win9xRebootThread(THREAD *t, void *p);
\r
699 UINT Win9xRebootDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
700 wchar_t *StringDlg(HWND hWnd, wchar_t *title, wchar_t *info, wchar_t *def, UINT icon, bool allow_empty, bool allow_unsafe);
\r
701 char *StringDlgA(HWND hWnd, wchar_t *title, wchar_t *info, char *def, UINT icon, bool allow_empty, bool allow_unsafe);
\r
702 UINT StringDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
703 void InitDialogInternational(HWND hWnd, void *param);
\r
704 void AdjustWindowAndControlSize(HWND hWnd);
\r
705 void AdjustDialogXY(UINT *x, UINT *y, UINT dlgfont_x, UINT dlgfont_y);
\r
706 HFONT GetDialogDefaultFont();
\r
707 HFONT GetDialogDefaultFontEx(bool meiryo);
\r
708 void InitMenuInternational(HMENU hMenu, char *prefix);
\r
709 void InitMenuInternationalUni(HMENU hMenu, char *prefix);
\r
710 void ShowTcpIpConfigUtil(HWND hWnd, bool util_mode);
\r
711 void ShowCpu64Warning();
\r
712 UINT Cpu64DlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
713 UINT TcpIpDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
714 void TcpIpDlgInit(HWND hWnd);
\r
715 void TcpIpDlgUpdate(HWND hWnd);
\r
716 UINT TcpMsgDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
717 UINT KakushiDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
718 void KakushiThread(THREAD *thread, void *param);
\r
719 KAKUSHI *InitKakushi();
\r
720 void FreeKakushi(KAKUSHI *k);
\r
721 void ShowEasterEgg(HWND hWnd);
\r
722 bool ExecuteHamcoreExe(char *name);
\r
723 bool Win32CnCheckAlreadyExists(bool lock);
\r
724 void RegistWindowsFirewallAll();
\r
725 void InitVistaWindowTheme(HWND hWnd);
\r
726 void WinUiDebug(wchar_t *str);
\r
727 void WinUiDebugInit();
\r
728 void WinUiDebugFree();
\r
729 void OnceMsg(HWND hWnd, wchar_t *title, wchar_t *message, bool show_checkbox, UINT icon);
\r
730 void OnceMsgEx(HWND hWnd, wchar_t *title, wchar_t *message, bool show_checkbox, UINT icon, bool *halt);
\r
731 UINT GetOnceMsgHash(wchar_t *title, wchar_t *message);
\r
732 UINT OnceMsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
733 bool CheckBadProcesses(HWND hWnd);
\r
734 BAD_PROCESS *IsBadProcess(char *exe);
\r
735 void ShowBadProcessWarning(HWND hWnd, BAD_PROCESS *bad);
\r
736 void SetFontMeiryo(HWND hWnd, UINT id);
\r
737 void SetFontDefault(HWND hWnd, UINT id);
\r
738 HFONT GetMeiryoFont();
\r
739 HFONT GetMeiryoFontEx(UINT font_size);
\r
740 bool ShowWindowsNetworkConnectionDialog();
\r
741 SOCK *WinConnectEx2(HWND hWnd, char *server, UINT port, UINT timeout, UINT icon_id, wchar_t *caption, wchar_t *info);
\r
742 UINT WinConnectDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
743 void WinConnectDlgThread(THREAD *thread, void *param);
\r
744 void NicInfo(UI_NICINFO *info);
\r
745 UINT NicInfoProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
\r
746 void NicInfoInit(HWND hWnd, UI_NICINFO *info);
\r
747 void NicInfoOnTimer(HWND hWnd, UI_NICINFO *info);
\r
748 void NicInfoRefresh(HWND hWnd, UI_NICINFO *info);
\r
749 void NicInfoShowStatus(HWND hWnd, UI_NICINFO *info, wchar_t *msg1, wchar_t *msg2, UINT icon, bool animate);
\r
750 void NicInfoCloseAfterTime(HWND hWnd, UI_NICINFO *info, UINT tick);
\r
751 bool IsNewStyleModeEnabled();
\r
752 void DisableNewStyleMode();
\r
753 void EnableNewStyleMode();
\r
754 void InitGdiCache();
\r
755 WINBMP *LoadBmpFromFileW(wchar_t *filename);
\r
756 WINBMP *LoadBmpFromFileInnerW(wchar_t *filename);
\r
757 WINBMP *LoadBmpFromFileA(char *filename);
\r
758 WINBMP *LoadBmpFromResource(UINT id);
\r
759 WINBMP *LoadBmpMain(void *hBitmap);
\r
760 void FreeBmp(WINBMP *b);
\r
761 void ShowSplash(HWND hWndParent, wchar_t *bmp_file_name, char *title, wchar_t *caption, UINT ticks, UINT line_color, void *param);
\r
762 void ShowSplashEx(HWND hWndParent, char *software_name, UINT ticks, UINT line_color);
\r
763 WINMEMDC *NewMemDC(UINT width, UINT height);
\r
764 void FreeMemDC(WINMEMDC *m);
\r
765 void LvSetBkImage(HWND hWnd, UINT id, char *bmp_file_name);
\r
766 bool IsFullColor();
\r