" + appname + "
\n" buf += "" + p_head.img_wait + "データベース構築中
\n" buf += "...
\n" } else { buf += ";============================================================ ; 2007/xx/xx ; S.Programs HHX ; UX main (HSP 3.0) ; http://sprocket.babyblue.jp/ ;============================================================ ;============================================================ #packopt name "helpman" #packopt hide 1 #packopt xsize 1 #packopt ysize 1 #runtime "hhx" ; remove this ; strlen パフォーマンス問題パッチ (speed : 3.7x) #undef strlen #uselib "kernel32" #cfunc global strlen "lstrlenA" var ; includes #include "hhx_lib.hsp" #include "hhx_db.hsp" ;------------------------------------------------------------ ; Application #define ENABLE_MINIWB 0 ; MiniWB モード #define ENABLE_HHW 1 ; Built-in HHW 有効 #define global WM_APP_HHXQ 0x8000 #define global WM_APP_ACTIVATE 0x8001 #define global WM_APP_RELOAD 0x8002 #define global FILEMAP_NAME_HHX "S.Programs HHX 2.15" #if ENABLE_HHW #define HHW_DEBUG 0 #include "hhw.hsp" #endif ;------------------------------------------------------------ ; const ; atl #uselib "atl.dll" #func AtlAxWinInit "AtlAxWinInit" #func AtlAxGetHost "AtlAxGetHost" int, var ; input hwnd, output IUnknown ; IID ;#usecom IUnknown "{00000000-0000-0000-C000-000000000046}" #usecom IAxWinAmbientDispatch "{B6EA2051-048A-11D1-82B9-00C04FB9942E}" #usecom IOleInPlaceActiveObject "{00000117-0000-0000-C000-000000000046}" #comfunc TranslateAccelerator 5 var ; ie event #define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}" ; exdispid.h #define DISPID_STATUSTEXTCHANGE 102 #define DISPID_BEFORENAVIGATE2 250 // hyperlink clicked on #define DISPID_NEWWINDOW2 251 #define DISPID_NAVIGATECOMPLETE2 252 // UIActivate new document #define DISPID_DOCUMENTCOMPLETE 259 // new document goes ReadyState_Complete #define DISPID_FILEDOWNLOAD 270 // Fired to indicate the File Download dialog is opening #define DISPID_NAVIGATEERROR 271 // Fired to indicate the a binding error has occured ; DocHostFlags #define DOCHOSTUIFLAG_DIALOG 0x1 #define DOCHOSTUIFLAG_DISABLE_HELP_MENU 0x2 #define DOCHOSTUIFLAG_NO3DBORDER 0x4 #define DOCHOSTUIFLAG_SCROLL_NO 0x8 #define DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE 0x10 #define DOCHOSTUIFLAG_OPENNEWWIN 0x20 #define DOCHOSTUIFLAG_DISABLE_OFFSCREEN 0x40 #define DOCHOSTUIFLAG_FLAT_SCROLLBAR 0x80 #define DOCHOSTUIFLAG_DIV_BLOCKDEFAULT 0x100 #define DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY 0x200 #define DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY 0x400 #define DOCHOSTUIFLAG_CODEPAGELINKEDFONTS 0x800 #define DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 0x1000 #define DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 0x2000 #define DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE 0x4000 #define DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION 0x10000 #define DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION 0x20000 #define DOCHOSTUIFLAG_THEME 0x40000 #define DOCHOSTUIFLAG_NOTHEME 0x80000 #define DOCHOSTUIFLAG_NOPICS 0x100000 #define DOCHOSTUIFLAG_NO3DOUTERBORDER 0x200000 #define DOCHOSTUIFLAG_DELEGATESIDOFDISPATCH 0x400000 ;------------------------------------------------------------ ; misc #define ctype objhwnd(%1) objinfo(%1, 2) #uselib "kernel32" #func GetLongPathName "GetLongPathNameA" str, var, int #func GetModuleFileName "GetModuleFileNameA" int, var, int sdim ModuleFileName, 1024 GetModuleFileName 0, ModuleFileName, 1020 #ifdef _DEBUG ModuleFileName = "helpman" #endif #uselib "user32" #cfunc MoveWindow "MoveWindow" sptr, sptr, sptr, sptr, sptr, sptr #cfunc FindWindowEx "FindWindowExA" int, int, sptr, sptr #func SetFocus "SetFocus" int ;============================================================ ;============================================================ ; startup ;============================================================ ; config 0 appname = "HSP HELP Browser II" appver = "2.17c" appsig = "S.Programs 2006-2007" skin_format_ver = "HHX217" ; スキン書式バージョン #if ENABLE_HHW hhwname = "Help Source Editor" hhwver = "(HHX " + appver + ")" #endif ;============================================================ ; 起動分岐 : 起動時の状態によって違うモードで動作する。 ; ・バックグラウンド プロセスとして hs セット キャッシュを作成して終了 ; ・HHW (エディタ) として動作 ; ・メインプロセスへクエリを post して終了 ; ・HHX メインプロセスとして起動 ;---------------------------------------- ; バックグラウンド DB 作成 CMDL_MAKEDB = "//rebuild-db//" if dir_cmdline = CMDL_MAKEDB { ;>> chdir astr = "hsphelp" dirlist buf, astr, 5 if stat : chdir astr wait 100 HHX_init_rebuild_db DBR_WRITEDB end } #if ENABLE_HHW ;---------------------------------------- ; HHW 起動 CMDL_STARTHHW = "//start-hhw//" if dir_cmdline = CMDL_STARTHHW { hhx_edit_start hhwname, hhwver, appsig, "" end } ; ファイル名 取得 (dels '"') astr = dir_cmdline sdim bstr, 1024 repeat c = peek(astr, cnt) if c = 0 : break if c ! '"' : wpoke bstr, strlen(bstr), c loop exist bstr if strsize >= 0 { hhx_edit_start hhwname, hhwver, appsig, bstr end } #endif ;---------------------------------------- ; 同時起動制御 filemap_create FILEMAP_NAME_HHX ; 共有メモリを使用 dupptr map_hwnd, filemap_viewptr() , 4 , 4 ; 最初に起動した HHX の hwnd dupptr map_str, filemap_viewptr()+4, 1024, 2 ; 共有文字列 ; すでに filemap があれば : 共有メモリにクエリ文字列を置いて hwnd にメッセージを送る if filemap_already_exists() { if dir_cmdline = "" { ; アクティブ化のみ sendmsg map_hwnd, WM_APP_ACTIVATE } else { ; クエリ文字列 送信 map_str = "hhxq=" + dir_cmdline sendmsg map_hwnd, WM_APP_HHXQ } filemap_close end } ;============================================================ ; config HHX ; special record-id RID_INDEX = -1 RID_ABOUT = -2 RID_MINIWB = -3 ; special query (ユニーク文字列) IDXQ_ALL = "__all__" + gettime(7) IDXQ_ALPHA = "__alp__" + gettime(7) ; ヒストリバッファ 最大 #define HISTRMAX 256 ; 設定ファイル名 CFGFILE = "hhx.cfg" ; 設定インデックス dim CFGDATA, 20 #const CFG_PAGELOG 1 #const CFG_SEARCHLOG 2 #const VIEWSIZE_INDEX 3 #const VIEWSIZE_SIDE 4 #const CFG_MARKUP 5 #const CFG_AOT 10 ; 設定セーブデータ デフォルト値 (1 1 1 ... / 0 0 0 ...) [0-9]/[10-19] repeat 10 CFGDATA(cnt) = 1 loop CFGDATA.VIEWSIZE_INDEX = 100 CFGDATA.VIEWSIZE_SIDE = 25 ;============================================================ ; スキン (hhx_head) 読み込み #define format_ver 0 #define mode_notmp 1 #define sidebar_len 2 #define skin_footer 3 #define head_ver 4 #define img_index 5 #define img_help 6 #define img_info 7 #define img_wait 8 #define IMG_MAX 9 sdim p_head, 64, IMG_MAX ; スキン変数格納 skin_err = 0 fn = dir_cur + "\\hhx_img\\hhx_head.htm" exist fn if strsize < 0 { ; スキンファイルなし skin_err = 1 dialog "スキンファイル " + fn + " が見つかりません。\nインストール手順を確認してください。\n\n続行しますか?", 3, appname if stat = 7 : end } else { sdim buf_head, strsize + 1 bload fn, buf_head ;---------------------------------------- ; スキン変数読み出し ; hhx_head からアイコン設定読み出し repeat IMG_MAX p = instr(buf_head,, "\n%"+cnt) if p = -1 : continue getstr astr, buf_head, p + 2 a = instr(astr,, "\t") if a = -1 : continue getstr p_head.cnt, astr, a + 1 loop if p_head.format_ver ! skin_format_ver { ; スキンファイル バージョンエラー skin_err = 1 dialog "スキンファイル " + fn + " の書式バージョンが正しくありません。\nインストール手順を確認してください。\n\n続行しますか?", 3, appname if stat = 7 : end } } if skin_err { sdim p_head, 64, IMG_MAX ; スキン変数 リセット ; HTML head buf_head = "
" + p_head.img_wait + "データベース構築中
\n" buf += "...
\n" } else { buf += "val = " + p_head.img_help + "" + HTMLEnc(symbol) + "(" + HTMLEnc( strmid(prm1, 1, strlen(prm1)-2) ) + ")
\n" } else { ; 命令型記述 div += "" + p_head.img_help + "" + HTMLEnc(symbol) + " " + HTMLEnc(prm1) + "
\n" } } else { ; ノーパラ div += "" + p_head.img_help + "" + HTMLEnc(symbol) + "
\n" } if notnull(hhxdata.id.C_PRM2) { div += "" + HTMLEnc_spider(hhxdata.id.C_PRM2) + "\n" } if notnull(hhxdata.id.C_DLL) { div += "
(" + HTMLEnc(hhxdata.id.C_DLL) + " を使用)
\n" } if notnull(hhxdata.id.C_INST) { div += "" + HTMLEnc_spider( strmid(astr, p, i) ) + "\n" p += i + 7 if p >= l : break i = instr(astr, p, "\n}html") if i = -1 : i = l - p ; DoubtAngel bstr = strmid(astr, p, i) DoubtAngel bstr div += "
" + HTMLEnc_spider(hhxdata.id.C_SAMPLE) + "\n" } href = hhxdata.id.C_HREF if notnull(href) { ;-------------------------------------------------- ; 関連項目 検索実行 div += "
| " + HTMLEnc(hhxdata.c.C_NAME) + " | " + HTMLEnc(hhxdata.c.C_SUMMARY) + " | (" + HTMLEnc(hhxdata.c.C_DLL) + ") |
| " + HTMLEnc(hhxdata.c.C_NAME) + " | " + HTMLEnc(hhxdata.c.C_SUMMARY) + " | |
| " + HTMLEnc(astr) + " | ||
| プラグイン | " + ExHTMLEnc( hhxdata.id.C_DLL ) + " |
|---|---|
| バージョン | " + ExHTMLEnc( hhxdata.id.C_VER ) + " |
| 作成日 | " + ExHTMLEnc( hhxdata.id.C_DATE ) + " |
| 著作者 | " + ExHTMLEnc( hhxdata.id.C_AUTHOR ) + " |
| URL | " + HTMLEnc_spider( hhxdata.id.C_URL ) + " |
| 備考 | " + HTMLEnc_spider( hhxdata.id.C_NOTE ) + " |
| タイプ | " + ExHTMLEnc( hhxdata.id.C_TYPE ) + " |
| グループ | " + ExHTMLEnc( hhxdata.id.C_GROUP ) + " |
| 対応環境 |
|
| 移植のヒント | " + HTMLEnc_spider( hhxdata.id.C_PORTINF ) + " |
| hs ファイル | " + ExHTMLEnc( hhxdata.id.C_HSFILE ) + " (このレコードを編集...) |
" + p_head.img_index + "全部で " + results + " 件のページがあります。
\n" } else:if indexq = IDXQ_ALPHA { results = HHX_select_all() div += "" + p_head.img_index + "全部で " + results + " 件のページがあります。
\n" } else { results = HHX_select_where(indexq, C_DLL, -1) HHX_order_by C_GROUP if notnull(indexq) { bstr = indexq + " " } else { bstr = "標準機能" } div += "" + p_head.img_index + results + " 件のページがあります。
\n" } ; プラグイン / モジュール セレクタ div += "\n" p = 0 repeat getstr astr, dll_list, p if strsize = 0 : break p += strsize bstr = astr if bstr = IDXQ_ALL : bstr = "すべて表示" if bstr = "" : bstr = "標準機能" if bstr = IDXQ_ALPHA : bstr = "アルファベット順" if astr = indexq { div += "" + HTMLEnc(bstr) + "\n" } else { div += "" + HTMLEnc(bstr) + "\n" } loop div += "
\n" ; index table (class = index) dll_bak = IDXQ_ALL tmp = "" ; accelerator if indexq ! IDXQ_ALPHA { ; 機能別インデックス repeat results if cnt = viewlimit_idx { tmp += "| " + HTMLEnc( astr ) + " | |
| " if notnull(hhxdata.c.C_VER) : tmp += " Version " + HTMLEnc( hhxdata.c.C_VER ) if notnull(hhxdata.c.C_DATE) : tmp += " Date " + HTMLEnc( hhxdata.c.C_DATE ) if notnull(hhxdata.c.C_AUTHOR) : tmp += " Author " + HTMLEnc( hhxdata.c.C_AUTHOR ) tmp += " | |
| " + HTMLEnc( astr ) + " | |
| " + LeftHTMLEnc(hhxdata.c.C_NAME, 32) + " | " + HTMLEnc(hhxdata.c.C_SUMMARY) + " |
| " + LeftHTMLEnc(hhxdata.c.C_NAME, 32) + " | " + HTMLEnc(hhxdata.c.C_SUMMARY) if 1000000\(cnt+1)=0 : div += tmp:tmp="" ; accelerator loop } else { ; アルファベット別インデックス repeat results if cnt = viewlimit_idx { tmp += " |
| (" + viewlimit_idx + " 件以降省略 続き...) | |
| " + HTMLEnc( astr ) + " | |
| " + LeftHTMLEnc(hhxdata.c.C_NAME, 32) + " | " + HTMLEnc(hhxdata.c.C_SUMMARY) + " |
| " + LeftHTMLEnc(hhxdata.c.C_NAME, 32) + " | " + HTMLEnc(hhxdata.c.C_SUMMARY) + " |
" + p_head.img_info + appname + " Version " + appver + "
\n" div += "IE component based offline HSP help system
\n" #if ENABLE_HHW div += "(" + hhwname + " Included)
\n" #endif div += "" + appsig + "
\n" div += "Web : http://sprocket.babyblue.jp/
\n" ; Logo div += p_head.head_ver + "\n" ; Component Version div += "\n" ; config div += "| ウィンドウ | 標準設定 | |
| 常に手前に表示 | " a = CFG_AOT if CFGDATA.a : div += "[ON] [OFF]" : else : div += "[ON] [OFF]" div += " | (OFF) |
| ヘルプページ | ||
| インデックス デフォルト表示件数 | " a = VIEWSIZE_INDEX if CFGDATA.a > 25 : div += "[-]" : else : div += "[-]" div += " " + CFGDATA.a + " " if CFGDATA.a < 800 : div += "[+]" : else : div += "[+]" div += " | (100) |
| ヘルプの半角英数字を検索リンクにする | " a = CFG_MARKUP if CFGDATA.a : div += "[ON] [OFF]" : else : div += "[ON] [OFF]" div += " | (ON) |
| サイドバー | ||
| 検索結果 デフォルト表示件数 | " a = VIEWSIZE_SIDE if CFGDATA.a > 25 : div += "[-]" : else : div += "[-]" div += " " + CFGDATA.a + " " if CFGDATA.a < 800 : div += "[+]" : else : div += "[+]" div += " | (25) |
| 閲覧ページ履歴を表示 | " a = CFG_PAGELOG if CFGDATA.a : div += "[ON] [OFF]" : else : div += "[ON] [OFF]" div += " | (ON) |
| 検索クエリ履歴を表示 | " a = CFG_SEARCHLOG if CFGDATA.a : div += "[ON] [OFF]" : else : div += "[ON] [OFF]" div += " | (ON) |
リストの表示件数が少ないほど、表示が高速になります。
\n" #if ENABLE_MINIWB } else:if id = RID_MINIWB { ;-------------------------------------------------- ; MiniWB mode div += "