<DllImport("coredll.dll")> _ Public Structure SIPINFO Public cbSize As Int32 Public fdwFlags As Int32 Public rcVisibleDesktop As RECT Public rcSipRect As RECT Public dwImDataSize As Int32 Public pvImData As IntPtr End Structure Public Structure RECT Public left As Int32 Public top As Int32 Public right As Int32 Public bottom As Int32 End Structure Private Const SIPF_DOCKED As Integer = 0 Private Const SIPF_LOCKED As Integer = 1 Private Const SIPF_OFF As Integer = 2 Private Const SIPF_ON As Integer = 3 <DllImport("coredll.dll")> _ Private Shared Function SipGetInfo(ByRef pSipInfo As SIPINFO) As Boolean End Function Private Sub cmdShipInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles cmdShipInfo.Click Dim info As SIPINFO info.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(info) Call SipGetInfo(info) 'SIP起動状態 Dim isSipOpen As Boolean If info.fdwFlags = SIPF_ON Then isSipOpen = True ElseIf info.fdwFlags = SIPF_OFF Then isSipOpen = False End If 'SIPの高さ Dim iSipHeight As Integer = info.rcSipRect.bottom - info.rcSipRect.top '作業領域 Dim iDesktopHeight As Integer = info.rcVisibleDesktop.bottom - info.rcVisibleDesktop.top MessageBox.Show(String.Format("Sip起動:{0} Sipの高さ:{1} 作業領域の高さ:{2}", isSipOpen, iSipHeight, iDesktopHeight)) End Sub
WS007SH(Willcom)では以下の値が返りました。
SIPが表示されていない状態
Sip起動:False Sipの高さ:160 作業領域の高さ:376
SIPが表示されている状態
Sip起動:True Sipの高さ:160 作業領域の高さ:588
X04HT(SoftBank)では以下の値が返りました。
SIPが表示されていない状態
Sip起動:False Sipの高さ:318 作業領域の高さ:218
SIPが表示されている状態
Sip起動:True Sipの高さ:318 作業領域の高さ:588
DT-5200(CASIO)ではSIPINFO.fdwFlags がSIPF_DOCKED(表示)/SIPF_LOCKED(非表示)になるようです。
DT-5200ではプログラムを以下のように修正します。
'SIP起動状態 Dim isSipOpen As Boolean If info.fdwFlags = SIPF_LOCKED Then isSipOpen = True ElseIf info.fdwFlags = SIPF_DOCKED Then isSipOpen = False End If
SIPが表示されていない状態
Sip起動:False Sipの高さ:105 作業領域の高さ:294
SIPが表示されている状態
Sip起動:True Sipの高さ:105 作業領域の高さ:294
※作業領域の高さがSIPが起動している時も起動していない時も変わらない。
DT-5200はSIPがタスクバーにあるけれど
X04HT、WS007SHはFormのMainMenuでSIPが起動するからその違いなのかな・・・
0 件のコメント:
コメントを投稿