自動化ツールUWSC使いよ集まれ21

■ このスレッドは過去ログ倉庫に格納されています
2018/08/09(木) 21:42:11.79ID:8c1pTbyl0
Windowsの作業を自動化するツール
フリーソフト版とシェアウェア版の2種類がある
ttp://www.uwsc.info/download.html

●UWSC 掲示板(※作成依頼掲示版ではありません)
 質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること
 上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi
http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&;mode=past

●UWSC - Wikipedia
http://ja.wikipedia.org/wiki/UWSC

●使い方・基礎解説学習サイト
http://uwsc.g.hatena.ne.jp/cx20/20100131/1264938584
http://www.confrage.com/uwsc/
http://necro.jp/dev/uwsc/
http://park14.wakwak.com/~simizu/uwsc/fruwsc.html
http://canal22.org/
http://big.tm.land.to/handbook/uwsc.htm
http://www.game-rev.com/review/gameut/uwsc.html

●スクリプトテンプレサイト
http://izagne.com/uwsc/
http://scripts.web.fc2.com/
http://www.nagomi-jp.net/~liners/
http://nem.symphonic-net.com/uwsct/0610uwsct.html
http://siromasa.digi2.jp/uwsc/
http://iriyak.adam.ne.jp/uwsc.html
※前スレ
自動化ツールUWSC使いよ集まれ20
http://egg.5ch.net/test/read.cgi/software/1515077979/
2018/10/01(月) 02:15:40.11ID:vl/DTYSO0
>>309 で挙がってる関数に関してですが
関数定義と、関数がどのDLLにあるかは
https://msdn.microsoft.com/ja-jp/library/cc429126.aspx
https://msdn.microsoft.com/ja-jp/library/cc429605.aspx
https://msdn.microsoft.com/ja-jp/library/cc429264.aspx
に書いてあります
DLLは全部 Kernel32.dll

引数に度々構造体へのポインタが登場しますが
構造体の定義は
LPXXX ならXXXのロングポインタなので調べる構造体はXXX
どの構造体もググれば出て来ます。
引数には
def_dll joyGetPos(uint, {uint, uint, uint, uint}):uint:winmm
のように{}に展開して書くだけです。
挙がってる関数で使われる構造体の中には特別変わった型はないのですべてコピペでOKです

その他の関数の引数にしても宣言の型をほぼそのままコピペできます

問題になりそうなのは3点です

次レスへ
つづく
2018/10/01(月) 02:19:07.04ID:vl/DTYSO0
問題になりそうなのは3点です

1つめは
UWSC で DEF_DLL の説明にない型をどうするか
具体的には HANDLE で、これはポインタですがLONGで問題ないと思います
(心配ならDWORDに)
LPCTSTRは 変更されない文字列へのポインタでstringです

2つ目は
CreateFile()が実際にはDLLに存在しないことです。
なのでDEF_DLL CreateFile(... はエラーになります。
文字列や文字列のバッファを引数として持つ関数functionの実態は
ASCII/CP932用の functionA()とUTF-16LE用の functionW()です。
つまりCreateFile()として実際にあるのは
CreateFileA()とCreateFileW()です
これはVisual Studio などがあれば dumpbin /exports DLL名で確認できます。
ない場合は https://forest.watch.impress.co.jp/docs/review/748651.html のようなもので

3つ目は
ReadFile(),WriteFile()の
LPVOID をどうするかです
文字しかやりとりされないのであれば
DEF_DLL ReadFile(LONG, Var STRING, DWORD, Var DWORD,{DWORD,DWORD,DWORD,DWORD,DWORD}):bool:Kernel32.dll
DEF_DLL WriteFile(LONG, STRING, DWORD, Var DWORD,{DWORD,DWORD,DWORD,DWORD,DWORD}):bool:Kernel32.dll
のようにすれば楽なような気がしますが、
CRLFのような制御文字などがあることも考えると使えなさそうです
また0x00のようなデータがあればそこで切れてしまいます(たぶん)。
DEF_DLL ReadFile(LONG, Var BYTE, DWORD, Var DWORD,{DWORD,DWORD,DWORD,DWORD,DWORD}):bool:Kernel32.dll
DEF_DLL WriteFile(LONG, BYTE, DWORD, Var DWORD,{DWORD,DWORD,DWORD,DWORD,DWORD}):bool:Kernel32.dll
とかで1バイトずつ扱うのが安全なのかなという気がします
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

ニューススポーツなんでも実況