|
![](../images/spacer.gif) |
|
2013/12/17(Tue) 19:42:15|NO.58784
#uselib "user32.dll"
#func WindowFromPoint "WindowFromPoint" sptr,sptr
#func GetClassName "GetClassNameA" int,var,int
#cfunc RegisterWindowMessage "RegisterWindowMessageA" sptr
#func SendMessageTimeout "SendMessageTimeoutA" int,int,int,int,int,int,int
#uselib "oleacc.dll"
#uselib "oleacc.dll"
#func ObjectFromLresult "ObjectFromLresult" int,int,int,int
#uselib "OLE32.DLL"
#func CLSIDFromString "CLSIDFromString" wstr,int
#define IID_IHTMLDocument "{626FC520-A41E-11CF-A731-00A0C9082637}"
dim tGUID,4
sdim szName, 256
input szName,300,20
repeat
WindowFromPoint ginfo_mx,ginfo_my : hw=stat
GetClassName hw,szName, 256
if szName="Internet Explorer_Server"{break}
wait 10
loop
ms = RegisterWindowMessage ("WM_HTML_GETOBJECT")
#define SMTO_ABORTIFHUNG $00000002
SendMessageTimeOut hw,ms,0,0,SMTO_ABORTIFHUNG,1000,varptr(lRes)
CLSIDFromString IID_IHTMLDocument,varptr(tGUID)
newcom pDoc
ObjectFromLresult lRes,varptr(tGUID),0,varptr(pDoc)
a = pDoc("getElementById","get")
b = a("getElementsByTagName", "input")
c = b("item", 0)
objprm 0, c("value")
delcom c
delcom b
delcom a
delcom pDoc
これは
>http://15qm.com/?act=sevin&inm=di
このサイトを開いてからexeを起動し、マウスをそのIEに合わせると
このサイトにあるinput内の文字がexeに表示されると言う感じです。
ただ、このサイトを開かないとexeを開いてもエラー起きてしまいます
a = pDoc("getElementById","get")
こいつがあるかないかを監視し、無ければ何もしない。
あれば取得。
という風にしたいのですが、可能でしょうか?
![](../images/bbs/mark_main.gif)
| |
|
2013/12/17(Tue) 21:02:56|NO.58787
varuseで調べれられたと思います。
|
|
2013/12/17(Tue) 21:51:55|NO.58789
if (varuse(pDoc)=0){
goto *aa
}
で試してみたのですが、やはりページ移動するとエラー起こしてしまいます><
何か方法があるんですかね・・
|
|
2013/12/17(Tue) 22:28:00|NO.58791
a = pDoc("getElementById","get")
if varuse(a)==0:〜
|
|
2013/12/17(Tue) 22:42:35|NO.58792
やはりそれでもエラーしますね。。。
不可能・・なのかなw
|
|
2013/12/18(Wed) 03:56:12|NO.58794
単にあなたが根本的に理解していないだけのような気がします。
以下で一応動作すると思います。
本当はタイトルやURLを調べて対象サイトかどうかをチェックしたり
読み込みが完了しているかのチェックもしないとだめですが。
#uselib "user32.dll"
#func WindowFromPoint "WindowFromPoint" sptr,sptr
#func GetClassName "GetClassNameA" int,var,int
#cfunc RegisterWindowMessage "RegisterWindowMessageA" sptr
#func SendMessageTimeout "SendMessageTimeoutA" int,int,int,int,int,int,int
#uselib "oleacc.dll"
#uselib "oleacc.dll"
#func ObjectFromLresult "ObjectFromLresult" int,int,int,int
#uselib "OLE32.DLL"
#func CLSIDFromString "CLSIDFromString" wstr,int
#define IID_IHTMLDocument "{626FC520-A41E-11CF-A731-00A0C9082637}"
dim tGUID,4
sdim szName, 256
input szName,300,20
*@
repeat
wait 10
WindowFromPoint ginfo_mx,ginfo_my : hw=stat
GetClassName hw,szName, 256
if szName="Internet Explorer_Server"{break}
loop
ms = RegisterWindowMessage ("WM_HTML_GETOBJECT")
#define SMTO_ABORTIFHUNG $00000002
SendMessageTimeOut hw,ms,0,0,SMTO_ABORTIFHUNG,1000,varptr(lRes)
CLSIDFromString IID_IHTMLDocument,varptr(tGUID)
newcom pDoc
ObjectFromLresult lRes,varptr(tGUID),0,varptr(pDoc)
a = pDoc("getElementById","get")
if varuse(a)==0:goto *@b
b = a("getElementsByTagName", "input")
c = b("item", 0)
objprm 0, c("value")
delcom c
delcom b
delcom a
delcom pDoc
![](../images/bbs/mark_main_g.gif)
| |
|
2013/12/18(Wed) 20:30:01|NO.58798
ご返答ありがとうございます。
#uselib "user32.dll"
#func WindowFromPoint "WindowFromPoint" sptr,sptr
#func GetClassName "GetClassNameA" int,var,int
#cfunc RegisterWindowMessage "RegisterWindowMessageA" sptr
#func SendMessageTimeout "SendMessageTimeoutA" int,int,int,int,int,int,int
#uselib "oleacc.dll"
#uselib "oleacc.dll"
#func ObjectFromLresult "ObjectFromLresult" int,int,int,int
#uselib "OLE32.DLL"
#func CLSIDFromString "CLSIDFromString" wstr,int
#define IID_IHTMLDocument "{626FC520-A41E-11CF-A731-00A0C9082637}"
dim tGUID,4
sdim szName, 256
input szName,300,20
*aaaa
repeat
wait 10
WindowFromPoint ginfo_mx,ginfo_my : hw=stat
GetClassName hw,szName, 256
if szName="Internet Explorer_Server"{break}
loop
ms = RegisterWindowMessage ("WM_HTML_GETOBJECT")
#define SMTO_ABORTIFHUNG $00000002
SendMessageTimeOut hw,ms,0,0,SMTO_ABORTIFHUNG,1000,varptr(lRes)
CLSIDFromString IID_IHTMLDocument,varptr(tGUID)
newcom pDoc
ObjectFromLresult lRes,varptr(tGUID),0,varptr(pDoc)
a = pDoc("getElementById","get")
if varuse(a)==0:goto *aaaa
b = a("getElementsByTagName", "input")
c = b("item", 0)
objprm 0, c("value")
delcom c
delcom b
delcom a
delcom pDoc
goto *aaaa
上記のソースを利用させてもらったところ
私にはやはり ”変数の変換に失敗しました。”
とでてしまいます・・
a = pDoc("getElementById","get")
ちょうどこの部分ですね。。
なぜでしょう。。
無知で申し訳ないです。。
![](../images/bbs/mark_main_g.gif)
| |
|
2013/12/18(Wed) 21:59:21|NO.58799
エラーが出る状況はどういうときですか。
|
|
2013/12/18(Wed) 22:42:38|NO.58800
ほかのページでexeを起動し、マウスをIEに合したときですねw
|
|
2013/12/18(Wed) 22:56:26|NO.58801
IEのバージョンにより動作が違うのかも。
これでどうでしょうか。
#uselib "user32.dll"
#func WindowFromPoint "WindowFromPoint" sptr,sptr
#func GetClassName "GetClassNameA" int,var,int
#cfunc RegisterWindowMessage "RegisterWindowMessageA" sptr
#func SendMessageTimeout "SendMessageTimeoutA" int,int,int,int,int,int,int
#uselib "oleacc.dll"
#uselib "oleacc.dll"
#func ObjectFromLresult "ObjectFromLresult" int,int,int,int
#uselib "OLE32.DLL"
#func CLSIDFromString "CLSIDFromString" wstr,int
#define IID_IHTMLDocument "{626FC520-A41E-11CF-A731-00A0C9082637}"
dim tGUID,4
sdim szName, 256
input szName,300,20
*@
repeat
wait 10
WindowFromPoint ginfo_mx,ginfo_my : hw=stat
GetClassName hw,szName, 256
if szName="Internet Explorer_Server"{break}
loop
ms = RegisterWindowMessage ("WM_HTML_GETOBJECT")
#define SMTO_ABORTIFHUNG $00000002
SendMessageTimeOut hw,ms,0,0,SMTO_ABORTIFHUNG,1000,varptr(lRes)
CLSIDFromString IID_IHTMLDocument,varptr(tGUID)
newcom pDoc
ObjectFromLresult lRes,varptr(tGUID),0,varptr(pDoc)
if pDoc("title")!="クイックメール(メール確認)":goto *@b
if pDoc("ReadyState")!="complete" :goto *@b
a = pDoc("getElementById","get")
if varuse(a)==0:goto *@b
b = a("getElementsByTagName", "input")
c = b("item", 0)
objprm 0, c("value")
delcom c
delcom b
delcom a
delcom pDoc
![](../images/bbs/mark_main_g.gif)
| |
|
2013/12/18(Wed) 23:14:20|NO.58802
確かにこのソースだといけましたw
やっぱり、タイトルやらの取得をしないといけないんですねw
とりあえずは解決です!
またわからないことがあれば尋近々尋ねることがあるとおもいますw
|
|