BASEBROWSERDATAXP
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| _hwnd | HWND | 8/4 | +0 | +0 | ブラウザーのメインウィンドウのハンドル。 |
| _ptl | ITravelLog* | 8/4 | +8 | +4 | 履歴(トラベルログ)管理 ITravelLog へのポインタ。 |
| _phlf | IHlinkFrame* | 8/4 | +16 | +8 | ハイパーリンクフレーム IHlinkFrame へのポインタ。 |
| _pautoWB2 | IWebBrowser2* | 8/4 | +24 | +12 | 自動化用 IWebBrowser2 インターフェイスへのポインタ。 |
| _pautoEDS | IExpDispSupportXP* | 8/4 | +32 | +16 | ディスパッチサポート IExpDispSupportXP へのポインタ。 |
| _pautoSS | IShellService* | 8/4 | +40 | +20 | シェルサービス IShellService へのポインタ。 |
| _eSecureLockIcon | INT | 4 | +48 | +24 | セキュリティ(鍵)アイコンの状態を示す値。 |
| _bitfield | DWORD | 4 | +52 | +28 | 各種ブール状態をまとめたビットフィールド。 |
| _uActivateState | DWORD | 4 | +56 | +32 | ビューのアクティブ化状態を示す値。 |
| _pidlViewState | ITEMIDLIST* | 8/4 | +64 | +36 | ビュー状態に対応するアイテムのPIDL。 |
| _pctView | IOleCommandTarget* | 8/4 | +72 | +40 | ビューのコマンドターゲット IOleCommandTarget へのポインタ。 |
| _pidlCur | ITEMIDLIST* | 8/4 | +80 | +44 | 現在表示中のフォルダーのPIDL。 |
| _psv | IShellView* | 8/4 | +88 | +48 | 現在の IShellView へのポインタ。 |
| _psf | IShellFolder* | 8/4 | +96 | +52 | 現在の IShellFolder へのポインタ。 |
| _hwndView | HWND | 8/4 | +104 | +56 | 現在のビューウィンドウのハンドル。 |
| _pszTitleCur | LPWSTR | 8/4 | +112 | +60 | 現在のビューのタイトル文字列。 |
| _pidlPending | ITEMIDLIST* | 8/4 | +120 | +64 | 遷移中(保留)のフォルダーのPIDL。 |
| _psvPending | IShellView* | 8/4 | +128 | +68 | 遷移中の IShellView へのポインタ。 |
| _psfPending | IShellFolder* | 8/4 | +136 | +72 | 遷移中の IShellFolder へのポインタ。 |
| _hwndViewPending | HWND | 8/4 | +144 | +76 | 遷移中のビューウィンドウのハンドル。 |
| _pszTitlePending | LPWSTR | 8/4 | +152 | +80 | 遷移中のビューのタイトル文字列。 |
| _fIsViewMSHTML | BOOL | 4 | +160 | +84 | 現在のビューが MSHTML かどうかを示す真偽値。 |
| _fPrivacyImpacted | BOOL | 4 | +164 | +88 | プライバシーに影響があるかを示す真偽値。 |
| _clsidView | GUID | 16 | +168 | +92 | 現在のビューのCLSID。 |
| _clsidViewPending | GUID | 16 | +184 | +108 | 遷移中のビューのCLSID。 |
| _hwndFrame | HWND | 8/4 | +200 | +124 | フレームウィンドウのハンドル。 |
各言語での定義
#include <windows.h>
// BASEBROWSERDATAXP (x64 208 / x86 128 バイト)
typedef struct BASEBROWSERDATAXP {
HWND _hwnd;
ITravelLog* _ptl;
IHlinkFrame* _phlf;
IWebBrowser2* _pautoWB2;
IExpDispSupportXP* _pautoEDS;
IShellService* _pautoSS;
INT _eSecureLockIcon;
DWORD _bitfield;
DWORD _uActivateState;
ITEMIDLIST* _pidlViewState;
IOleCommandTarget* _pctView;
ITEMIDLIST* _pidlCur;
IShellView* _psv;
IShellFolder* _psf;
HWND _hwndView;
LPWSTR _pszTitleCur;
ITEMIDLIST* _pidlPending;
IShellView* _psvPending;
IShellFolder* _psfPending;
HWND _hwndViewPending;
LPWSTR _pszTitlePending;
BOOL _fIsViewMSHTML;
BOOL _fPrivacyImpacted;
GUID _clsidView;
GUID _clsidViewPending;
HWND _hwndFrame;
} BASEBROWSERDATAXP;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct BASEBROWSERDATAXP
{
public IntPtr _hwnd;
public IntPtr _ptl;
public IntPtr _phlf;
public IntPtr _pautoWB2;
public IntPtr _pautoEDS;
public IntPtr _pautoSS;
public int _eSecureLockIcon;
public uint _bitfield;
public uint _uActivateState;
public IntPtr _pidlViewState;
public IntPtr _pctView;
public IntPtr _pidlCur;
public IntPtr _psv;
public IntPtr _psf;
public IntPtr _hwndView;
public IntPtr _pszTitleCur;
public IntPtr _pidlPending;
public IntPtr _psvPending;
public IntPtr _psfPending;
public IntPtr _hwndViewPending;
public IntPtr _pszTitlePending;
[MarshalAs(UnmanagedType.Bool)] public bool _fIsViewMSHTML;
[MarshalAs(UnmanagedType.Bool)] public bool _fPrivacyImpacted;
public Guid _clsidView;
public Guid _clsidViewPending;
public IntPtr _hwndFrame;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure BASEBROWSERDATAXP
Public _hwnd As IntPtr
Public _ptl As IntPtr
Public _phlf As IntPtr
Public _pautoWB2 As IntPtr
Public _pautoEDS As IntPtr
Public _pautoSS As IntPtr
Public _eSecureLockIcon As Integer
Public _bitfield As UInteger
Public _uActivateState As UInteger
Public _pidlViewState As IntPtr
Public _pctView As IntPtr
Public _pidlCur As IntPtr
Public _psv As IntPtr
Public _psf As IntPtr
Public _hwndView As IntPtr
Public _pszTitleCur As IntPtr
Public _pidlPending As IntPtr
Public _psvPending As IntPtr
Public _psfPending As IntPtr
Public _hwndViewPending As IntPtr
Public _pszTitlePending As IntPtr
<MarshalAs(UnmanagedType.Bool)> Public _fIsViewMSHTML As Boolean
<MarshalAs(UnmanagedType.Bool)> Public _fPrivacyImpacted As Boolean
Public _clsidView As Guid
Public _clsidViewPending As Guid
Public _hwndFrame As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class BASEBROWSERDATAXP(ctypes.Structure):
_fields_ = [
("_hwnd", ctypes.c_void_p),
("_ptl", ctypes.c_void_p),
("_phlf", ctypes.c_void_p),
("_pautoWB2", ctypes.c_void_p),
("_pautoEDS", ctypes.c_void_p),
("_pautoSS", ctypes.c_void_p),
("_eSecureLockIcon", ctypes.c_int),
("_bitfield", wintypes.DWORD),
("_uActivateState", wintypes.DWORD),
("_pidlViewState", ctypes.c_void_p),
("_pctView", ctypes.c_void_p),
("_pidlCur", ctypes.c_void_p),
("_psv", ctypes.c_void_p),
("_psf", ctypes.c_void_p),
("_hwndView", ctypes.c_void_p),
("_pszTitleCur", ctypes.c_void_p),
("_pidlPending", ctypes.c_void_p),
("_psvPending", ctypes.c_void_p),
("_psfPending", ctypes.c_void_p),
("_hwndViewPending", ctypes.c_void_p),
("_pszTitlePending", ctypes.c_void_p),
("_fIsViewMSHTML", wintypes.BOOL),
("_fPrivacyImpacted", wintypes.BOOL),
("_clsidView", GUID),
("_clsidViewPending", GUID),
("_hwndFrame", ctypes.c_void_p),
]#[repr(C)]
pub struct BASEBROWSERDATAXP {
pub _hwnd: *mut core::ffi::c_void,
pub _ptl: *mut core::ffi::c_void,
pub _phlf: *mut core::ffi::c_void,
pub _pautoWB2: *mut core::ffi::c_void,
pub _pautoEDS: *mut core::ffi::c_void,
pub _pautoSS: *mut core::ffi::c_void,
pub _eSecureLockIcon: i32,
pub _bitfield: u32,
pub _uActivateState: u32,
pub _pidlViewState: *mut core::ffi::c_void,
pub _pctView: *mut core::ffi::c_void,
pub _pidlCur: *mut core::ffi::c_void,
pub _psv: *mut core::ffi::c_void,
pub _psf: *mut core::ffi::c_void,
pub _hwndView: *mut core::ffi::c_void,
pub _pszTitleCur: *mut core::ffi::c_void,
pub _pidlPending: *mut core::ffi::c_void,
pub _psvPending: *mut core::ffi::c_void,
pub _psfPending: *mut core::ffi::c_void,
pub _hwndViewPending: *mut core::ffi::c_void,
pub _pszTitlePending: *mut core::ffi::c_void,
pub _fIsViewMSHTML: i32,
pub _fPrivacyImpacted: i32,
pub _clsidView: GUID,
pub _clsidViewPending: GUID,
pub _hwndFrame: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type BASEBROWSERDATAXP struct {
_hwnd uintptr
_ptl uintptr
_phlf uintptr
_pautoWB2 uintptr
_pautoEDS uintptr
_pautoSS uintptr
_eSecureLockIcon int32
_bitfield uint32
_uActivateState uint32
_pidlViewState uintptr
_pctView uintptr
_pidlCur uintptr
_psv uintptr
_psf uintptr
_hwndView uintptr
_pszTitleCur uintptr
_pidlPending uintptr
_psvPending uintptr
_psfPending uintptr
_hwndViewPending uintptr
_pszTitlePending uintptr
_fIsViewMSHTML int32
_fPrivacyImpacted int32
_clsidView windows.GUID
_clsidViewPending windows.GUID
_hwndFrame uintptr
}type
BASEBROWSERDATAXP = record
_hwnd: Pointer;
_ptl: Pointer;
_phlf: Pointer;
_pautoWB2: Pointer;
_pautoEDS: Pointer;
_pautoSS: Pointer;
_eSecureLockIcon: Integer;
_bitfield: DWORD;
_uActivateState: DWORD;
_pidlViewState: Pointer;
_pctView: Pointer;
_pidlCur: Pointer;
_psv: Pointer;
_psf: Pointer;
_hwndView: Pointer;
_pszTitleCur: Pointer;
_pidlPending: Pointer;
_psvPending: Pointer;
_psfPending: Pointer;
_hwndViewPending: Pointer;
_pszTitlePending: Pointer;
_fIsViewMSHTML: BOOL;
_fPrivacyImpacted: BOOL;
_clsidView: TGUID;
_clsidViewPending: TGUID;
_hwndFrame: Pointer;
end;const BASEBROWSERDATAXP = extern struct {
_hwnd: ?*anyopaque,
_ptl: ?*anyopaque,
_phlf: ?*anyopaque,
_pautoWB2: ?*anyopaque,
_pautoEDS: ?*anyopaque,
_pautoSS: ?*anyopaque,
_eSecureLockIcon: i32,
_bitfield: u32,
_uActivateState: u32,
_pidlViewState: ?*anyopaque,
_pctView: ?*anyopaque,
_pidlCur: ?*anyopaque,
_psv: ?*anyopaque,
_psf: ?*anyopaque,
_hwndView: ?*anyopaque,
_pszTitleCur: ?*anyopaque,
_pidlPending: ?*anyopaque,
_psvPending: ?*anyopaque,
_psfPending: ?*anyopaque,
_hwndViewPending: ?*anyopaque,
_pszTitlePending: ?*anyopaque,
_fIsViewMSHTML: i32,
_fPrivacyImpacted: i32,
_clsidView: GUID,
_clsidViewPending: GUID,
_hwndFrame: ?*anyopaque,
};type
BASEBROWSERDATAXP {.bycopy.} = object
_hwnd: pointer
_ptl: pointer
_phlf: pointer
_pautoWB2: pointer
_pautoEDS: pointer
_pautoSS: pointer
_eSecureLockIcon: int32
_bitfield: uint32
_uActivateState: uint32
_pidlViewState: pointer
_pctView: pointer
_pidlCur: pointer
_psv: pointer
_psf: pointer
_hwndView: pointer
_pszTitleCur: pointer
_pidlPending: pointer
_psvPending: pointer
_psfPending: pointer
_hwndViewPending: pointer
_pszTitlePending: pointer
_fIsViewMSHTML: int32
_fPrivacyImpacted: int32
_clsidView: GUID
_clsidViewPending: GUID
_hwndFrame: pointerstruct BASEBROWSERDATAXP
{
void* _hwnd;
void* _ptl;
void* _phlf;
void* _pautoWB2;
void* _pautoEDS;
void* _pautoSS;
int _eSecureLockIcon;
uint _bitfield;
uint _uActivateState;
void* _pidlViewState;
void* _pctView;
void* _pidlCur;
void* _psv;
void* _psf;
void* _hwndView;
void* _pszTitleCur;
void* _pidlPending;
void* _psvPending;
void* _psfPending;
void* _hwndViewPending;
void* _pszTitlePending;
int _fIsViewMSHTML;
int _fPrivacyImpacted;
GUID _clsidView;
GUID _clsidViewPending;
void* _hwndFrame;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; BASEBROWSERDATAXP サイズ: 128 バイト(x86)
dim st, 32 ; 4byte整数×32(構造体サイズ 128 / 4 切り上げ)
; _hwnd : HWND (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; _ptl : ITravelLog* (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; _phlf : IHlinkFrame* (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; _pautoWB2 : IWebBrowser2* (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; _pautoEDS : IExpDispSupportXP* (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; _pautoSS : IShellService* (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; _eSecureLockIcon : INT (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; _bitfield : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; _uActivateState : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; _pidlViewState : ITEMIDLIST* (+36, 4byte) varptr(st)+36 を基点に操作(4byte:入れ子/配列)
; _pctView : IOleCommandTarget* (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; _pidlCur : ITEMIDLIST* (+44, 4byte) varptr(st)+44 を基点に操作(4byte:入れ子/配列)
; _psv : IShellView* (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; _psf : IShellFolder* (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; _hwndView : HWND (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; _pszTitleCur : LPWSTR (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; _pidlPending : ITEMIDLIST* (+64, 4byte) varptr(st)+64 を基点に操作(4byte:入れ子/配列)
; _psvPending : IShellView* (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; _psfPending : IShellFolder* (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; _hwndViewPending : HWND (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; _pszTitlePending : LPWSTR (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; _fIsViewMSHTML : BOOL (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; _fPrivacyImpacted : BOOL (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; _clsidView : GUID (+92, 16byte) varptr(st)+92 を基点に操作(16byte:入れ子/配列)
; _clsidViewPending : GUID (+108, 16byte) varptr(st)+108 を基点に操作(16byte:入れ子/配列)
; _hwndFrame : HWND (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; BASEBROWSERDATAXP サイズ: 208 バイト(x64)
dim st, 52 ; 4byte整数×52(構造体サイズ 208 / 4 切り上げ)
; _hwnd : HWND (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; _ptl : ITravelLog* (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; _phlf : IHlinkFrame* (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; _pautoWB2 : IWebBrowser2* (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; _pautoEDS : IExpDispSupportXP* (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; _pautoSS : IShellService* (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; _eSecureLockIcon : INT (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; _bitfield : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; _uActivateState : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; _pidlViewState : ITEMIDLIST* (+64, 8byte) varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; _pctView : IOleCommandTarget* (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; _pidlCur : ITEMIDLIST* (+80, 8byte) varptr(st)+80 を基点に操作(8byte:入れ子/配列)
; _psv : IShellView* (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; _psf : IShellFolder* (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; _hwndView : HWND (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; _pszTitleCur : LPWSTR (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; _pidlPending : ITEMIDLIST* (+120, 8byte) varptr(st)+120 を基点に操作(8byte:入れ子/配列)
; _psvPending : IShellView* (+128, 8byte) qpoke st,128,値 / qpeek(st,128) ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; _psfPending : IShellFolder* (+136, 8byte) qpoke st,136,値 / qpeek(st,136) ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; _hwndViewPending : HWND (+144, 8byte) qpoke st,144,値 / qpeek(st,144) ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; _pszTitlePending : LPWSTR (+152, 8byte) qpoke st,152,値 / qpeek(st,152) ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; _fIsViewMSHTML : BOOL (+160, 4byte) st.40 = 値 / 値 = st.40 (lpoke/lpeek も可)
; _fPrivacyImpacted : BOOL (+164, 4byte) st.41 = 値 / 値 = st.41 (lpoke/lpeek も可)
; _clsidView : GUID (+168, 16byte) varptr(st)+168 を基点に操作(16byte:入れ子/配列)
; _clsidViewPending : GUID (+184, 16byte) varptr(st)+184 を基点に操作(16byte:入れ子/配列)
; _hwndFrame : HWND (+200, 8byte) qpoke st,200,値 / qpeek(st,200) ※IronHSPのみ。3.7/3.8は lpoke st,200,下位 : lpoke st,204,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global BASEBROWSERDATAXP
#field intptr _hwnd
#field intptr _ptl
#field intptr _phlf
#field intptr _pautoWB2
#field intptr _pautoEDS
#field intptr _pautoSS
#field int _eSecureLockIcon
#field int _bitfield
#field int _uActivateState
#field intptr _pidlViewState
#field intptr _pctView
#field intptr _pidlCur
#field intptr _psv
#field intptr _psf
#field intptr _hwndView
#field intptr _pszTitleCur
#field intptr _pidlPending
#field intptr _psvPending
#field intptr _psfPending
#field intptr _hwndViewPending
#field intptr _pszTitlePending
#field bool _fIsViewMSHTML
#field bool _fPrivacyImpacted
#field GUID _clsidView
#field GUID _clsidViewPending
#field intptr _hwndFrame
#endstruct
stdim st, BASEBROWSERDATAXP ; NSTRUCT 変数を確保
st->_eSecureLockIcon = 100
mes "_eSecureLockIcon=" + st->_eSecureLockIcon