XREA.COM Logo XREA.COM Ad

旧雑記サルベージ

70管理人 ★:06/09/06 17:32 ID:???
2005年05月14日
■AutoHotkey(http://www.autohotkey.com/)1.0.33
DLL呼び出し機能が追加された模様。

とりあえず、引数を与えて返り値を得る基本的な機能は備わっている。
DMonkeyのDynaCallと違い、整数や浮動小数点値などの変数へのポインタを直接送ることができる。(DMonkeyの場合、要素が整数値一つのStructオブジェクトを作成して送ったりする必要があった)
構造体を扱うことはできない模様。
代わりに文字列としてメモリ領域を確保して、Transformコマンドなどでデータの書き換え・読み出しを行えば可能かと思ったが、文字列のヌル文字以降が削除されてしまったり、構造体メンバに文字列や構造体へのポインタが含まれる場合に対応できなかったりしてダメっぽい。


とりあえず、プロセスIDを指定して実行ファイルパスを得る関数を作った。
getLastError()
{
    return DllCall("GetLastError")
}
getProcessHandle(pid)
{
    return DllCall("OpenProcess","Int",0x001F0FFF,"Int",0,"Int",pid,"Int")
}
getProcessExeName(pid)
{
    hModule=0
    dwNeed=0
    l=0
    max:=VarSetCapacity(s,256)
    hProcess:=getProcessHandle(pid)
    if(DllCall("psapi\EnumProcessModules","Int",hProcess,"Int*",hModule,"Int",4,"UInt*",dwNeed,"Int")0)
    {
        l:=DllCall("psapi\GetModuleFileNameExA","Int",hProcess,"Int",hModule,"Str",s,"Int",max,"Int")
    }
    StringLeft,s,s,l
    DllCall("psapi\CloseProcess","Int",hProcess)
    return s
}


とりあえず説明を一部日本語化した。
DllCall()関数(http://lukewarm.s101.xrea.com/commands/DllCall.htm)
131KB
名前: E-mail:
ファイル:
0ch BBS 2005-10-08