SIP의 숫자 모드로 디스플레이 하고 싶은데 모아키에서는 어떤 짓을 해도 숫자 키패드가 나타나지 않더군요.
이것 역시 수많은 삽질과 구글링을 통해서도 해결이 되지 않았는데, 어딘가에서 C++로 된 사용가능한 소스를 구했습니다.
C#으로 프로그램을 했던지라 해당 소스를 C#으로 변경해 보았습니다.
public struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
public unsafe class SIPINFO
{
public SIPINFO()
{
cbSize = (uint)Marshal.SizeOf(this);
}
public uint cbSize;
public uint fdwFlags;
public RECT rcVisibleDesktop;
public RECT rcSipRect;
public uint dwImDataSize;
public IntPtr pvImData;
}
[DllImport("coredll.dll")]
public extern static uint SipGetInfo(SIPINFO pSipInfo);
[DllImport("coredll.dll")]
public extern static uint SipSetInfo(SIPINFO pSipInfo);
private unsafe void ShowNumericMoakey()
{
ushort[] imDataToSet = new ushort[1] { 4 };
ushort[] imDataToGet = new ushort[1] { 0 };
SIP.SIPINFO sipInfo = new SIP.SIPINFO();
fixed (ushort* pimDataGet = imDataToGet, pimDataSet = imDataToSet)
{
sipInfo.dwImDataSize = 1;
sipInfo.pvImData = (IntPtr)pimDataGet;
uint ret = SIP.SipGetInfo(sipInfo);
if (ret != 0)
{
sipInfo.dwImDataSize = 1;
sipInfo.pvImData = (IntPtr)pimDataSet;
uint bRet = SIP.SipSetInfo(sipInfo);
}
else
{
MessageBox.Show(string.Format("{0}", ret));
}
}
}
해놓고 보면 별거 아닌데 막상 해당 레퍼런스가 없으면 삽질하게되는 지라 혹시 필요하신 분이 있을까봐 포스팅 합니다.