带有Windows标签的文章


几个月前在翻MSDN时发现Microsoft已经允许在Windows Store Apps(即UWP)里使用Chakra的API了。这意味着大家终于可以光明正大地在app中调用Javascript。//另外UWP允许JIT了所以你自己移植个V8上去其实也行 在8.x时代,Chakra是被标记为Desktop only的API,想要在Store apps里使用js,要么整个App使用HTML/js编写,要么使用WebView调用。前者显然不符合主要使用C#/XAML编写UI的前提,后者麻烦的要死,不好用。 UWP写起来真舒服(棒读) 使用Chakra之前需要较为深入地了解Chakra API,COM和JavaScript。其实不了解直接照抄代码拿着用也没什么不好,就是出了错之后不好排除。 使用C#调用Chakra API UWP是可以直接使用chakra.dll大部分函数的,除去JsStartProfiling JsStopProfiling JsEnumerateHeap…

做播放器时一般人多多少少都会遇到点字符乱码的问题,这些乱码基本都是出在mp3等老旧的格式上。这大概都是因为这些音频文件使用不遵循编码标准的软件制作而成。解决方法似乎也不怎么好(至少我的乱码mp3没有办法解决),不过MLang API作为Windows系统自带的API(Universal App可用)是非常方便好用的窄字符串编码检测方式,特定情况下非常好用。 使用方法非常简单: #include <MLang.h> HRESULT DetectCodepage(char* text, int* codePage) { IMultiLanguage2* iml; HRESULT hr = CoCreateInstance(CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER, IID_…

几个月之前我写了一篇文章讲怎么把C++/CX的异步操作同步执行(https://hjc.im/winrt-ckai-fa-zhi-yi-bu-zhuan-tong-bu/ ),当初做这个其实最主要就是为了给ffmpeg读写文件。 不过如果只是为了读写文件,这样是个比较笨的办法,更好的办法是使用API函数CreateStreamOverRandomAccessStream直接将IRandomAccessStream转换成COM的IStream。 IStream* fileStreamData; HRESULT hr = CreateStreamOverRandomAccessStream( reinterpret_cast<IUnknown*>(stream), IID_PPV_ARGS(&fileStreamData)); if (!SUCCEEDED(hr)) { ...处理异常 } 得到一个IStream对象之后就可以使用它来读写流了。 例如读取: uint8_t* buf…

首先澄清一下,这篇文章并没有讲如何用Metro App弹UAC,而讲的是如果用户在一个全屏的Metro app里,那么如何让桌面Program弹出的UAC正常地被用户看到。当然,在Windows 10预览版已经发布的时候谈这个话题可能已经有点晚了,因为Windows 10当前版本根本不存在这个问题。 熟悉Windows 8.1的用户肯定知道,当用户打开了一个全屏的Metro App时,大部分桌面程序如果弹出UAC,是不会直接出现在屏幕上的,而是会出现在任务栏上闪动(如下图)。 其实这个比较影响用户体验,因为用户在全屏App中根本看不到任务栏,而容易错过这样的提示。(错过了不一定是坏事,因为弹UAC窗口真的是打扰用户的行为) 查找了一下相关资料,巨硬从某个Windows版本之后,只有当创建UAC进程的父进程的窗口句柄在最前端时才会直接显示UAC安全桌面(Secure desktop),其它的情况下将会在任务栏上显示闪动的盾牌图标。 于是这个问题就比较好解决了,以C#的Process为例,创建进程时可以设置ErrorDialogParentHandle属性指定父窗口句柄。…

其实这是因为布卡漫画官方给WP8第三方客户端留了坑,才有的一个解决方案。 事情是这样的: 某天UVE开发组的一个成员跟我说WP8布卡漫画里出现了奇怪的东西导致看不了,于是我向作者反馈了一下。后来作者告诉我是布卡漫画官方接口变化,并且引入了webp格式图片。 于是我就试着做了一个libwebp的Wrapper,可以给Silverlight使用。 项目使用了谷歌官方的libwebp,编译到Windows Phone 8.0 Silverlight,并使用LoadPackagedLibrary加载dll,获取函数指针后调用。只支持解码到RGB,BGR,RGBA,BGRA四种。 这个wrapper仅为Silverlight编写,如果是Windows Runtime App,可以使用更加高效的P/Invoke直接调用。 下载:https://blog.ligstd.com/HJC.LibWebP.Demo.…

本来Strongswan搭建IKEv2 VPN有一篇很好的教程(在nsshell.com上),但是貌似nsshell.com貌似挂了(反正我打不开),于是我就做个搬运,把教程拿过来。。正好原文中有一两处遗漏,我也好补上去。 重要说明:本文原本只是给自己留一个参考,但似乎已经有很多人参考了这篇文章。一个月来我已经人工帮助了将近10个人无偿排查疑难问题。而作为一个学生,并没有多余的精力做这些事情。因此以后请不要找我问如何搭建VPN,谢谢。 条件: RAM大小合适的VPS或者服务器(96MB RAM就足够了,64MB RAM未测试) 可以是OpenVZ,但注意看教程中标注的针对OpenVZ的特殊步骤。 1.准备工作 请在虚拟机或服务器上安装好Ubuntu操作系统,32位、64位均可,建议14.04 LTS,…