HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0602
名無しタブのつまみの名前変更とつまみ削除のしかたを教えてください。4解決


名無し

リンク

2015/6/2(Tue) 17:47:58|NO.69612

タブブラウザを作っているのですが、次のようなことがわかりません。
   ・タブつまみの名前変更
   ・タブつまみの削除

下にスクリプトを載せておいたので教えてください。
http://hsp.tv/play/pforum.php?mode=pastwch&num=41867より(一部改良)

#include "user32.as" #include "comctl32.as" #define WS_CLIPSIBLINGS 0x04000000 #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 #define TCIF_TEXT 0x0001 #define TCM_FIRST 0x1300 #define TCM_INSERTITEMA (TCM_FIRST + 7) #define TCM_GETCURSEL (TCM_FIRST + 11) #define TCM_ADJUSTRECT (TCM_FIRST + 40) #define SW_HIDE 0 #define SW_SHOW 5 #enum BTID_BACK = 0 #enum BTID_REFRESH #enum BTID_FORWARD #enum BTID_HOME #enum BTID_CLOSE #define WM_NOTIFY 0x004E #define TCN_FIRST (-550) #define TCN_SELCHANGE (TCN_FIRST - 1) // タブコントロール作成 InitCommonControls pos 40,0:winobj "systabcontrol32", "", 0, WS_CLIPSIBLINGS|WS_CHILD|WS_VISIBLE, ginfo_sx-40,30, 0, 0 hTab = objinfo_hwnd(stat) if hTab == 0 : end //タブ操作ボタン objsize 20,20 pos 0,0:button gosub"+",*newtab pos 20,0:button gosub"-",*clausetab // タブアイテム追加 dim tci, 7 sdim buf, 10, 5 buf = "TAB", "TAB" repeat 2 tci = TCIF_TEXT, 0, 0, varptr(buf.cnt), strlen(buf.cnt) sendmsg hTab, TCM_INSERTITEMA, cnt, varptr(tci) loop // ボタン作成 dim rect, 4 sendmsg hTab, TCM_ADJUSTRECT, 0, varptr(rect) btw = 50 bth = 24 buf = "戻る", "更新", "進む", "HOME", "閉じる" pos rect.0, rect.1 repeat 5 if cnt == 3 : btw = 60 objsize btw, bth button buf.cnt, *lb_button if cnt == 0 : btFirst = stat //最初のボタンIDを保存 pos ginfo_cx+btw, rect.1 loop // IEオブジェクト作成 dimtype ie, vartype("comobj"), 2 sdim urls, 1024, 2 urls.0 = "http://www.yahoo.co.jp/" urls.1 = "http://www.google.co.jp/webhp?sourceid=navclient&hl=ja&ie=UTF-8" repeat 2 pos rect.0, rect.1+bth axobj ie.cnt, "Shell.Explorer.2", ginfo_sx-rect.0, ginfo_sy-bth-rect.1 if cnt == 0 : ieFirst = stat // 最初のIEのオブジェクトIDを保存 if cnt == 1 : ShowWindow objinfo_hwnd(stat), SW_HIDE // 二つ目のIEを非表示に tmp = ie.cnt // ie.cnt->"navigate"だとエラー??? tmp->"navigate" urls.cnt delcom tmp loop ieID = 0 //アクティブなタブID activeIE = ie.ieID //アクティブなIEオブジェクト comevent ie_event, activeIE, "{34A715A0-6587-11D0-924A-0020AFC7AC4D}",*event//アクティブブラウザにイベントを設定する oncmd gosub *lb_OnNotify, WM_NOTIFY title "読み込み中..." *lb_button // ボタンが押された switch stat-btFirst case BTID_BACK activeIE->"GoBack" swbreak case BTID_REFRESH activeIE->"Refresh2" 3 swbreak case BTID_FORWARD activeIE->"GoForward" swbreak case BTID_HOME activeIE->"Navigate" urls.ieID swbreak case BTID_CLOSE delcom activeIE end swbreak swend stop *lb_OnNotify dupptr nmhdr, lparam, 12 // タブが変更された if nmhdr.0 = hTab & nmhdr.2 = TCN_SELCHANGE { ShowWindow objinfo_hwnd(ieID+ieFirst), SW_HIDE // アクティブだったタブのIEを非表示に sendmsg hTab, TCM_GETCURSEL, 0, 0 // アクティブになったタブのID取得 ieID = stat ShowWindow objinfo_hwnd(ieID+ieFirst), SW_SHOW // アクティブになったタブのIEを表示 // activeIEも変更する delcom activeIE activeIE = ie(ieID) comevent ie_event, activeIE, "{34A715A0-6587-11D0-924A-0020AFC7AC4D}",*event//アクティブブラウザにイベントを設定する if activeIE("readyState") = 4 {//読み込みを終えたときにタイトルを取得する pDoc= activeIE("Document") title pDoc("Title") }else{ } } return *event dispid = comevdisp(ie_event) if dispid=252{ pDoc = activeIE("Document") title pDoc("Title") //アクティブのつまみ名を変更する命令 return } return *newtab //タブを追加する命令 return *clausetab //アクティブのタブを閉じる命令 return



