Tagged: C#

スタートアップメニューにショートカットを登録

Windows起動時にアプリを起動させたい場合、スタートアップメニューにアプリを登録することは良くあると思う。

でも、Windows 10や8.1などでは、スタートアップメニューへの登録方法が面倒というか分かりにくく、自作ソフトでもたまに問い合わせが来る。

インストーラでスタートアップに登録すれば確実なんだけど、フリーソフトでインストーラとかは嫌がられる場合も多く、作る手間も掛かる。

そんな訳で、アプリケーション側で、自分自身のショートカットをスタートアップメニューに登録する方法を調べてみた。

 
 

まずは、スタートメニューのフォルダを調べる方法。

// 特殊ディレクトリ(スタートアップ)のパスを取得する
Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)

Stringの値が返される。
例)C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu

 
 

そして、アプリ自身のexeファイル名の取得方法。

Path.GetFileName(Application.ExecutablePath)

Stringの値が返される。
例)sampleApl.EXE

 
 

あとは、exeのショートカットをスタートメニューのフォルダにコピーするだけ。

・・・。

あれ、どうやらC#やVB.NETではファイルのショートカットを作る機能が無いっぽい。

 

そういえば、前も似たようなことをやった記憶が。。

そうだ、これだ。
[C#] 送るメニューにショートカットを登録/解除する方法

この時も、ショートカット作成に苦労した。

なので、ショートカットの作成は、上記記事の「方法4」を流用し、WSH(Windows Script Host)でショートカットを作成する。
いろいろ方法があるので、詳しくは上記記事を参照。
(さらに…)

エクスプローラーなどでファイルを右クリックしたときに出てくる「送る」メニュー。
この送るメニューにアプリケーションを登録しておくと、選択したファイルの情報を
アプリケーションに渡して起動できるため、使い方によっては便利な機能。
01
例えば、logファイルを”メモ帳”に送って起動するといったことができる。

(さらに…)

Windowsストアアプリ

Windowsストアアプリと言っても、Windows8用とWindows8.1用と異なり、
Windows8用のストアアプリはVisual Studio 2012で開発し、
Windows8.1用のストアアプリはVisual Studio 2013で開発する必要がある。

Windows8は無料アップデートでWindows8.1になるので、もうWin8用ストアアプリを態々作る必要も無いだろう。
なので、最初からWin8.1向けWindowsストアアプリ開発に挑戦してみる。
(さらに…)

C#でExcelファイルを読み書きするプログラムと、そのプログラム(exe)を配布するためのインストーラを作ってみた。

C#でExcelファイルを読み書きするプログラム
何故態々インストーラを作成するのか?

それは、作成したExcelを使ったプログラムは、exeの配布だけでは他のPCでは動かないため。
Excel関連のDLLも一緒に配布する必要がある。

例えば、前に作成したサンプルアプリの場合、配布時は以下のDLLが必要。

  • Microsoft.Office.Interop.Excel.dll
  • Microsoft.Vbe.Interop.dll
  • office.dll
  • stdole.dll

 

⇒これ、後から気づいたけど実は認識誤り(.NET Framework 3.5までの話)。
 .NET Framework 4以降ではDLL配布を不要にする方法がある。
 説明も後記するので最後までちゃんと読んでね。

 

昔のVisual Studioではセットアッププロジェクト(Windows ベースのアプリケーションのmsiインストーラ)を作成する際、必要なDLLを自動で抽出してくれていた。

インストーラ付きで配布するのが嫌という場合、exeと抽出されたDLLだけを他PCにコピーしても動作する。
ただ、インストーラ無しで、抽出されたDLLを勝手に再配布するのはNGかも知れない。
あと、勿論、配布先PCにもMicrosoft Excelをインストールしておく必要はある。

じゃぁ、昔みたいにインストーラを作ればいい。

と、思ったら、、
Visual Studio 2012以降では、セットアップ プロジェクトが無くなり、ウィザードでインストーラ作成(ディプロイメント)することが出来なくなってしまったらしい。

・・・それは困った。

必要なDLLはMSDNとかに載っているかもしれないけど、前と同じような方法ができないか調べてみた。

 

すると、従来のセットアッププロジェクトに代わり、InstallShield Limited Editionを使ってインストーラを作れることが分かった。
でも、InstallShieldって有料じゃなの?

と思ったけど、このLimited Editionってのは簡易版で無料らしい。

ただ、無料版のVisual Studio Expressでは使えず、Visual Studio Professional以降じゃないと、InstallShield Limited Editionは使えないようだ。

 

という事で、おさらいも兼ねてVisual Studio 2013を使ってExcelを使ったプログラムと、インストーラをInstallShieldで作ってみることにした。

 
 

Excel用のプログラム作成

まずは、C#でExcelを使ったプログラムを作成。
exeの作成方法は、ほぼ前回と同じ。
(さらに…)

C#やVB.NETなどのアプリケーションで、WebサイトやHTMLなどを表示したい場合に使うWebBrowserコントロール。
このWebBrowserコントロールを使えば、簡単にInternet Explorer同等のWebページを表示できる。

でも、最近このWebBrowserコントロールで表示崩れが増えてきたような気がする。

例えば、ここのホームページを表示すると、メニューのスタイルが崩れてしまう。

 

↓WebBrowserコントロールで表示
WebBrowserコントロールで表示

 

(さらに…)

Excelに保存したデータを利用して、何かプログラムを作ろうとした場合、通常はExcelマクロなんかを使うことが多いと思う。

実際、マクロはVBA(言語的には旧Visual Basic 6.0)を利用するため、コーディングの難易度が低く、ちょっとした表計算やグラフ作成なら簡単に扱うことができ便利。

だけど、既存のExcelにマクロ追加など手を加えたくなかったり、複数のExcelデータを利用した処理を行いたかったり、他システムとの連携や、ちょっと複雑な処理を加えたいといった場合は、マクロはでは役不足。

C#からExcelを利用するプログラムについて作り方をよく忘れてしまうんで、覚書きとしてメモっておくことにした。
10
開発言語はC#(VB.NETなども同様)で、実行環境にはExcelが必要。

今回は、Visual Studio 2010 Professional + Microsoft Office Excel 2007
の組み合わせで実行したけど、
Visual Studio 2012 Express for Windows Desktop + Microsoft Excel 2010
の組み合わせでも問題なく動作した。

<追記>
Visual Studio 2013+Microsoft Excel 2013とかも基本的に同じようなやり方で動作する。

作成方法

(さらに…)

自作のRSSリーダー「RSS速報」から音声合成で読み上げソフト「棒読みちゃん」を呼び出す機能を追加してみた。

icon

先日、RSS速報を利用して頂いているユーザーさんから、「棒読みちゃん」に「RSS速報」で流れてきたフィードを読ませられたらいいなー。という要望を頂いた。
まず、「棒読みちゃん」を知らなかったので、ダウンロードして使ってみた。
これは凄い。

フリーソフトで音声読み上げするソフトがあるなんて知らなかったし、ちゃんと音声合成読み上げしてくれる。
これは、確かにRSS速報と連携できれば面白いかも。
で、どうやったら連携できるんだろうということを調べていたら、コマンドラインから棒読みちゃんへ指示を出すためのツール(ReadmeにRemoteTalk.exe)の説明があり、簡単に呼び出しできそうだったんで、この機能を使って連携してみることにしてみた。

このRemoteTalk.exeを使えば、コマンドラインから簡単に棒読みちゃんにメッセージを渡すことができる。
例えば、「RemoteTalk /Talk メッセージ」みたいな感じでコマンドを打てば簡単に音声読み上げしてくれる。
あとは、RSS速報側からRemoteTalk.exe呼び出しすればOK。

で、どうせなら他のアプリケーションも呼び出せるように、exeファイル、引数を自由に決められるUIを作成してみた。
(今のところ棒読みちゃん以外に用途なし)
setting_view

(さらに…)

C#でHTML文書からRSSのURLを取得するサンプル。

このサンプルでは以下の処理を行う。
1.テキストボックスに対象となるHTML(WebサイトのURL)を指定。
2.[RSSのURL取得]ボタン押下。
3.取得したRSSが表示される。
(さらに…)

前回のカラーコードを16進数表示するに続き、今回はその逆の16進数文字列からカラー値を求めるサンプルを紹介。

このサンプルでは以下の処理を行う。

  1. テキストボックスに16進数6桁のRGBの値を指定
  2. ボタンをクリックで、ボタンの背景色を指定カラーに変更
  3. ついでにボタンの文字列も色を反転

GUIデザインでは、Formにbutton2という名前のボタンと、textBox1という名前のテキストボックスを貼り付ける。

(さらに…)

C#でカラーの値をRGBカラーコードを表示するサンプル。

このサンプルでは以下の処理を行う。
1.「色の設定」ダイアログを表示。
2.設定した色を使用し、ボタン背景色を変更
3.ボタンの文字色を、背景色の反転カラーに変更
4.設定した色をRGBカラー(16進数6桁の文字列)として表示

GUIデザインでは、Formにbutton1という名前のボタンを貼り付ける。
カラー変更 デザイン

(さらに…)

C#(VB.NET)でのお話。
DataGridViewにチェックボックスを表示できなくてハマったので覚え書き。

まず、DataGridViewのDataSourceとして、dataSet1を用意し、その中(Tables→Columns)にDataType=System.Boolean(チェックボックスで利用したいのでbool型)のメンバを用意。

(さらに…)


RSS速報を起動中、とあるDVD再生ソフトで画像が表示できないという報告を受けた。
私の持っている別のDVD再生ソフトでは問題なく再現環境が無い。

とりあえず、RSS速報の描画処理を簡単に再現したテスト用プログラムを報告者に送り、テストしてもらうことにした。

せっかく作ったので、ついでにソースを一部公開。
(さらに…)

かつてVisual Basic 6.0にはコントロール毎にIndexプロパティが存在し、
簡単にコントロールの配列を扱うことができた。
例えば、

TextBox1(0).Text = "1"
TextBox1(1).Text = "2"

など。

が、VB.NETからIndexプロパティが無くなり簡単には使用できなくなった。
(正確に言うと互換のため残されているが)
オブジェクト指向なんだから自分で作れと言わんばかりに無くなっている。

VB.NETにも無いものはC#にも無い。
C# 2005にも配列用のコントロールは用意してあるようだけど。
(例:TextBoxArray、PictureBoxArrayなど)

で、いざコントロールを配列で使ってみようと思ったところ使い方が分からず
少し悩んでしまった。
またきっと忘れるんで覚書きに追加しておこう。
(さらに…)

最近よく度忘れするので覚書き

C#でデバッグ時に[出力]ペインに情報を書き出す方法
1. Debugモードに切り替え
2. ソース中に
  System.Diagnostics.Debug.WriteLine(“出力される文字”);
3. 実行

ダウンロードしたVisual C# 2005 Express Edition(1年無償版)で試しにVC# 2003で作成したRSS速報を変換してみた。


変換はウィザード形式でいたって簡単。
(さらに…)