PPCSoftkeySet のソースコード抜粋

投稿日 : 2008年10月20日 20:59

まぁ、あんまり綺麗なソースではないですが。

興味ない人も、作らない人も「こんなことをやっているんだ」と見てみると、Offisnail さんや、KOTETUさんが、大変な思いをして作られていることがなんとなくわかるかと思います。

すでに登録があったら読みにいくところ

読みにいってレジストリがあれば、読み込むようにします。

        private void Form1_Load(object sender, EventArgs e)

        {

            RegistryKey rkey;

            rkey = Registry.CurrentUser.OpenSubKey

(@"Software\Microsoft\Today\Keys\112");

            if (rkey != null )

            {

                txtUrlL.Text = rkey.GetValue("Open").ToString();

                txtTitleL.Text = rkey.GetValue("Default").ToString();

                rkey.Close();

            }

 

                              :

       }

 

最後に保存するところ

 

初期状態では結構キーが出来てないことがあるので注意です。

 

        private void menuSet_Click(object sender, EventArgs e)

        {

            RegistryKey rkey;

            Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Today\Keys");

 

            if( txtUrlL.Text != "")

            {

                rkey = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Today\Keys\112");

                rkey.SetValue("Open",txtUrlL.Text );

                rkey.SetValue("Default",txtTitleL.Text );

                rkey.Close();

            }

 

           :

 

            Application.Exit();

        }

 

参照ボタンを押してファイルを開くダイアログからファイルを選択

 

2つの参照ボタンから1つのメソッドを呼んでいるのでどちらのボタンから押されたのかチェックして処理します。

 

        private void btnRef_Click(object sender, EventArgs e)

        {

            if (openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                if (((Button)sender).Name == "btnRefL")

                {

                    txtUrlL.Text = openFileDialog1.FileName;

                    txtTitleL.Text = Path.GetFileNameWithoutExtension(openFileDialog1.FileName);

                }

                else

                {

                    txtUrlR.Text = openFileDialog1.FileName;

                    txtTitleR.Text = Path.GetFileNameWithoutExtension(openFileDialog1.FileName);

                }

            }

        }

 

機能設定

 

ただ単にテキストボックスに書き込むだけの共通処理関数

 

        private void setFunction(string appname, string path)

        {

            if (bleft)

            {

                txtUrlL.Text = path;

                txtTitleL.Text = appname;

            }

            else

            {

                txtUrlR.Text = path;

                txtTitleR.Text = appname;

            }

        }

 

リンクを作成 

 

WMのリンクはただテキストファイルを作るだけ。特に連絡先、予定表、仕事はすべてPoutlook.exeの引数違い名だけなので、その3つのショートカットを作る専用になっています。

 

        private void makelnk(string name)

        {

            if (!File.Exists(@"\Windows\" + name + ".lnk"))

            {

                StreamWriter sr = new StreamWriter(@"\Windows\" + name + ".lnk");

                sr.Write(@"64#""\Windows\poutlook.exe"" " + name);

                sr.Close();

            }

        }

 

機能メニュー処理

 

オプションの必要のない、メールなどはそのままテキストボックスに書き込む処理を、予定表、連絡先、仕事でははじめにリンクを作成してから登録します。

 

        private void menuMail_Click(object sender, EventArgs e)

        {

            setFunction(sender, "メール", "tmail.exe");

        }

 

        private void menuCalendar_Click(object sender, EventArgs e)

        {

            makelnk("calendar");

            setFunction(sender, "予定表", @"\Windows\calendar.lnk");

        }

 

テキストボックスのフォーカス移動処理

 

テキストボックスにフォーカスが移動すると、カーソルキーでは脱出できません。(Tabキーなら可能ですが)そのため、上下のカーソルキーが押された次のコントロールにフォーカスを移します。

 

        private void txtTitleL_KeyDown(object sender, KeyEventArgs e)

        {

            if ((e.KeyCode == System.Windows.Forms.Keys.Down))

            {

                btnFuncR.Focus();

            }

            if ((e.KeyCode == System.Windows.Forms.Keys.Up))

            {

                txtUrlL.Focus();

            }

        }

 

機能キーの処理

 

機能設定ボタンはコンテキストメニューを表示し、その中の各メニューから選んで...とかなり階層が深くなります。そのためどのボタンから呼ばれたのかわからなくなってしまうので、ボタンを押した時点で右用か左用かチェックしておきました。

 

        Boolean bleft = false;

  

        private void btnFunc_Click(object sender, EventArgs e)

        {

            if (((Button)sender).Name == "btnFuncL")

                bleft = true;

            else

                bleft = false;

 

            contextMenu1.Show( (Button)sender, new Point(20, 0));

        }

 

フィードバック

# PPCSoftkeySet のソースコード抜粋

2008/10/20 6:01 by shino-blog
PPCSoftkeySet のソースコード抜粋

# re: PPCSoftkeySet のソースコード抜粋

2008/10/20 23:12 by Kuni
プログラミングは全然分からないけど、すごく大変だということは理解できました。
ありがとうございます(>_<)
Windows Mobileの日曜プログラマーになりたければこれで勉強しておけ、見たいなエントリーも見てみたいな。
プログラミングにちょっと興味あるので・・・

# re: PPCSoftkeySet のソースコード抜粋

2008/10/21 2:01 by avi
比較的簡単な感じであればこんな本があります。
http://item.rakuten.co.jp/book/4137731/

また、こんな連載記事もあります。
http://www.willcom-fan.com/wzero3/7sofcon/3/
こちらはPDFでダウンロードできます。
池袋の私書箱の紹介です
コメントの入力
タイトル
 
名前
 
Url
コメント