この記事に返信する


名無し

リンク

2015/6/2(Tue) 20:42:58|NO.69614

・閉じる(クローズ)はcloseなんじゃ?
・とりあえずタブを5つまで生産できるようにした
・とりあえず閉じられるようにした
ただ、comobj型が何故かコピー出来ないから、ieコンポーネントの配列を
どう処理すればいいかわからないんだぜ……

#include "user32.as" #include "comctl32.as" #define WS_CLIPSIBLINGS 0x04000000 #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 #define TCIF_TEXT 0x0001 #define TCM_FIRST 0x1300 #define TCM_INSERTITEMA (TCM_FIRST + 7) #define TCM_GETCURSEL (TCM_FIRST + 11) #define TCM_ADJUSTRECT (TCM_FIRST + 40) #define SW_HIDE 0 #define SW_SHOW 5 #enum BTID_BACK = 0 #enum BTID_REFRESH #enum BTID_FORWARD #enum BTID_HOME #enum BTID_CLOSE #define WM_NOTIFY 0x004E #define TCN_FIRST (-550) #define TCN_SELCHANGE (TCN_FIRST - 1) #const TCM_DELETEITEM $1308 // タブコントロール作成 InitCommonControls pos 40,0:winobj "systabcontrol32", "", 0, WS_CLIPSIBLINGS|WS_CHILD|WS_VISIBLE, ginfo_sx-40,30, 0, 0 hTab = objinfo_hwnd(stat) if hTab == 0 : end //タブ操作ボタン objsize 20,20 pos 0,0:button gosub"+",*newtab pos 20,0:button gosub"-",*clausetab // タブアイテム追加 dim tci, 7 sdim buf, 10, 5 buf = "TAB", "TAB" repeat 2 tci = TCIF_TEXT, 0, 0, varptr(buf.cnt), strlen(buf.cnt) sendmsg hTab, TCM_INSERTITEMA, cnt, varptr(tci) loop tabcount = 2 // ボタン作成 dim rect, 4 sendmsg hTab, TCM_ADJUSTRECT, 0, varptr(rect) btw = 50 bth = 24 buf = "戻る", "更新", "進む", "HOME", "閉じる" pos rect.0, rect.1 repeat 5 if cnt == 3 : btw = 60 objsize btw, bth button buf.cnt, *lb_button if cnt == 0 : btFirst = stat //最初のボタンIDを保存 pos ginfo_cx+btw, rect.1 loop // IEオブジェクト作成 dimtype ie, vartype("comobj"), 5 sdim urls, 1024, 2 urls.0 = "http://www.yahoo.co.jp/" urls.1 = "http://www.google.co.jp/webhp?sourceid=navclient&hl=ja&ie=UTF-8\" target=\"_blank\">http://www.google.co.jp/webhp?sourceid=navclient&hl=ja&ie=UTF-8</a>" repeat 2 pos rect.0, rect.1+bth axobj ie.cnt, "Shell.Explorer.2", ginfo_sx-rect.0, ginfo_sy-bth-rect.1 if cnt == 0 : ieFirst = stat // 最初のIEのオブジェクトIDを保存 if cnt == 1 : ShowWindow objinfo_hwnd(stat), SW_HIDE // 二つ目のIEを非表示に tmp = ie.cnt // ie.cnt->"navigate"だとエラー??? tmp->"navigate" urls.cnt delcom tmp loop ieID = 0 //アクティブなタブID activeIE = ie.ieID //アクティブなIEオブジェクト comevent ie_event, activeIE, "{34A715A0-6587-11D0-924A-0020AFC7AC4D}",*event//アクティブブラウザにイベントを設定する oncmd gosub *lb_OnNotify, WM_NOTIFY title "読み込み中..." *lb_button // ボタンが押された switch stat-btFirst case BTID_BACK activeIE->"GoBack" swbreak case BTID_REFRESH activeIE->"Refresh2" 3 swbreak case BTID_FORWARD activeIE->"GoForward" swbreak case BTID_HOME activeIE->"Navigate" urls.ieID swbreak case BTID_CLOSE delcom activeIE gosub *clausetab swbreak swend stop *lb_OnNotify dupptr nmhdr, lparam, 12 // タブが変更された if nmhdr.0 = hTab & nmhdr.2 = TCN_SELCHANGE { ShowWindow objinfo_hwnd(ieID+ieFirst), SW_HIDE // アクティブだったタブのIEを非表示に sendmsg hTab, TCM_GETCURSEL, 0, 0 // アクティブになったタブのID取得 ieID = stat ShowWindow objinfo_hwnd(ieID+ieFirst), SW_SHOW // アクティブになったタブのIEを表示 // activeIEも変更する delcom activeIE activeIE = ie(ieID) comevent ie_event, activeIE, "{34A715A0-6587-11D0-924A-0020AFC7AC4D}",*event//アクティブブラウザにイベントを設定する if activeIE("readyState") = 4 {//読み込みを終えたときにタイトルを取得する pDoc= activeIE("Document") title pDoc("Title") }else{ } } return *event dispid = comevdisp(ie_event) if dispid=252{ pDoc = activeIE("Document") title pDoc("Title") //アクティブのつまみ名を変更する命令 return } return *newtab //タブを追加する命令 tab__ = "タブ" tci = TCIF_TEXT, 0, 0, varptr(tab__), strlen(tab__) sendmsg hTab, TCM_INSERTITEMA, tabcount, varptr(tci) pos rect.0, rect.1+bth axobj ie.tabcount, "Shell.Explorer.2", ginfo_sx-rect.0, ginfo_sy-bth-rect.1 tmp = ie.tabcount // ie.cnt->"navigate"だとエラー??? urls.tabcount = "http://www.google.co.jp/" tmp->"navigate" "http://www.google.co.jp/" delcom tmp tabcount++ return *clausetab //アクティブのタブを閉じる命令 sendmsg hTab, TCM_DELETEITEM, ieID, 0 /*for k, ieID, tabcount - 1 ie(k) = ie(k + 1) next delcom ik(tabcount - 1) tabcount--*/ return



_(No.69614の方)

リンク

2015/6/2(Tue) 21:30:24|NO.69616

おっとこれはやってしまったか……
No.69612とNo.69614は言うまでもなく別人ですごめんなさい
まさか空白だけ入れて書き込んだらこうなると思わなかった……



名無し

リンク

2015/6/4(Thu) 19:28:36|NO.69664

おお!ありがとうございます。
追加、削除できてます。

あと、つまみの名前変更は属性変更メッセージで出来ました。

#define TCM_SETITEM 0x1306 #define TCM_GETCURSEL 0x130B Tab_name=<つまみの名前> TCITEM = $1, 0, 0, varptr(Tab_name), strlen(Tab_name) sendmsg <タブのハンドル>,TCM_GETCURSEL, 0, 0 sendmsg <タブのハンドル>,TCM_SETITEM,stat,varptr(TCITEM)



名無し

リンク

2015/6/4(Thu) 19:29:08|NO.69665

解決し忘れ



ONION software Copyright 1997-2023(c) All rights reserved.