サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
grabacr.net
これは PowerShell Advent Calendar 2016 の 22 日目のエントリーです。 PowerShell と WPF (Windows Presentation Foundation) という単語が並んだ場合、多くの方は PowerShell から WPF ウィンドウ等の GUI を扱う方法について想像されると思いますが、本エントリーはその逆です。 即ち、WPF で PowerShell コンソールを作成する手段について扱います。 最終的に、以下のような形で自身のアプリケーション内にビルトインの PowerShell コンソールを実装し、コマンドレットやスクリプトの実行とそれに派生し独自データのフィルタリング等を行えるようにします (画像はクリックで拡大されます)。 アプリケーション内にビルトイン PowerShell コンソールを搭載している身近な例としては、Win
MVP Global Summit 2016 で渡米した際、Microsoft のオールインワン PC “Surface Studio” とともに発表された Surface Dial を入手できたので、さっそくアプリから使ってみました。 アプリでの対応は簡単で、むしろ「どう使わせるか」のアイディア勝負になるデバイスという印象です。 発表時の映像での「Surface Studio の画面に置いて使う」インパクトが強いですが、デバイス自体は BLE (Bluetooth 4.0) で接続するシンプルなものです。 あくまで、Surface シリーズの場合は画面に置いて反応するというだけで、それ以外の PC でも机に置いて使うことができます。 また、今後同様のサードパーティ製品が発売されることも予想されます。 UWP アプリから使う UWP API の Windows.UI.Input.Radia
先日開催された「めとべや東京」改め「まどすた」の 1 回目の勉強会が //build/ 2016 振り返りをテーマとして C# ユーザー会と合同で開催され、私は Project Centennial (Desktop App Converter) を題材として、以下の資料で発表しました。 また、5/23 に開催された de:code 前夜祭のアンカンファレンスでも、この資料の一部を使用しつつ 20 分ほど発表させて頂きました。 本記事は、これらの発表を準備するにあたった実施した Project Centennial のセットアップ、および実行手順と、Project Centennial の登場によりデスクトップ アプリ開発者にとってどのような変化があるかについてを共有することを目的としています。 余談ですが、発表タイトルに「// 2016」と入っているのは、およそ 3 年前の「めとべや東京
Windows には、パーソナライズの一部としてテーマ設定が存在し、「アクセント カラー」を選択することができます。 また、Windows 10 build 14316 から、アクセント カラーとは別に「app mode」として Light/Dark テーマを選択できるようになりました。 UWP アプリは SystemAccentColor などの一部のリソースを ThemeResource として指定することで、Windows のアクセント カラーやテーマによって決定される色に追従することが可能です。 一方で、クラシック デスクトップ アプリにおいては、例えば WPF ではそのようなリソースが定義されておらず、フレームワークとして Windows テーマに追従する機能は実装されていません。 今回は、クラシック デスクトップ アプリにおいて、Windows のテーマ設定に追従する方法につい
12/19 に開催しためとべや東京勉強会 #10 で Windows 10 の仮想デスクトップに関する話をしたのですが、セッション資料を公開し忘れていました。すみません。 別に使い方の紹介とか指南とかそういう内容ではなく、C# コードで Windows デスクトップ アプリから操作してみた、という話です。 この内容は既にこのブログで解説しています。 手っ取り早く仮想デスクトップ操作してみたい方は、こちらのライブラリを使ってみてください。 ReadMe にある通り、NuGet からもインストールできます。 https://github.com/Grabacr07/VirtualDesktop また、現在 SylphyHorn の UWP 化を進めています。 そろそろ成果が出そうなので、当ブログも UWP に関する話題が増えていくことでしょう (願望)。
昨年 11/1 ~ 11/5 にシアトル Microsoft 本社で開催された MVP Global Summit に出席しており、滞在先ホテルの近くにある Microsoft Store で Surface Book を衝動買いしました。 Surface Book は Surface Pro 4 とともに発表された Surface ブランドのラップトップ PC です。 そして今日、日本での価格と発売日が発表され、購入を検討されている方も多いかと思います。 そこで、購入から 2 ヵ月ちょっと経った今、使用者として雑感をつらつら適当に述べたいと思います。 買ったもの Surface Book ・CPU: Core i7-6600U ・RAM: 16 GB ・SSD: 512 GB 仕様はこちら: http://news.microsoft.com/download/presskits/sur
先日のエントリー「Windows 10 の仮想デスクトップを制御しようとして失敗した話」で アプリ (C# コード) から仮想デスクトップの作成、削除、移動はできた 同一プロセス内のウィンドウを、任意の仮想デスクトップに移動させることはできた 他プロセスのウィンドウは、他の仮想デスクトップに移動させることはできなかった の 3 つめの影響により「グローバル キーフックを使って現在アクティブなウィンドウを別な仮想デスクトップに飛ばすアプリ」が頓挫していた話をしました。 が、@tmyt の協力で完成しました。 どうやって回避したか (といっても、別に Windows 10 や IVirtualDesktopManager 固有の話ではなく、昔からあるネイティブなテクニック) の話は @tmyt のブログを待つとして 解説頂きました、せっかくなので完成したアプリの紹介をします。 SylphyHo
Windows 10 で仮想デスクトップ機能が加わり、個人的にそこそこ活用しているつもりなのですが、残念な点が 1 つ。 アクティブ ウィンドウごと仮想デスクトップを移動したいことが結構あるのですが、それに対するショートカット キーがありません。 仮想デスクトップ間の移動は Ctrl + Win + 左右キー ですが、ウィンドウも一緒に、となると基本的にはマウス操作を伴います (しかも結構面倒なやつ)。 一応、マウス使わずにやる方法もあるようですが、Ctrl + Win + 左右キー に近い手軽なものがほしいです… (フィードバック済み) で、公式で実装されるまでは自分でアプリ作るか、と思って Windows 10 の仮想デスクトップ周りの API を調べ始め、最終的に頓挫しました。 具体的には、以下のような状況です。 アプリ (C# コード) から仮想デスクトップの作成、削除、移動はでき
Japan C# Users Group の Visual Studio 2015 リリース記念勉強会 にて、.NET Framework 4.6 で WPF に加わった修正点について発表しました。 大きな変更はなく、細かい機能追加やバグ修正程度なのですが、2つ程ピックアップして紹介しています。 Transparent Child Window support WPF の子ウィンドウが透過できるようになります。 そもそも子ウィンドウをどういうときに使うのか… というと、Win32 相互運用シナリオや、MDI を実現したいケースでしょうか。 Win32 相互運用、つまり WPF ウィンドウ内に HwndHost (WebBrowser や WindowsForms コントロール、Win32 要素など) を表示するとき、MSDN にも記述がある通り、様々な制約があります。 特に、「HwndHo
ぶっちゃけると宣伝です。 5 月発売の日経ソフトウエア (7 月号) から、「基礎からわかる C# デスクトップ アプリ開発」という連載が始まっています。 主に「C# は知っているが、アプリを作ったことはない」という人に向けた、WPF アプリ開発の入門連載です。 全 6 回を予定しており、私と @tanaka_733 さんと隔月で担当しています。 日経ソフトウエア 新連載 基礎からわかる C# デスクトップアプリ開発 発売済みの連載第 1 回は私が担当しました。 初回ということで、WPF 概要と、簡単なデモアプリ作成を通じた特徴の解説になります。 WPF とは Visual Studio で WPF プロジェクト作成 XAML と分離コード (コード ビハインド) WPF の特徴 グラフィックス レイアウト コントロールとカスタマイズ Visual Studio Community 201
@kurosawa0626 さんが Photoshop のナビゲーター的なものを作りたい、という話をしていて、過去に似たようなものを作ったことがあったので共有してみます。 記事内のコードは WPF で書いたものですが、WinRT でも一部を除いてほぼ同じようなコードで書けるはずです。 2015/04/12 追記: @okazuki さんが、WinRT でやる場合の補足記事を書いてくださいました。 http://okazuki.hatenablog.com/entry/2015/04/11/195941 目標 今回は、Thumb コントロールを活用し、Photoshop のナビゲーターと同等のものを作ります。 ScrollViewer に表示されているコンテンツについて、以下を実現しましょう。 サムネイルの表示 Viewport (赤枠部分) の表示 赤枠のドラッグで Viewport の位
Unity のための C# 勉強会にて UniRx + Reactive Property のお話をさせて頂いたので、資料を公開します。 実は一晩で作った資料なのでいろいろ雑っぽい いろいろ準備不足すぎて大変アレでしたが… 会場には Rx に触れられたことのない方も多くいらっしゃったようで、Rx (UniRx) がどんなものか、触りだけでも知って頂ければ幸いです。 資料内にも書きましたが、ガッツリ勉強するなら以下のスライドは必読ですよ! Reactive Programming by UniRx for Asynchronous & Event Processing (@neuecc) 未来のプログラミング技術をUnityで ~UniRx~ (@toRisouP) 特に @toRisouP 先生の資料は、Rx のとっつきにくさを資料の解りやすさで解消するアプローチを取られていて、本当に素晴
日本 Android の会 Unity 部、Visual Studio Tools for Unity 勉強会にて LT させて頂きました。 タイトルを考えたのは @neuecc であり、私ではありません、断じて。 別に Boo に親を殺されたわけでもないし、特段恨みもありません! が、流石に Boo.Lang.dll は必要ないので、VSTU による .csproj の自動生成処理をフックして削除する方法についてご紹介しました。 要は LINQ to XML で好きに弄ればいいということです! ライブ コーディングした SATSUGAI 用コードは以下になります。 この方法を使えば、Q&A でも話題に上がった #define の追加や unsafe 関連の設定もできる、はず、です (実際にやったことはありませんが、いずれも .csproj に書かれる設定なので)。 うまく活用し、快適な
XAML Advent Calendar、今年も始まりました! http://qiita.com/advent-calendar/2014/xaml さっそく 1 日目担当ということで、この辺のライブラリ作成 で得たコントロール作成周りのネタを放出します。 …が、なんと Room metro #28 XAML Day にてすべて話してきてしまったので、今回はその資料を公開! ということで。。。 [slideshare id=42207950&doc=roadtouilibrary-141201043432-conversion-gate02] セッション中、半分くらいの時間はスライドではなく実際に Visual Studio を動かしてコードを書くデモを行っていたので、スライドだけ見ると物足りないかも… (これでも、デモしたコーディングや操作の手順はなるべくスライドに記載しました)。 以下
Twitter 等でお気付きの方も多くいらっしゃるかと思いますが… 7 月末日で株式会社日立ソリューションズを退職し、今月から株式会社グラニで働いています。 日立には 4 年と 4 ヶ月ほどお世話になりました。 転職の理由はお察しの通りです。 これから暫くは、ある時はネイティブ エンジニア (Unity)、ある時はツール エンジニア (WPF, etc…) として邁進します。 今後ともよろしくお願い致します。
技術ブログとは何だったのか… という内容ですが、Twitter で書ききれそうになかったのでこちらにまとめます。 艦隊これくしょん ~艦これ~ で現在開催中のイベント「期間限定海域【AL / MI作戦】」における最終ステージ (E-6) で私が攻略した方法になります。 はじめにお断りしておきますが、私も wiki を参考にしたほぼテンプレ通りの編成・攻略方法ですので、特に面白くはないです。 前提 司令部レベル 108 なので、敵編成はおそらく一番強いパターンです。 道中で夜戦セルを通るのが嫌すぎたので、夜戦のない北ルート固定で攻略していました。 また、このエントリー内の「索敵値」は、wikiwiki で有力視されている以下の式を使用したものです。 (偵察機索敵値 x 2) + 電探索敵値 + √(艦隊の装備込み索敵値合計 – 偵察機索敵値 – 電探索敵値) これは KanColleView
MetroRadiance という名前のライブラリを NuGet で公開したのですが、Visual Studio や Office のようにウィンドウの枠を簡単に光らせることができる機能が話題を呼んでいます (呼んでいません)。 要するに、KanColleViewer や私の自作アプリで使っている、UI ライブラリです。 自身のアプリのブランド化のために自作した Theme を使っているのですが、せっかくなので公開しました。 このエントリーでは、簡単なチュートリアルとして、Visual Studio のようにウィンドウの枠を光らせるところまでを解説します。 ウィンドウの枠を消す ここで言う「ウィンドウの枠」とは、Windows 側で描画・管理される非クライアント領域 (ウィンドウ クロームと呼ばれる部分) のことです。 Visual Studio や Office のようなウィンドウを作る
.NET 特化の CI サービス、AppVeyor を使って、ライブラリなどの C# プロジェクトを NuGet パッケージ化し NuGet Gallery にデプロイするところまでを自動化できます。 以前、@tanaka_733 先生が同様の記事を書かれていますが、その後 AppVeyor の機能が強化され、NuGet への push をより簡単に実施できるようになりました。 AppVeyor そのものについては、前述の @tanaka_733 先生の記事 か、@Posaune 先生の記事 が詳しいです。 .nuspec ファイルの配置 パッケージ マニフェストである .nuspec ファイルは、パッケージ化するプロジェクトの直下に、.csproj と同じ名前で作成し配置しておきます。 この状態で GitHub に push しましょう。 そして、AppVeyor の SETTINGS
第 4 回めとべや東京勉強会で、セッションのほかに LT もやったので、資料を公開します。 WPF には InkCanvas というストローク入力用のコントロールが用意されており、XAML で <InkCanvas /> と入力するだけで、筆圧検知付きのデジタル インク機能を使うことができます。 そして、InkCanvas はストローク入力のほか、インク情報 (色や太さなど) の変更、消しゴム機能などもサポートしており、手書きキャンバス機能をごく簡単に実装できます (その実装については、今回は割愛)。 で、今回の LT で言いたかったのは、ペン or タッチでのストローク入力のパフォーマンスが大変よろしい、という点です。 資料にある通り、UI スレッドのほかに 2 つのスレッドを使用しているためです。 LT 中にデモしましたが、UI スレッドが止まっていても、ストロークの入力&描画は止まり
第 4 回めとべや東京勉強会でセッションしました。 かつてない程のgdgdなセッションを披露してしまい大変反省。 やりたかったのは、KanColleViewer の開発ネタの放出と、de:code のデスクトップ アプリ関連情報のキャッチアップでした。 de:code、もうちょっとデスクトップの情報出てくるかなと思ってたんですが、実際はかなり少なくて、何喋るか直前まで迷った挙句の結果でした。 セッション中にデモした @CST_negi 氏作のかっこいいランチャーアプリですが、今回 WindowStyle.Note の例としてデモしたいがために GitHub で公開して頂きました。ありがとうございました。 https://github.com/NegishiTakumi/ARiALauncher 後半の Windows 8.1 の High DPI と WPF での対応方法については、当ブロ
WPF は .NET Framework アプリですし、Managed Extensibility Framework (MEF) を活用したプラグインに対応したアプリを作れるのも強みのひとつです。 @takeshik 氏が KanColleViewer に MEF によるプラグイン機構を実装してくださいました。 で、WPF アプリでプラグインとなると、プラグイン側の設定画面等々の画面をプラグイン側で用意し、かつその画面にテーマを反映させたいものですね。 MEF のサンプルそのものは MSDN 等でよく見かけるものの、WPF アプリで、かつ拡張側 (プラグイン側) で画面を用意した軽量なサンプルはなかなか見つけられませんでした (節穴 eye という可能性)。 ということで、自分で作りました。 ダウンロードはこちらから。 http://code.msdn.microsoft.com/Cre
題記の通りなのですが、一時ハマったので共有します。 正確には、「バックグラウンド スレッドで DispatcherObject を作るとメモリリークする」ですね。 例えば、バックグラウンドで画像をダウンロードして加工したり。 もしくは Grid や TextBlock といった UI 要素を使って、サムネイルやら何やらの画像を生成したいときとか。 ImageSource は Freezable なので、バックグラウンドで画像を作って Freeze() してしまえば、UI スレッドに渡してもだいじょうぶ。 なるべく UI スレッドの負担を減らしたいのです。 ということで、以下のようなコードを書いてみます。 サンプルなので Console アプリですが、PresentationCore, PresentationFramework, WindowsBase, System.Xaml あたりを参
2014 年 4 月期で Microsoft MVP Award を初受賞しました。 カテゴリーは Visual C# になります。 この 1 年間、XAML を中心としたアプリ開発技術に関する活動をしていましたが、まさかの Visual C# カテゴリーで頂きました (Client Development だと思ってた…)。 趣味だけでなく仕事でも何かと縁があり思い入れの強かった言語なだけに、このような形で評価して頂けたことを大変光栄に思います。 めとべや東京勉強会をはじめとしたコミュニティの活動でご協力頂いた方々、審査に関してご相談に乗って頂いた方々、本当にありがとうございました。 と言っても、これを境にやることが大きく変わるわけではありません。 XAML の柔軟さと表現力に魅せられて 3 年、私がいま最も注目しているのが XAML-based platforms の行方です。 Win
ご好評頂いている「提督業も忙しい!」ですが、実は日本語だけでなく、英語・中国語 (簡体字)・韓国語の4ヶ国語に対応しています。 また、@KatsuYuzu さんから pull request を頂き、実行中に使用言語を動的に切り替えられるようになりました。 (余談ですが、この pull request の内容について、@KatsuYuzu さんと Twitter の DM で会話していました。 そのため、最終的にマージしたコードに至る経緯等が issue から読み取れなくなっていて、惜しいなぁと思ってこのエントリー書いていたりします) 今回は、WPF アプリにおける国際化 (多言語化) と、実行中にアプリの言語を動的に切り替える手法を紹介します。 国際化、と言うと数値や日時の表記方法、UI 設計 (レイアウト時の自動サイズ設定など) まで含まれますが、今回はアプリ内の表示言語に絞ります。
システムメニューというのは、ウィンドウ左上のアイコンをクリックしたとき、またはタスクバーを Shift + 右クリック (Windows 7 以前は右クリックのみ) したときに出るメニューです。 最近、このシステムメニューを表示したくないという要件に遭遇しました。 WindowStyle プロパティを None に、ShowInTaskbar プロパティを false にすれば表示できなくなるように見えますが、実は Alt + Space キーでバッチリ表示されてしまいます。 今回は、WPF のウィンドウからこのシステムメニューを消してみます。 Win32API ズバリ、Win32API が必要のようです。使うのは、次のふたつの関数。 GetWindowLong 関数 SetWindowLong 関数 GetWindowLong 関数でウィンドウ スタイルを取得し、WS_SYSMENU を
デスクトップ アプリで、ウィンドウの位置を保存したいという要望はちらほら来ます。 ただし、真面目に実装しようとすると、細かい挙動まで実装するのが大変面倒です。 最大化して終了したら、最大化する直前のウィンドウの位置とサイズも保存しておかなければならなかったり。 何かベスト プラクティスはないかなーと思って調べたところ、MSDN に該当するコードがあったので、やってみました。 元ネタはこちら。 http://msdn.microsoft.com/ja-jp/library/vstudio/aa972163(v=vs.90).aspx 結局 P/Invoke だった! いかな WPF といえど所詮は Windows の民。P/Invoke の運命からは逃れられないのだ… という冗談は置いておいて、SetWindowPlacement 関数と GetWindowPlacement 関数を使います
めとべや東京勉強会にてセッションさせて頂きました。 「提督業は忙しい! ~ Internal of KanColleViewer」 「提督業も忙しい!」という艦これツールを開発したので、その開発動機や中身のお話です。 艦これ未プレイの方にはわからないネタ等入ってしまっておりますが、ご容赦ください。 アプリ開発の動機、なぜああいうアプリになったか、がご理解頂ければ幸いです。 また、テクノロジー面に関しては、UI がウケていた部分が大きかったと思っているので、Windows 8.1 時代のモダンな UI のデスクトップ アプリの作り方などを中心に紹介しました。 余談ですが、 プレゼン中に遠征帰投のトーストが出たのが仕込みであることがバレていて震えてる — ぐらばく (@Grabacr07) 2014, 1月 18 仕込みでした。ありがとうございました。
あけましておめでとうございます。 今年も C# や XAML を中心に情報発信していきますので、どうぞよろしくお願い申し上げます。 さて、当ブログで公開している艦これツール「提督業も忙しい!」ですが、version 1.2 で @Nrtwd 様より頂いたアイコンが実装されました。 今までは、[スタート] にショートカットを作っても、こんな残念な感じになっておりましたが… version 1.2 からこんな感じに。トースト通知にもアイコンが表示されます。すばらです。 だがしかし、タイルの色は黄色っぽくなるのかなーと思っていたら、なぜかグレーのまま。 他のデスクトップ アプリはアイコンの色に近いタイルの色が自動選択されているのに、KanColleViewer はなぜグレーなのか… ということで、今回はデスクトップ アプリが [スタート] 画面に表示されたときのタイルをカスタマイズします。Win
提督業も忙しい! (KanColleViewer) は、DMM.com が配信しているブラウザゲーム「艦隊これくしょん ~艦これ~」をより遊びやすくするためのツールです。 (画像クリックで拡大) 主な機能 高速修復材や高速建造材 (ゲーム内で確認しにくいやつ) のリアルタイム表示 司令部に所属している艦娘の数、保有している装備の数のリアルタイム表示 艦隊と、艦隊に属する艦娘、それぞれの近代化改修状況の一覧表示 装備と、それぞれを装備している艦娘の一覧表示 入渠ドック・建造ドックの使用状況と、整備・建造終了時のトースト通知 現在遂行中の任務の一覧表示と、残っているデイリー/ウィークリー任務の一覧表示 遠征の状況と、終了時のトースト通知 スクリーンショット保存 ミュート Chromium ベースの内蔵 Web ブラウザー (CefSharp.Wpf) 上で艦これを表示し、Nekoxy (HTT
次のページ
このページを最初にブックマークしてみませんか?
『grabacr.nét | PaaS (Patchouli as a Shachiku)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く