Kuroda Software Service
WIN32APIの利用
  [サイトマップ]

コンテンツ内メニュー

表示モード 全項表示  部分表示



マークの色と認証の関係

一般公開

無料認証

購入認証


認証についての説明

無料アカウント作成フォーム

有料ページ購入フォーム


ほかのコンテンツトップページ

WIN32APIの利用

WIN32オブジェクトにはWIN32API関数が用意されています。

         WIN32オブジェクトのWIN32API

WIN32オブジェクトには、スクリプト機能を拡張するためにWIN32API関数がいくつか装備されています。特に注釈がない関数の引数は、本物と同じですからMSDN等をご覧ください。尚スクリプトスコープでのHWNDは、アドレス値の長整数です。NULLは0と表現することに注意してください。

基本API系

    _variant_t GetLastError()

    void SetLastError(long n)

    _variant_t FormatMessage(long n) //エラーコードからエラー文字列を返す

    void Sleep(DWORD t)

    _variant_t SendMessage(long h, long msg, long wp, long lp)

    _variant_t GetCommandLine()

    _variant_t GetFileSize(BSTR path)

    _variant_t CoLoadLibrary(BSTR path, BSTR func) //DLLの利用で解説

Window操作系

    _variant_t IsWindow(long h)

    _variant_t IsWindowVisible(long h)

    _variant_t FindWindow(BSTR cname, VARIANT wname)

    _variant_t FindWindowEx(long h1, long h2, BSTR cname, VARIANT wname)

    _variant_t ShowWindow(long h, int f)

    _variant_t GetActiveWindow()

    _variant_t SetActiveWindow(long h)

    _variant_t SetForegroundWindow(long h)

    _variant_t GetWindowLong(long h, long index)

    _variant_t SetWindowLong(long h, long index, long data)

    _variant_t GetSystemMenu(long h, bool b)

    _variant_t SetWindowPos(long h1,long h2,long x,long y,long cx,long cy,long flg)

    _variant_t SetLayeredWindowAttributes(long h, long key, long alpha, long flg)

    _variant_t AnimateWindow(long h, long time, long flg)

コモンダイアログ系

    _variant_t GetOpenFileName(long hwnd, BSTR title, BSTR filter, BSTR root, BSTR name ,long flg)

    _variant_t GetSaveFileName(long hwnd, BSTR title, BSTR filter, BSTR root, BSTR name ,long flg)

 

    ファイルダイアログの呼び出し例

    var Path = WIN32.GetOpenFileName(HWND, "開く", "ALL(*.*)\\0*.*\\0", "c:\\", "hoge.txt", 0);

 

         SetLayeredWindowAttributes及びAnimateWindowを使用したウインドウ操作のコードを示します。下記HTMLコードはButton3.htmとしてサンプルフォルダに存在します。

<html>

<head>

<hta:application id="HTA" icon="icon.ico">

<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">

<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">

<title>Button3</title>

</head>

<body>

<input type="button" value="Button" ID="Button1">

<input type="button" value="Button" ID="Button2">

<input type="button" value="Button" ID="Button3">

</body>

</html>

         下記JScriptコードはWindows.jsとしてサンプルフォルダに存在します。

var WIN32;

//#define WIN32 //

WIN32 = new ActiveXObject("HTABOX.Application");

WIN32.ScriptFullName = WSH.ScriptFullName;

//#undef WIN32

var DIR  = WIN32.GetScriptDirectory();

var HTA  = WIN32.CreateHtaWindow(DIR + "\\button3.htm");

var SCR  = HTA.Script;

var HWND1 = HTA.FraHwnd;

var HWND2 = HTA.DocHwnd;

 

var GWL_STYLE   = -16;

var GWL_EXSTYLE = -20;

 

//GWL_STYLE

var WS_OVERLAPPED       = 0x00000000;

var WS_POPUP            = 0x80000000;

var WS_CHILD            = 0x40000000;

var WS_MINIMIZE         = 0x20000000;

var WS_VISIBLE          = 0x10000000;

var WS_DISABLED         = 0x08000000;

var WS_CLIPSIBLINGS     = 0x04000000;

var WS_CLIPCHILDREN     = 0x02000000;

var WS_MAXIMIZE         = 0x01000000;

var WS_CAPTION          = 0x00C00000;     /* WS_BORDER | WS_DLGFRAME  */

var WS_BORDER           = 0x00800000;

var WS_DLGFRAME         = 0x00400000;

var WS_VSCROLL          = 0x00200000;

var WS_HSCROLL          = 0x00100000;

var WS_SYSMENU          = 0x00080000;

var WS_THICKFRAME       = 0x00040000;

var WS_GROUP            = 0x00020000;

var WS_TABSTOP          = 0x00010000;

 

var WS_MINIMIZEBOX      = 0x00020000;

var WS_MAXIMIZEBOX      = 0x00010000;

 

var WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX;

var WS_POPUPWINDOW      = WS_POPUP|WS_BORDER|WS_SYSMENU;

var WS_CHILDWINDOW      = WS_CHILD;

 

var WS_TILED            = WS_OVERLAPPED;

var WS_ICONIC           = WS_MINIMIZE;

var WS_SIZEBOX          = WS_THICKFRAME;

var WS_TILEDWINDOW      = WS_OVERLAPPEDWINDOW;

 

 

//GWL_EXSTYLE

var WS_EX_DLGMODALFRAME     = 0x00000001;

var WS_EX_NOPARENTNOTIFY    = 0x00000004;

