Win32 API 日本語リファレンス
ホームSystem.AddressBook › NEWMAIL_NOTIFICATION

NEWMAIL_NOTIFICATION

構造体
サイズx64: 56 バイト / x86: 28 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
cbEntryIDDWORD4+0+0lpEntryID が指す新着メッセージのエントリIDサイズ。
lpEntryIDENTRYID*8/4+8+4新着メッセージのエントリIDへのポインター。
cbParentIDDWORD4+16+8lpParentID が指す親フォルダーのエントリIDサイズ。
lpParentIDENTRYID*8/4+24+12新着メッセージが属する親フォルダーのエントリIDへのポインター。
ulFlagsDWORD4+32+16通知の文字幅などを示すフラグ。
lpszMessageClassCHAR*8/4+40+20メッセージクラスを表す文字列へのポインター。
ulMessageFlagsDWORD4+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 Structure
import 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: uint32
struct 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