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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1215
ゆとりasからdllにしたとき6解決


ゆとり

リンク

2013/12/15(Sun) 19:23:40|NO.58756

何度も申し訳ございません。

#include "user32.as"

をdllにしてみたのですが "hw = stat" と "ms = stat" でエラーが起きてしまいます dllにするときはどのようにしたらよいでしょうか?
#uselib "user32.dll"
#func WindowFromPoint "WindowFromPoint" sptr,sptr
#func GetClassName "GetClassNameA" int, var, int
#cfunc RegisterWindowMessage "RegisterWindowMessageA" int
#cfunc SendMessageTimeout "SendMessageTimeoutA" int,int,int,int,int,int,int
#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
input szName,300,20

repeat
WindowFromPoint ginfo_mx,ginfo_my :hw =stat
GetClassName hw, varptr.szName, 256
if szName="Internet Explorer_Server"{ break}
wait 1
loop
repeat
RegisterWindowMessage "WM_HTML_GETOBJECT" : ms=stat
//dialog stat

#define SMTO_ABORTIFHUNG $00000002
SendMessageTimeOut hw,ms,0,0,SMTO_ABORTIFHUNG,1000,varptr(lRes)
//dialog stat

CLSIDFromString IID_IHTMLDocument,varptr(tGUID)

newcom pDoc
ObjectFromLresult lRes,varptr(tGUID),0,varptr(pDoc)
//dialog stat



この記事に返信する


(’’

リンク

2013/12/15(Sun) 19:35:39|NO.58758

まずこちらでそのエラーが再現できるスプリクトを提示して下さい(できれば最低限に削った上で)
でないと答えるのも難しいです



ゆとり

リンク

2013/12/15(Sun) 19:57:23|NO.58760

#uselib "user32.dll"
#func WindowFromPoint "WindowFromPoint" sptr,sptr #func GetClassName "GetClassNameA" int, var, int #cfunc RegisterWindowMessage "RegisterWindowMessageA" int #cfunc 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, varptr.szName, 256 if szName="Internet Explorer_Server"{dialog "ヒット": break} wait 10 loop RegisterWindowMessage "WM_HTML_GETOBJECT" : ms=stat #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

すみませんw
#include "user32.as" だと上手く動作するんですが
#uselib "user32.dll" にするとエラーがおきてしまいます。

これは
>http://15qm.com/?act=sevin&inm=di
このサイトを開いてからexeを起動し、マウスをそのIEに合わせると
このサイトにあるinput内の文字がexeにmes表示されると言う感じなのです。

ただ .as を .dllにして使用したいんですが・・w



kanahiron

リンク

2013/12/15(Sun) 21:54:38|NO.58765

なんで命令を勝手に関数にしているんでしょうか
直したら正常に動作することを確認しましたよ


自分はChromeを使っていますがIE専用なのはいただけないです…



MillkeyStars

リンク

2013/12/15(Sun) 23:20:03|NO.58769


GetClassName hw, varptr.szName, 256
なんだけど、命令登録時に第二引数を変数で指定しろって登録してるよね?
それを数値で指定すればエラーになる。
それを文字列指定(ポインタ)の sptr に直そう。

#func / cfunc の登録形式(命令・関数)どちらの場合も、引数の型指定は、同じです。
戻り値の受け取り方法が違うだけで。

※例
命令の場合( func )

#func WindowFromPoint "WindowFromPoint" sptr,sptr //上記で登録した場合の戻り値は WindowFromPoint "ナハナハ","ヘナヘナ" hw = stat //ここで戻り値をstatから取得している。

で、今度は関数の場合

#cfunc WindowFromPoint "WindowFromPoint" sptr,sptr //上記で登録した場合の戻り値は hw = WindowFromPoint("ナハナハ","ヘナヘナ") //普通の計算の代入みたいに、直接変数へ(stat 経由せず)格納できるようになる。

どちらの方法でも、きちんとした書式で書けば正常に利用が可能ですので、がんばって!
あ、あと、同じスレッドがあるみたいだから、古いのは消そう。



MillkeyStars

リンク

2013/12/15(Sun) 23:39:19|NO.58771

修正と修正箇所コメントスクリプト

#uselib "user32.dll" #cfunc WindowFromPoint "WindowFromPoint" sptr,sptr //←戻り値が必要だけなので関数化 #func GetClassName "GetClassNameA" int,sptr, int //←第二引数を文字列ポインタとして指定 #cfunc RegisterWindowMessage "RegisterWindowMessageA" int #func SendMessageTimeout "SendMessageTimeoutA" int,int,int,int,int,int,int //戻り値が必要ないので命令に変更 #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 hw = WindowFromPoint(ginfo_mx,ginfo_my) GetClassName hw,szName,256 //←第二引数は直接 szName の変数を指定 if szName="Internet Explorer_Server"{ dialog "ヒット" : 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



ゆとり

リンク

2013/12/15(Sun) 23:50:01|NO.58772

ご親切にありがとうございます笑

なぜかでもexe内のinputにアドレスが取得されていなかったので。。
ちょっと自分なりに書いてみてた物なんですがw

#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

一応これでできましたw
いろいろとありがとうございますw



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