次ページへ »
iOSの組み込みブラウザであるWKWebViewでは、標準状態ではクロスドメインアクセスを認めていないため、内部のJavaScriptからXMLHttpRequestを呼び出そうとするとエラーになります。これを解決するにはWKWebViewConfigurationで「allowUniversalAccessFromFileURLs」を定義します。

ここで注意したいのは「config.Preferences」ではなく「config」のキーとして登録すること。そうでないと、キーの定義が存在しないと例外が発生し、いつまで経っても有効になりません。

こちらはXamarin.iOSによるプログラム例です。
WKWebViewConfiguration config; WKUserContentController controller; public WKWebView WebView { get; private set; } public override void LoadView() { base.LoadView(); config = new WKWebViewConfiguration(); controller = new WKUserContentController(); config.UserContentController = controller; config.Preferences.SetValueForKey(FromObject(true), new NSString("allowFileAccessFromFileURLs")); config.SetValueForKey(FromObject(true), new NSString("allowUniversalAccessFromFileURLs")); WebView = new WKWebView(CGRect.Empty, config); WebView.Layer.RemoveAllAnimations(); WebView.UIDelegate = this; this.View = WebView; }
, | 2018年6月14日
従来のWindows 10におけるUWPアプリでは外部ストレージなどのフォルダーに強い制限がかかっており、ローカルフォルダーを除き、マニフェストで関連付けられた拡張子以外は一切参照できませんでした。ところが2018年4月より配信されたWindows 10 Spring 2018 Update(1803)では、ユーザーが許可していれば、すべてのファイルにアクセスできるようになっています。

UWPでフルファイルアクセスを実現には、appxmanifestで「rescap」名前属性を定義した上で「broadFileSystemAccess」を宣言するだけです。

<?xml version="1.0" encoding="utf-8"?> <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap mp rescap"> <Capabilities> <Capability Name="internetClient" /> <rescap:Capability Name="broadFileSystemAccess" /> </Capabilities> </Package>


これで、ウィンドウズの設定ウィンドウの「設定→プライバシー→ファイルシステム」にアプリが追加され、ユーザーに許可を求めることができるようになります。


ただし、注意することがあります。従来の外部フォルダーにアクセスする「Windows.Storage.StorageFolder.KnownFolders」でアクセスできるのは旧来のファイルシステムであるため、たとえマニフェストでライブラリーアクセスを定義済みでも、ここからはすべてのファイルを取得することはできません。

ライブラリーにアクセスしたい場合は「StorageFolder.path」で実体のあるパスを取得して「StorageFoloder.GetFolderFromPathAsync」でフォルダーオブジェクトを得るようにしましょう。

