なんとかカタチになった
起動時の状態検知入れてと。
しっかし何やってんだろなぁw
で
x-mouseの作成にあたっての肝、trueとfalseは
(IntPtr)1とIntPtr.Zeroだったという話。
んでSPI_GETACTIVEWINDOWTRACKINGはtrueとfalse共に0を返す
というミラクルな仕組みなので結局レジストリを見るハメに
結局はレジストリへの書込なので同じことなんだけどね。
☆
状態検知
string rKeyName = @"Control Panel\Desktop";
string rGetValueName = "ActiveWndTrkTimeout";
string rGetValueNam2 = "UserPreferencesMask";
try
{
RegistryKey rKey = Registry.CurrentUser.OpenSubKey(rKeyName);
RegistryKey rKe2 = Registry.CurrentUser.OpenSubKey(rKeyName);
object location = rKey.GetValue(rGetValueName);
System.Byte[] locatio2 = (byte[])rKe2.GetValue(rGetValueNam2,"Bytes");
rKey.Close();
rKe2.Close();
string tkg = BitConverter.ToString(locatio2).Substring(0, 2);
Console.WriteLine(tkg);
if (tkg == "DF" || tkg == "DE") {
oFFToolStripMenuItem.Enabled = true;
oNToolStripMenuItem.Enabled = false;
}
if (tkg == "9F" || tkg == "9E") {
oNToolStripMenuItem.Enabled = true;
oFFToolStripMenuItem.Enabled = false;
}
toolStripComboBox1.Text = location.ToString();
}
catch (NullReferenceException)
{
Console.WriteLine("レジストリ[" + rKeyName
+ "]の[" + rGetValueName + "]がありません!");
}
メニュー
private void oNToolStripMenuItem_Click(object sender, EventArgs e)
{
SystemParametersInfo(SPI_SETACTIVEWINDOWTRACKING, 0, (IntPtr)1, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
SystemParametersInfo(SPI_SETACTIVEWNDTRKZORDER, 0, (IntPtr)1, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
oNToolStripMenuItem.Enabled = false;
oFFToolStripMenuItem.Enabled = true;
}
private void oFFToolStripMenuItem_Click(object sender, EventArgs e)
{
SystemParametersInfo(SPI_SETACTIVEWINDOWTRACKING, 0, IntPtr.Zero, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
SystemParametersInfo(SPI_SETACTIVEWNDTRKZORDER, 0, IntPtr.Zero, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
oFFToolStripMenuItem.Enabled = false;
oNToolStripMenuItem.Enabled = true;
}
private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
SystemParametersInfo(SPI_SETACTIVEWNDTRKTIMEOUT, 0, (IntPtr)int.Parse(toolStripComboBox1.Text), SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
}
お披露目はノート引っ張り出して動作確認してからどす