|
|
|
2011/6/19(Sun) 14:20:42|NO.39728
IEのページが変わってもURLが変わらないので誰か助けてください。
現時点のスクリプトを全部貼ります
#uselib "gdi32.dll"
#cfunc CreateDC "CreateDCA" sptr,sptr,sptr,int
#func DeleteDC "DeleteDC" int
#func BitBlt "BitBlt" int,int,int,int,int,int,int,int,int
#define NULL 0
#define SRCCOPY 0x00CC0020
#define CAPTUREBLT 0x40000000
#include "obj.as"
#uselib "user32"
#func MoveWindow "MoveWindow" int,int,int,int,int,int
#func SetWindowLongA "SetWindowLongA" int, int, int
#cfunc GetWindowLongA "GetWindowLongA" int, int
#usecom IOleInPlaceActiveObject "{00000117-0000-0000-C000-000000000046}"
#comfunc IOIPAO_TranslateAccelerator 5 int
#module
#uselib "user32"
#func GetClientRect "GetClientRect" int, int
#func SetWindowLong "SetWindowLongA" int, int, int
#func SetParent "SetParent" int, int
#uselib "gdi32"
#cfunc GetStockObject "GetStockObject" int
#deffunc CreateTab int p1, int p2, int p3, int p4
winobj "systabcontrol32", "", , $52000000 | p4, p1, p2
hTab = objinfo(stat, 2)
sendmsg hTab, $30, GetStockObject(17)
TabID = p3
if TabID = 0 : TabID = 1
dim rect, 4
return hTab
#deffunc InsertTab str p2
pszText = p2 : tcitem = 1, 0, 0, varptr(pszText)
sendmsg hTab, $1307, TabItem, varptr(tcitem)
GetClientRect hTab, varptr(rect)
sendmsg hTab, $1328, , varptr(rect)
bgscr TabID + TabItem, rect.2 - rect.0, rect.3 - rect.1, 2, rect.0, rect.1
SetWindowLong hwnd, -16, $40000000
SetParent hwnd, hTab
TabItem++
return
#global
screen , ginfo(20),ginfo(21),,,,700,500
SetWindowLongA hwnd, -16, GetWindowLongA( hwnd, -16 ) | $10000 | $40000
syscolor 15 : boxf
pos 0,0
CreateTab ginfo(20),ginfo(21), 1
hTabControl = stat
title"CUBE Browser"
FileName = "add.ini" ; ファイル名
exist FileName : if (strsize = -1) { ; FileNameを検索
notesel BUF
noteadd ADD,0,1 ; 0行目にSETの内容を追加
notesave FileName ; FileNameとして保存
noteunsel
}
notesel BUF
noteload FileName
noteget add,0
noteunsel
InsertTab ""
tab_a=""+add
objsize 30,20
pos 0,0:button "←",*go_b
pos 30,0:button "→",*go_f
objsize 60,20
pos 120,0:button "Home",*go_home
pos 60,0:button "Refresh",*go_rel
pos 400,0:button"Move",*navigate
pos 460,0:button"Captcha",*Captcha
pos 520,0:button"Setting",*Setting
pos 0,24
axobj iean,"Shell.Explorer.2",ginfo_winx,ginfo_winy-24
ieean=stat
iean->"Navigate" tab_a
repeat
if iean("Busy") = 0 : break
wait 10
loop
// URL取得
pos 200,0
sdim url,1000
doc = iean("Document")
url = doc("URL")
input url, 200, 22
querycom ioipao, iean, IOleInPlaceActiveObject
gsel :MoveWindow hTabControl, 0, 0, ginfo(12), ginfo(13), 1
gsel 1, 1
gsel
oncmd gosub *wm_size,$05
onkey gosub *key
*onloadfin
stop
*key
if(wparam = 0x08)|(wparam = 0x21)|(wparam = 0x22)|((wparam >= 0x25)&(wparam <= 0x28)){return}
MSG = 0,$100,wparam,lparam,0,0,0
IOIPAO_TranslateAccelerator ioipao, varptr(MSG)
return
*wm_size
gsel
MoveWindow hTabControl, 0, 0, ginfo(12), ginfo(13), 1
prms = ginfo(12),ginfo(13),0,0
gsel 0:gx=ginfo(12):gy=ginfo(13):gsel 1
MoveWindow objinfo(ieean,2), 0, 24, gx-5, gy-24-24, 1
return
*go_home
iean->"Navigate" tab_a:goto *onloadfin
*go_f
iean->"GoForward":goto *onloadfin
*go_b
iean->"GoBack":goto *onloadfin
*go_rel
iean->"Refresh2" 3:goto *onloadfin
*OnClose
gsel 0,-1
delcom iean
end
*navigate
if url = "" :goto *onloadfin
; ページ移動
iean->"Navigate" url
goto *onloadfin
*Setting
screen 2,300,400,8,200,400
pos 20,0:mes"HP URL"
pos 20,20:input add, 200, 22
pos 235,375:button"Save",*secret
stop
*secret
notesel BUF
noteadd ADD,0,1 ; 0行目にSETの内容を追加
notesave FileName ; FileNameとして保存
noteunsel
gsel 2,-1
stop
*Captcha
; デスクトップ画面のサイズでバッファ画面を作成
sx = ginfo_dispx : sy = ginfo_dispy
buffer 2, sx, sy
; デスクトップ画面のデバイスコンテキスト取得
hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL)
; デスクトップ画面の画像をコピー
BitBlt hdc, 0, 0, sx, sy, hdcScreen, 0, 0, SRCCOPY | CAPTUREBLT
; デバイスコンテキスト削除
DeleteDC hdcScreen
; ビットマップファイルとして保存
gsel 0, 1 : dialog "bmp", 17
if stat {
gsel 2 : bmpsave refstr
}
gsel 2,-1
stop
add.iniファイルはHPのアドレスが書かれています。
さまざまなものを取り込んでいるので凄くぐちゃぐちゃです。
指摘、アドバイス、とりあえず何処をどうすべきか等教えてください。
できれば不要な部分を指摘などしていただけると嬉しいです。
個人的URLさえ変わってくれればいいので。
| |
|
2011/6/19(Sun) 15:18:21|NO.39732
わあ見にくい。
凄くぐちゃぐちゃだと分かってるならまず見やすく整理してみてください。
別に煽りとかじゃなく、見やすく整理するだけで原因が解るということも多いです。
|
|
2011/6/19(Sun) 15:53:43|NO.39734
結構みやすくなったかな;
#uselib "gdi32.dll"
#cfunc CreateDC "CreateDCA" sptr,sptr,sptr,int
#func DeleteDC "DeleteDC" int
#func BitBlt "BitBlt" int,int,int,int,int,int,int,int,int
#define NULL 0
#define SRCCOPY 0x00CC0020
#define CAPTUREBLT 0x40000000
#include "obj.as"
#uselib "user32"
#func MoveWindow "MoveWindow" int,int,int,int,int,int
#func SetWindowLongA "SetWindowLongA" int, int, int
#cfunc GetWindowLongA "GetWindowLongA" int, int
#usecom IOleInPlaceActiveObject "{00000117-0000-0000-C000-000000000046}"
#comfunc IOIPAO_TranslateAccelerator 5 int
#module
#uselib "user32"
#func GetClientRect "GetClientRect" int, int
#func SetWindowLong "SetWindowLongA" int, int, int
#func SetParent "SetParent" int, int
#uselib "gdi32"
#cfunc GetStockObject "GetStockObject" int
#deffunc CreateTab int p1, int p2, int p3, int p4
winobj "systabcontrol32", "", , $52000000 | p4, p1, p2
hTab = objinfo(stat, 2)
sendmsg hTab, $30, GetStockObject(17)
TabID = p3
if TabID = 0 : TabID = 1
dim rect, 4
return hTab
#deffunc InsertTab str p2
pszText = p2 : tcitem = 1, 0, 0, varptr(pszText)
sendmsg hTab, $1307, TabItem, varptr(tcitem)
GetClientRect hTab, varptr(rect)
sendmsg hTab, $1328, , varptr(rect)
bgscr TabID + TabItem, rect.2 - rect.0, rect.3 - rect.1, 2, rect.0, rect.1
SetWindowLong hwnd, -16, $40000000
SetParent hwnd, hTab
TabItem++
return
#global
screen , ginfo(20),ginfo(21),,,,700,500
SetWindowLongA hwnd, -16, GetWindowLongA( hwnd, -16 ) | $10000 | $40000
syscolor 15 : boxf
pos 0,0
CreateTab ginfo(20),ginfo(21), 1
hTabControl = stat
title"CUBE Browser"
FileName = "add.ini" ; ファイル名
exist FileName : if (strsize = -1) { ; FileNameを検索
notesel BUF
noteadd ADD,0,1 ; 0行目にSETの内容を追加
notesave FileName ; FileNameとして保存
noteunsel
}
notesel BUF
noteload FileName
noteget add,0
noteunsel
InsertTab ""
tab_a=""+add
objsize 30,20
pos 0,0:button "←",*go_b
pos 30,0:button "→",*go_f
objsize 60,20
pos 120,0:button "Home",*go_home
pos 60,0:button "Refresh",*go_rel
pos 400,0:button"Move",*navigate
pos 460,0:button"Captcha",*Captcha
pos 520,0:button"Setting",*Setting
pos 0,24
axobj iean,"Shell.Explorer.2",ginfo_winx,ginfo_winy-24
ieean=stat
iean->"Navigate" tab_a
repeat
if iean("Busy") = 0 : break
wait 10
loop
// URL取得
pos 200,0
sdim url,1000
doc = iean("Document")
url = doc("URL")
input url, 200, 22
querycom ioipao, iean, IOleInPlaceActiveObject
gsel :MoveWindow hTabControl, 0, 0, ginfo(12), ginfo(13), 1
gsel 1, 1
gsel
oncmd gosub *wm_size,$05
onkey gosub *key
*onloadfin
stop
*key
if(wparam = 0x08)|(wparam = 0x21)|(wparam = 0x22)|((wparam >= 0x25)&(wparam <= 0x28)){return}
MSG = 0,$100,wparam,lparam,0,0,0
IOIPAO_TranslateAccelerator ioipao, varptr(MSG)
return
*wm_size
gsel
MoveWindow hTabControl, 0, 0, ginfo(12), ginfo(13), 1
prms = ginfo(12),ginfo(13),0,0
gsel 0:gx=ginfo(12):gy=ginfo(13):gsel 1
MoveWindow objinfo(ieean,2), 0, 24, gx-5, gy-24-24, 1
return
*go_home
iean->"Navigate" tab_a:goto *onloadfin
*go_f
iean->"GoForward":goto *onloadfin
*go_b
iean->"GoBack":goto *onloadfin
*go_rel
iean->"Refresh2" 3:goto *onloadfin
*OnClose
gsel 0,-1
delcom iean
end
*navigate
if url = "" :goto *onloadfin
; ページ移動
iean->"Navigate" url
goto *onloadfin
*Setting
screen 2,300,400,8,200,400
pos 20,0:mes"HP URL"
pos 20,20:input add, 200, 22
pos 235,375:button"Save",*secret
stop
*secret
notesel BUF
noteadd ADD,0,1 ; 0行目にSETの内容を追加
notesave FileName ; FileNameとして保存
noteunsel
gsel 2,-1
stop
*Captcha
; デスクトップ画面のサイズでバッファ画面を作成
sx = ginfo_dispx : sy = ginfo_dispy
buffer 2, sx, sy
; デスクトップ画面のデバイスコンテキスト取得
hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL)
; デスクトップ画面の画像をコピー
BitBlt hdc, 0, 0, sx, sy, hdcScreen, 0, 0, SRCCOPY | CAPTUREBLT
; デバイスコンテキスト削除
DeleteDC hdcScreen
; ビットマップファイルとして保存
gsel 0, 1 : dialog "bmp", 17
if stat {
gsel 2 : bmpsave refstr
}
gsel 2,-1
stop
| |
|
2011/6/19(Sun) 16:04:12|NO.39735
いんでんと
こめんと
かいぎょう
|
|
2011/6/19(Sun) 20:44:58|NO.39746
/*モジュール内の変数*/
;――――――――――――――――――――――――――――――――――――
; hTab : クラス名sytabcontrol32のウィンドウのハンドル番号
; TabID : 不明
; rect : GetClientRect命令の結果を受け取る為の変数
; pszText : InsertTab命令の引数p2にポインタを与える為の変数
; tcitem : ウィンドウメッセージ$1307に与えるiparam値のポインタ?
; TabItem : ウィンドウメッセージ$1307に与えるwparam値
; ※rect,pszText,tcitemはInserTab命令のローカル変数でもよさそう
; ※ウィンドウメッセージ$1307と$1328、ついでに$05って何ですか?
;――――――――――――――――――――――――――――――――――――
/*グローバル領域の変数*/
;――――――――――――――――――――――――――――――――――――
; hTabControl : CreateTab命令で作った物のハンドル番号
; FileName : "add.ini"って何だろう?
; BUF : "add.ini"の内容(メモリーノートパット命令用)
; ADD(add) : BUFから取得した1行、乃至BUFに編入する1行
; tab_a : 不明、ラベル*go_homeで使用されている
; iean : クラス名Shell.Explorer.2のCOMオブジェクト型変数
; ieean : ieanのオブジェクトID
; doc : =iean("Document")
; url : =doc("URL")
; ioipao : IOIPAO_TranslateAccelerator命令に渡す引数
; MSG : IOIPAO_TranslateAccelerator命令に渡す引数
; prms : 代入されているだけの変数、無くて良いんじゃないのかな
; gx,gy : ウィンドウID0番のクライアント領域サイズ
; sx,sy : ディスプレイの解像度
; hdcScreen : 不明
; ※COMオブジェクトは全く分からないのでこれが限界、ごめんなさい
;――――――――――――――――――――――――――――――――――――
とりあえず、モジュール内の6変数について意味合いを分析してみました。他の方の参考になれば幸いです。
後、少し怖い点が一つ。
/*スクリプトの一部抽出*/
pos 20,20:input add, 200, 22 //ここでは[add]
pos 235,375:button"Save",*secret
stop
*secret
notesel BUF
noteadd ADD,0,1 ; 0行目にSETの内容を追加 //ここでは[ADD]
念の為確認したいのですが、[add]と[ADD]は同じ変数として扱っていますか?HSPは原則として大文字と小文字を区別しないので、もし[add]と[ADD]を別変数のつもりで扱っているのであればエラーの原因になり得ます。
| |
|
2011/6/20(Mon) 15:53:06|NO.39765
・addとADDは一緒です。
・add.iniはホームページアドレスです。
・tab_aはタブです複数ありましたが不具合で消しました。(デザインが良いので残しています)
|
|
2011/6/20(Mon) 20:07:32|NO.39770
inputボックスの内容を変更するには objprm を使用します。
objprm にはオブジェクトidを与える必要があるので、input ボックスを作成時にidを取得しておいてください。
input url, 200, 22
inputid = stat
input ボックスの内容を変更するのは簡単です。
まず、IEのページが変わる際に、新しいページのアドレスを取得してください。
そのあとはこんな感じです。
url = "http://あたらしいページのアドレス"
objprm inputid, url
IEコンポーネントが表示しているページのアドレスを取得する方法は、たぶんご自分で見つけられると思います。
|
|
2011/6/23(Thu) 13:55:36|NO.39820
できました!!皆さんありがとうございました。
|
|