async void Exec() { var pf = await KnownFolders.PicturesLibrary.GetFoldersAsync(); var f = await StorageFolder.GetFolderFromPathAsync(pf[0].Path); var fs = await f.GetFilesAsync(); foreach(var ff in fs) { // 何らかの処理 } }

また、マイクロソフトのドキュメントによると、これを定義したアプリは審査に時間がかかるので、余裕を持って申請しましょうとのことです。
 | 2018年5月9日
2018年5月時点で、Universal Windows Appの標準APIでフォントを調べる命令はないため、DirectWriteを介して取得します。DirectWriteはCOMベースのAPIでC#のみで完結させるにはインターフェイスの作成などで骨が折れるので、C++/CXランタイムライブラリを別に作ってやりとりした方がよいでしょう。このプログラム例ではフォントの名前の一覧を文字列配列として返します。日本語名を優先的に取得したい場合、localenameには「ja-jp」を指定します(C#側での例:string[] fontnames = NativeFont.NativeFont("ja-jp");)。

#include <collection.h> #include <Dwrite.h> using namespace Platform; using namespace Platform::Collections; using namespace Windows::Foundation::Collections; namespace NativeFont { public ref class NativeFont sealed { public: static IVector<Platform::String^>^ Enum(String ^localename) { Vector<Platform::String^>^ res = nullptr; IDWriteFactory *dwf = nullptr; IDWriteFontCollection* fc = nullptr; HRESULT hr; hr = DWriteCreateFactory( DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), reinterpret_cast<IUnknown**>(&dwf) ); if (FAILED(hr)) goto EXIT; hr = dwf->GetSystemFontCollection(&fc); if (FAILED(hr)) goto EXIT; const int namelen = 512; wchar_t name[namelen]; UINT32 count = fc->GetFontFamilyCount(); res = ref new Vector<Platform::String^>(count); for (UINT32 i = 0; i < count; i++) { IDWriteFontFamily* ff = nullptr; hr = fc->GetFontFamily(i, &ff); if (SUCCEEDED(hr) == true) { IDWriteLocalizedStrings* fnames = nullptr; hr = ff->GetFamilyNames(&fnames); UINT32 index; BOOL exists; hr = fnames->FindLocaleName(localename->Data(), &index, &exists); if (SUCCEEDED(hr) && exists == FALSE){ hr = fnames->FindLocaleName(L"en-us", &index, &exists); } if (exists == FALSE) index = 0; fnames->GetString(index, name, namelen); res->SetAt(i, ref new String(name)); } } EXIT: if (fc) fc->Release(); if (dwf) dwf->Release(); if (res == nullptr) return ref new Vector<Platform::String^>(); return res; } }; }
こちらからダウンロードできるサンプルでは、C#のUWPプロジェクトのテキストエディタに、取得できたフォント名を列挙しています。

 | 2018年5月8日
HTMLの背景色。Chromeでは「-webkit-print-color-adjust:exact;」というCSSで強制的に印刷させることが出来ますが、Microsoft Edgeではユーザーが明示的に背景の印刷を指定しないと、background-colorプロパティーは反映されません。JavaScriptを使えば、Canvasやimgを動的に描画・生成してセルに重ねる方法もありますが、テーブルセルのような小さな枠であれば、以下のように太い内枠を描いた矩形を重ねることで代用が出来ます。

<style> th{ position:relative; overflow:hidden; } th .bg{ position:absolute; left:0;right:0;top:0;bottom:0; box-sizing:border-box; border:1em solid red; z-index:-1; } </style> <table> <tr> <th class="title" colspan="2"><div class="bg"></div>(Subtitle)</th> </tr> </table>


2018年4月30日
カッターナイフの元祖・オルファの「特専黒刃」は、刃を薄く削ることで耐久性を犠牲にして切れ味を向上させた商品です。これの小サイズの刃の幅は同社のアートナイフの溝幅とほぼ同じなので、切り取った刃をアートカッターに差し込んで使用できるのです。


元ネタは森慎二氏のプラモデル技巧書「切る、貼る、削る&塗る」より。表題の通り、ほかにも細かい切断や塗装に関する様々なテクニックが紹介されており、工作の参考になります。
2018年3月22日
WindowsデスクトップでIMEの状態をアイコンとして任意の位置に表示するユーティリティーソフト「IMEステータス」の最新版となるVer 3.2をWindows 7/8.1版とWindows 10版の双方を一般公開いたしました。Ver 3.2ではこれまでに寄せられた不具合の報告で、仮想デスクトップでアクティブウィンドウまでデスクトップ間をまたいでしまう、一部のマウス・キーボードユーティリティソフトと競合してしまうなどの、修正可能であったものを解決いたしました。

また、新たに「かな・ハングルロック状態」の状態もアイコンとして視認できるようになりました。アイコンの数が増えすぎたのにともない、ロックキー状態の表示方法にオプションを追加しており、サンプル画像における「歯抜け」をなくすことができるようになっています。

 | 2018年3月15日
WindowsデスクトップでIMEの状態をアイコンとして任意の位置に表示するユーティリティーソフト「IMEステータス」が、オンラインソフト配信の大手「ベクター」にて紹介されました。ベクターでダウンロードできるバージョンは、Windows 7/8.1に対応しており、無料でご利用いただけます。Windows 10をご利用の方はマイクロソフトストアよりお買い求めください。

 | 2018年3月5日
このたび、IMEの状態をリアルタイムに視認できるユーティリティーソフト「IMEステータス」の最新版となるVer 3.0を公開しました。

最新版ではマイクロソフトの審査を通過し、デスクトップブリッジアプリとして公開できるように、機能を大幅に調整しています。例えば、アプリ間でのIME切り替え機能を削除する一方で、旧バージョンでは対応していなかったストアアプリ(UWP)での動作や、アクティブなコントロールの左上に常駐するモードなどの新機能が追加されました。詳しくはTNKソフトウェアのソフトウェア紹介ページをご覧ください。

2018年2月14日
対象のウェブページを1つのHTMLファイルとして保存するGoogle Chorme拡張「シングルHTMLダウンローダー」の最新版・Ver 1.8を公開いたしました。今回のアップデートではファイルサイズの大きい画像の変換に失敗する問題を修正しています。

また、おかげさまでオンラインソフト紹介サイト「窓の杜」の2017年度のベストソフトを選ぶ「窓の杜大賞2017」にノミネートされました。抽選でニンテンドーSwitchなどが当たりますので、ふるってご投票ください。
 | 2017年12月16日
対象のウェブページを1つのHTMLファイルとして保存するブラウザ拡張「シングルHTMLダウンローダー」の「Internet Exploereのmht形式のようにそのままウェブページを保存でき、しかも他のブラウザでも参照可能」という利便性が評価され、オンラインソフト紹介サイト「窓の杜」の2017年度のベストソフトを選ぶ「窓の杜大賞2017」にノミネートされました。

シングルHTMLダウンローダーはGoogle ChromeとFirefoxでお使いいただけます。もしあなたのお気に入りに加わったのであれば、ぜひ投票してください。
 | 2017年12月8日
次ページへ »