C#でワード文書の最初と最後のページを参照する


ワードの文書をC#で扱うことがあり、意外にもワードの文書の最初のページと最後のページを参照する方法を探すのに苦労した。以下メモ程度にコピペしておくことにする。

Microsoft.Office.Interop.Wordを参照すること。また以下のコードには自分で作ったWordReaderがあるが、そのプロパティのWordDocument = Microsoft.Office.Interop.Word.Documentということを明記しておこう。

最後のページを参照するコード。

            int maxPage = (int)wordReader.WordDocument.Content
.get_Information(WdInformation.wdNumberOfPagesInDocument); object last_page = maxPage; object which = WdGoToDirection.wdGoToNext; object what = WdGoToItem.wdGoToPage; var missingType = Type.Missing; wordReader.WordDocument.Application.Selection.GoTo(ref what,
ref which, ref last_page, ref missingType); object page_bkm = @"\Page"; Range lastpageRange = wordReader.WordDocument
.Bookmarks.get_Item(ref page_bkm).Range; lastpageRange.Select(); Debug.WriteLine(lastpageRange.Text);

最初のページを参照するコード。

           object obj = "\\page";
           Range firstPage = WordReader.WordDocument
.Application.Selection.Bookmarks[obj].Range;

WiXインストーラーサンプル


英語だけど、非常に参考になった記事。これで基本もすべて分かったって感じがする。

http://www.codeproject.com/Articles/115036/Creating-WIX-Installer-for-ASP-NET-Web-Application

C#でファイルに関連付けられたアイコンを取得する方法


必要性から検索してたらこんなのが。今は仕事中だが、ぜひテストしてみたい面白そうなコード。

テキストファイルに含まれている文字列を検索


条件に合ったファイルを一つのディレクトリにコピーするのをPowerShellでやってみましょう。

dir -filter *.sql -recurse | where {[System.IO.File]::ReadAllText($_.FullName) `
-match “DataStatus”} | foreach {$_.CopyTo(“D:\Temp\$_”)}

意外にdir –filter myfilename.ext -recurseってすごく役立つんです。開発の仕事でよく使います。

IISのウェブアプリケーションをPowerShellで削除


開発の仕事をしていると、開発マシンのIIS内にウェブアプリケーションがたくさん作成されます。数十個または百個余りのウェブアプリケーションをIISマネージャーから右クリックして削除となると大変時間がかかりますね。Shift+クリックができないのがその大きな理由です。そこでPowerShellを使用して一気に削除する方法を紹介します。

PowerShellではIIS自体をファイルシステムのように扱うことができます。それができるようにするには、PowerShellのアイコンを右クリックして「システムモジュールをインポートする」をクリックします。

image

次にIIS:と入力してEnterキーを押すと、IISドライブが登場して、dirコマンドを入力すると以下の画像のように表示されます。

SNAGHTMLc1592

今度はSites\Defailt Web Siteに入ってdirコマンドを入力すると、以下のようにDefault Web Site内に存在するファイルやディレクトリや仮想ディレクトリがリストされます。

image 

ここで次のコマンドを入力します。以下のコマンドは本当にすべてのウェブアプリケーション、そしてそれに対応するディレクトリを削除しますので、気をつけて実行してください。

dir | where {$_.NodeType –eq “application”} | foreach {del $_.PhysicalPath; Remove-Item $_.Name –recurse}

再びdirを入力すると、以下のようにtest1とtest2のウェブアプリケーションが削除されました。これはIISマネージャーで確認しても同じです。

image

Windows 8のデザインとその他


Windows 8のデザインはどうしたものかねえ。何故にあんなにフラットにしたんでしょう?色もめっちゃ原色使ってるし、チープさが目立つ。どこかWindows ME(このOSはまだFAT32だが)を彷彿とさせる感じを受けているのは自分だけだろうか。

しかも、今までのWindowsのUIから大幅に変えてMetroUIというのを採用したようだが、長年スタートボタンを使ってきた自分にとってはどうも馴染めないのだ。MetroUIはそれはそれでいいのだが、今まで慣れてきたものを取っ払ってしまうのはユーザーを蔑ろにしているとしか思えない。

Microsoftはビル・ゲイツがいなくなってから元気がなくなったし、ウキウキやワクワク感がなくなってしまったように思うのは私だけだろうか。

去年はタブレット型PCが爆発的に普及したような気がする。自分もNexus7を買った。しかし、ウキウキしないのだ。Windows 2000とかWindows XPとか出た当時ほど「次はどうなるんだろう?楽しみ!」という感覚がもうないのだ。Windows これは自分が年をとってしまったからなのだろうか。

コンピューターはまだまだこれからユビキタス的に浸透してくるとは思うし、まだまだこれからだと思うんだけどなあ。

久しぶりに…


久しぶりに投稿します。前にやってたブログのデータはすべて喪失。あ~結構いいコードサンプルあったのになあ。またコツコツとやっていくかなあ。