ホーム › System.AddressBook › NEWMAIL_NOTIFICATION
NEWMAIL_NOTIFICATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbEntryID | DWORD | 4 | +0 | +0 | lpEntryID が指す新着メッセージのエントリIDサイズ。 |
| lpEntryID | ENTRYID* | 8/4 | +8 | +4 | 新着メッセージのエントリIDへのポインター。 |
| cbParentID | DWORD | 4 | +16 | +8 | lpParentID が指す親フォルダーのエントリIDサイズ。 |
| lpParentID | ENTRYID* | 8/4 | +24 | +12 | 新着メッセージが属する親フォルダーのエントリIDへのポインター。 |
| ulFlags | DWORD | 4 | +32 | +16 | 通知の文字幅などを示すフラグ。 |
| lpszMessageClass | CHAR* | 8/4 | +40 | +20 | メッセージクラスを表す文字列へのポインター。 |
| ulMessageFlags | DWORD | 4 | +48 | +24 | メッセージのフラグ(既読/添付等)を示す値。 |
各言語での定義
#include <windows.h>
// NEWMAIL_NOTIFICATION (x64 56 / x86 28 バイト)
typedef struct NEWMAIL_NOTIFICATION {
DWORD cbEntryID;
ENTRYID* lpEntryID;
DWORD cbParentID;
ENTRYID* lpParentID;
DWORD ulFlags;
CHAR* lpszMessageClass;
DWORD ulMessageFlags;
} NEWMAIL_NOTIFICATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NEWMAIL_NOTIFICATION
{
public uint cbEntryID;
public IntPtr lpEntryID;
public uint cbParentID;
public IntPtr lpParentID;
public uint ulFlags;
public IntPtr lpszMessageClass;
public uint ulMessageFlags;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NEWMAIL_NOTIFICATION
Public cbEntryID As UInteger
Public lpEntryID As IntPtr
Public cbParentID As UInteger
Public lpParentID As IntPtr
Public ulFlags As UInteger
Public lpszMessageClass As IntPtr
Public ulMessageFlags As UInteger
End Structureimport ctypes
from ctypes import wintypes
class NEWMAIL_NOTIFICATION(ctypes.Structure):
_fields_ = [
("cbEntryID", wintypes.DWORD),
("lpEntryID", ctypes.c_void_p),
("cbParentID", wintypes.DWORD),
("lpParentID", ctypes.c_void_p),
("ulFlags", wintypes.DWORD),
("lpszMessageClass", ctypes.c_void_p),
("ulMessageFlags", wintypes.DWORD),
]#[repr(C)]
pub struct NEWMAIL_NOTIFICATION {
pub cbEntryID: u32,
pub lpEntryID: *mut core::ffi::c_void,
pub cbParentID: u32,
pub lpParentID: *mut core::ffi::c_void,
pub ulFlags: u32,
pub lpszMessageClass: *mut core::ffi::c_void,
pub ulMessageFlags: u32,
}import "golang.org/x/sys/windows"
type NEWMAIL_NOTIFICATION struct {
cbEntryID uint32
lpEntryID uintptr
cbParentID uint32
lpParentID uintptr
ulFlags uint32
lpszMessageClass uintptr
ulMessageFlags uint32
}type
NEWMAIL_NOTIFICATION = record
cbEntryID: DWORD;
lpEntryID: Pointer;
cbParentID: DWORD;
lpParentID: Pointer;
ulFlags: DWORD;
lpszMessageClass: Pointer;
ulMessageFlags: DWORD;
end;const NEWMAIL_NOTIFICATION = extern struct {
cbEntryID: u32,
lpEntryID: ?*anyopaque,
cbParentID: u32,
lpParentID: ?*anyopaque,
ulFlags: u32,
lpszMessageClass: ?*anyopaque,
ulMessageFlags: u32,
};type
NEWMAIL_NOTIFICATION {.bycopy.} = object
cbEntryID: uint32
lpEntryID: pointer
cbParentID: uint32
lpParentID: pointer
ulFlags: uint32
lpszMessageClass: pointer
ulMessageFlags: uint32struct NEWMAIL_NOTIFICATION
{
uint cbEntryID;
void* lpEntryID;
uint cbParentID;
void* lpParentID;
uint ulFlags;
void* lpszMessageClass;
uint ulMessageFlags;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; NEWMAIL_NOTIFICATION サイズ: 28 バイト(x86)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; cbEntryID : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; lpEntryID : ENTRYID* (+4, 4byte) varptr(st)+4 を基点に操作(4byte:入れ子/配列)
; cbParentID : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; lpParentID : ENTRYID* (+12, 4byte) varptr(st)+12 を基点に操作(4byte:入れ子/配列)
; ulFlags : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; lpszMessageClass : CHAR* (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; ulMessageFlags : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NEWMAIL_NOTIFICATION サイズ: 56 バイト(x64)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; cbEntryID : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; lpEntryID : ENTRYID* (+8, 8byte) varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; cbParentID : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; lpParentID : ENTRYID* (+24, 8byte) varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; ulFlags : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; lpszMessageClass : CHAR* (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ulMessageFlags : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global NEWMAIL_NOTIFICATION
#field int cbEntryID
#field intptr lpEntryID
#field int cbParentID
#field intptr lpParentID
#field int ulFlags
#field intptr lpszMessageClass
#field int ulMessageFlags
#endstruct
stdim st, NEWMAIL_NOTIFICATION ; NSTRUCT 変数を確保
st->cbEntryID = 100
mes "cbEntryID=" + st->cbEntryID