

DLL初心者のサムです。
この記事あくまでも、私の理解してることなので、間違って理解していることミスも多々あると思いますのでご指摘ください。
Autoitのダウンロード先:
「DLL」とは ダイナミックリンクライブラリの略=なにそれ
実行ファイルの構造は:
(1)EXEファイルのみで実行するもの
(2)EXEファイル+Dllファイル セットで動くもの
がある。

DLLは使い回しができる、共通部品として他のアプリも使うことができる。
User2.Dllを使うには、「DllCall ()」関数を使う。
とにかく、引数(パラメータ)難しいな
DllCall ( “dll”, “return type”, “function” [, type1, param1 [, type n, param n]] )
アルファベット文字列は、””で囲まないといけない。
例) int > “int”
例) int > “int”
MessageBox 説明サイトにあるMsgBoxを表示するコード:
DllCall("user32.dll", "int", "MessageBox", _ ;intではない "int"
"hwnd", 0, _ ;NULL を指定すると、オーナーウィンドウを持たないメッセージボックス
"str", "sam", _ ;表示したいメッセージ
"str", "555", _ ;タイトル
"int", 0) ;MsgBoxのスタイル(Flag) 0=OKボタンだけ
* AutoitでNullは「0」

スタイル(Flag)の説明サイト:
結局、user32.dllの詳細を調べそれが理解できなければ、初心者には使えそうにない。
CloseWindow ウィンドウを最小化
DllCall(“user32.dll”, “int”, “CloseWindow”, _
“hwnd”, 0x000000000004099E) ;ウィンドウのハンドル
最小化したいウィンドウのハンドルは、Autoitに付属してる「Au3Info_x64」で取得できます。

赤枠内、ダブルクリックすれば内容コピーできます。
Autoitでは、戻り値にすべてのパラメータの値が配列で戻るようです。
#include <array.au3> $arrResult = DllCall("user32.dll", "int", "CloseWindow", _ "hwnd", 0x000000000004099E) ;ウィンドウのハンドル _ArrayDisplay($arrResult)

GetWindowText (Windowのタイトルを取得) user32.dll
#include <array.au3> $arrResult = DllCall("user32.dll", "int", "GetWindowText", _ "hwnd", 0x0000000000030956, _ ;ハンドル "str", "", _ ;タイトルが入る "int", 32768) ;?? If @error <> 0 Then MsgBox("","",@error) EndIf _ArrayDisplay($arrResult)

DllCall 使い方間違っていても、エラーを返してくれない
#include <array.au3>
$arrResult = DllCall("user32.dl", "int", "GetWindowText", _
"hwnd", 0x0000000000030956, _
"str", "", _
"int", 32768)
_ArrayDisplay($arrResult)
DLL名間違えているのに、何も言ってくれません。動いてすぐに終わるだけ
DllCall()の次に次のコードを入れて下さい。
If @error <> 0 Then MsgBox("","",@error) EndIf
@error: | 1 = DLLファイルを使用できません、 2 =不明な「戻り値の型」、 3 = DLLファイルに「関数」が見つかりません、 4 =パラメータの数が正しくありません、 5 =パラメータが正しくありません。 |
この場合: 1が表示されます。

Kernel32.Dllを使うには
GetCurrentProcessId 現在のプロセスID
プロセスID 何?
$result = DllCall("Kernel32.dll", "Dword", "GetCurrentProcessId") If @error <> 0 Then MsgBox("","",@error) EndIf MsgBox("","",$result[0])
コメント