var WS_EX_TOPMOST           = 0x00000008;

var WS_EX_ACCEPTFILES       = 0x00000010;

var WS_EX_TRANSPARENT       = 0x00000020;

var WS_EX_MDICHILD          = 0x00000040;

var WS_EX_TOOLWINDOW        = 0x00000080;

var WS_EX_WINDOWEDGE        = 0x00000100;

var WS_EX_CLIENTEDGE        = 0x00000200;

var WS_EX_CONTEXTHELP       = 0x00000400;

 

var WS_EX_RIGHT             = 0x00001000;

var WS_EX_LEFT              = 0x00000000;

var WS_EX_RTLREADING        = 0x00002000;

var WS_EX_LTRREADING        = 0x00000000;

var WS_EX_LEFTSCROLLBAR     = 0x00004000;

var WS_EX_RIGHTSCROLLBAR    = 0x00000000;

 

var WS_EX_CONTROLPARENT     = 0x00010000;

var WS_EX_STATICEDGE        = 0x00020000;

var WS_EX_APPWINDOW         = 0x00040000;

 

 

var WS_EX_OVERLAPPEDWINDOW  = WS_EX_WINDOWEDGE|WS_EX_CLIENTEDGE;

var WS_EX_PALETTEWINDOW     = WS_EX_WINDOWEDGE|WS_EX_TOOLWINDOW|WS_EX_TOPMOST;

 

 

var WS_EX_LAYERED           = 0x00080000; //For SetLayeredWindowAttributes

 

//SetWindowPos

var HWND_TOP        =  0;

var HWND_BOTTOM     =  1;

var HWND_TOPMOST    = -1;

var HWND_NOTOPMOST  = -2;

 

 

 

var SWP_NOSIZE          = 0x0001;

var SWP_NOMOVE          = 0x0002;

var SWP_NOZORDER        = 0x0004;

var SWP_NOREDRAW        = 0x0008;

var SWP_NOACTIVATE      = 0x0010;

var SWP_FRAMECHANGED    = 0x0020; /* The frame changed: send WM_NCCALCSIZE */

var SWP_SHOWWINDOW      = 0x0040;

var SWP_HIDEWINDOW      = 0x0080;

var SWP_NOCOPYBITS      = 0x0100;

var SWP_NOOWNERZORDER   = 0x0200; /* Don't do owner Z ordering */

var SWP_NOSENDCHANGING  = 0x0400; /* Don't send WM_WINDOWPOSCHANGING */

 

var SWP_DRAWFRAME       = SWP_FRAMECHANGED;

var SWP_NOREPOSITION    = SWP_NOOWNERZORDER;

 

var SWP_DEFERERASE      = 0x2000;

var SWP_ASYNCWINDOWPOS  = 0x4000;

 

//ShowWindow

var SW_HIDE             = 0;

var SW_SHOWNORMAL       = 1;

var SW_NORMAL           = 1;

var SW_SHOWMINIMIZED    = 2;

var SW_SHOWMAXIMIZED    = 3;

var SW_MAXIMIZE         = 3;

var SW_SHOWNOACTIVATE   = 4;

var SW_SHOW             = 5;

var SW_MINIMIZE         = 6;

var SW_SHOWMINNOACTIVE  = 7;

var SW_SHOWNA           = 8;

var SW_RESTORE          = 9;

var SW_SHOWDEFAULT      = 10;

var SW_FORCEMINIMIZE    = 11;

var SW_MAX              = 11;

 

 

//SetLayeredWindowAttributes

//SetLayeredWindowAttributes色指定は0x00BBGGRRであることに注意

 

var LWA_COLORKEY    = 0x00000001;

var LWA_ALPHA       = 0x00000002;

 

//AnimateWindow

var AW_HOR_POSITIVE             = 0x00000001;

var AW_HOR_NEGATIVE             = 0x00000002;

var AW_VER_POSITIVE             = 0x00000004;

var AW_VER_NEGATIVE             = 0x00000008;

var AW_CENTER                   = 0x00000010;

var AW_HIDE                     = 0x00010000;

var AW_ACTIVATE                 = 0x00020000;

var AW_SLIDE                    = 0x00040000;

var AW_BLEND                    = 0x00080000;

 

 

function test4()

{

    WIN32.SetWindowLong(HWND1, GWL_EXSTYLE, WS_EX_LAYERED);

    WIN32.SetLayeredWindowAttributes(HWND1, 0x00FFFFFF, 0, LWA_COLORKEY);

}

 

function test5()

{

    WIN32.SetWindowLong(HWND1, GWL_EXSTYLE, WS_EX_LAYERED);

    WIN32.SetLayeredWindowAttributes(HWND1, 0, 0xD0, LWA_ALPHA);

}

function test6()

{

    //AnimateWindow実施時WS_EX_LAYEREDがあると正常動作しないことに注意

    WIN32.SetWindowLong(HWND1, GWL_EXSTYLE, 0);

    WIN32.AnimateWindow(HWND2, 1000, AW_CENTER|AW_HIDE);

    WIN32.Sleep(500);

    WIN32.AnimateWindow(HWND2, 1000, AW_CENTER|AW_ACTIVATE);

}

 

SCR.Button1.onclick = test4;

SCR.Button2.onclick = test5;

SCR.Button3.onclick = test6;

 

HTA.Show(); WIN32.WiteForWindowVisible(HWND1);

WIN32.MsgBox("正常終了")

 

お問い合わせ
©クロダ ソフトウェア サービス programmed by hidebou