<コールバック関数の使用法>
コールバック関数を使用するには
コールバック関数を使用するにはまず、以下の例のようにコールバック関数を含むクラスオブジェクトを作成します。
VBScript
JScript
API呼び出しは、次の例のように行ってください。
VBScript
JScript
サンプルコード
EnumWindwsの使用例です。サンプルプログラムとして、ダウンロードファイルに含まれています。
VBScript
JScript
実行結果
VBScript
Class EnumWindowsProc
Public Function CallBack(hWnd,lParam)
Dim wName
if IsWindowVisible(hWnd) then
wName=space(256)
if GetWindowText(hWnd,wName,256)<>0 then
wName=left(wName,instr(1,wName+chr(0),chr(0))-1)
T=T+wName+vbcrlf
end if
End If
CallBack=1
End Function
End Class
Public Function CallBack(hWnd,lParam)
Dim wName
if IsWindowVisible(hWnd) then
wName=space(256)
if GetWindowText(hWnd,wName,256)<>0 then
wName=left(wName,instr(1,wName+chr(0),chr(0))-1)
T=T+wName+vbcrlf
end if
End If
CallBack=1
End Function
End Class
JScript
var EnumWindowsProc=new Object();
EnumWindowsProc.CallBack=
function CallBack(hWnd,lParam) {
if (IsWindowVisible(hWnd)) {
if (GetWindowText(hWnd,wName,256)) {
var wName2=wName.str;
wName2=wName2.substring(0,wName2.indexOf("\0",0));
T=T+wName2+"\r\n";
}
}
}
EnumWindowsProc.CallBack=
function CallBack(hWnd,lParam) {
if (IsWindowVisible(hWnd)) {
if (GetWindowText(hWnd,wName,256)) {
var wName2=wName.str;
wName2=wName2.substring(0,wName2.indexOf("\0",0));
T=T+wName2+"\r\n";
}
}
}
- 関数名は必ず『CallBack』。
API呼び出しは、次の例のように行ってください。
VBScript
EnumWindows EnumWindows.CallBack(new EnumWindowsProc,2),0
JScript
EnumWindows(EnumWindows.CallBack(EnumWindowsProc,2),0);
- 『EnumWindows.CallBack()』の2番目の引数には、コールバック関数の引数の数(EnumWindowsProcの場合は2)を指定。
サンプルコード
EnumWindwsの使用例です。サンプルプログラムとして、ダウンロードファイルに含まれています。
VBScript
option explicit
dim EnumWindows,IsWindowVisible,GetWindowText
Sub Declare(obj,dll,proc)
set obj=CreateObject("SfcMini.DynaCall")
obj.Declare dll,proc
End Sub
Declare EnumWindows, "user32","EnumWindows"
Declare IsWindowVisible, "user32","IsWindowVisible"
Declare GetWindowText, "user32","GetWindowTextA"
Dim T
T=""
EnumWindows EnumWindows.CallBack(new EnumWindowsProc,2),0
MsgBox T
Class EnumWindowsProc
Public Function CallBack(hWnd,lParam)
Dim wName
if IsWindowVisible(hWnd) then
wName=space(256)
if GetWindowText(hWnd,wName,256)<>0 then
wName=left(wName,instr(1,wName+chr(0),chr(0))-1)
T=T+wName+vbcrlf
end if
End If
CallBack=1
End Function
End Class
dim EnumWindows,IsWindowVisible,GetWindowText
Sub Declare(obj,dll,proc)
set obj=CreateObject("SfcMini.DynaCall")
obj.Declare dll,proc
End Sub
Declare EnumWindows, "user32","EnumWindows"
Declare IsWindowVisible, "user32","IsWindowVisible"
Declare GetWindowText, "user32","GetWindowTextA"
Dim T
T=""
EnumWindows EnumWindows.CallBack(new EnumWindowsProc,2),0
MsgBox T
Class EnumWindowsProc
Public Function CallBack(hWnd,lParam)
Dim wName
if IsWindowVisible(hWnd) then
wName=space(256)
if GetWindowText(hWnd,wName,256)<>0 then
wName=left(wName,instr(1,wName+chr(0),chr(0))-1)
T=T+wName+vbcrlf
end if
End If
CallBack=1
End Function
End Class
JScript
var EnumWindows=WScript.CreateObject("SfcMini.DynaCall");
var IsWindowVisible=WScript.CreateObject("SfcMini.DynaCall");
var GetWindowText=WScript.CreateObject("SfcMini.DynaCall");
EnumWindows.Declare("user32","EnumWindows");
IsWindowVisible.Declare("user32","IsWindowVisible");
GetWindowText.Declare("user32","GetWindowTextA");
var wName=WScript.CreateObject("SfcMini.Structure");
wName("str","String*256");
var T="";
var EnumWindowsProc=new Object();
EnumWindowsProc.CallBack=
function CallBack(hWnd,lParam) {
if (IsWindowVisible(hWnd)) {
if (GetWindowText(hWnd,wName,256)) {
var wName2=wName.str;
wName2=wName2.substring(0,wName2.indexOf("\0",0));
T=T+wName2+"\r\n";
}
}
}
EnumWindows(EnumWindows.CallBack(EnumWindowsProc,2),0);
WScript.Echo(T);
var IsWindowVisible=WScript.CreateObject("SfcMini.DynaCall");
var GetWindowText=WScript.CreateObject("SfcMini.DynaCall");
EnumWindows.Declare("user32","EnumWindows");
IsWindowVisible.Declare("user32","IsWindowVisible");
GetWindowText.Declare("user32","GetWindowTextA");
var wName=WScript.CreateObject("SfcMini.Structure");
wName("str","String*256");
var T="";
var EnumWindowsProc=new Object();
EnumWindowsProc.CallBack=
function CallBack(hWnd,lParam) {
if (IsWindowVisible(hWnd)) {
if (GetWindowText(hWnd,wName,256)) {
var wName2=wName.str;
wName2=wName2.substring(0,wName2.indexOf("\0",0));
T=T+wName2+"\r\n";
}
}
}
EnumWindows(EnumWindows.CallBack(EnumWindowsProc,2),0);
WScript.Echo(T);
実行結果
