我正在使用 Chrome 的 dev-channel v23,并且正在使用新的Chrome Packaged Apps平台。
新平台的一个目的是将打包的应用程序“从浏览器中取出”,并为打包的应用程序提供顶级窗口状态。我有很多工作要做,但是 Chrome 为我打开的窗口没有标题栏,也没有最小化、最大化按钮。它确实有 chrome 的自定义关闭按钮(就像设置对话框等内部窗口上的那个)。
您可以隐藏关闭按钮,并在 html/js 中提供自定义的最小/最大/关闭功能,但它在功能和外观上破坏了 UX。如果 chrome 的目标是使我的应用程序的外观和功能与其他所有顶级窗口一样,那么系统特定的标题栏(带有窗口状态按钮)在哪里?
我错过了什么吗?这可以通过某种我没有看到的 API 来完成吗?
谢谢,蒂姆
*我知道我可以使用“none”框架类型,并创建我自己的标题栏,但无法考虑所有平台的变化。这是一个窗口。我的意思是,如果目标是像任何其他顶级窗口一样,那么打开一个标准的平台特定窗口并给我一个客户区来使用。我会说自定义是次要的标准窗口,与特定操作系统上每个其他窗口的功能和外观一致。
我玩弄抽象的Windows,Linux和Mac文件IO调用到宏(避免C运行时,所以没有fopen,fclose等...).我实际上有相当多的工作,但我遇到了绊脚石.
我试图将这些平台中可能抛出的所有可能错误归结为常见的错误:未找到,存在,无效访问等.
Linux显然是很好的文档,Mac甚至有最常见的文档,但Windows没有指定为其本机文件I/O函数抛出哪些错误.我们显然需要使用GetLastError(),但我找不到可能值的参考.
我正在编写Windows应用程序并使用CreatFile()API.我想尽可能优雅地处理任何错误,并且可能从错误中恢复,而不是告诉用户"废话!不能那样做".但是MSDN文档没有列出可能生成的错误代码.
有没有人引用Windows文件函数可能生成的错误代码,具体来说(现在)CreateFile()?
使用VirtualAllocAPI分配和提交具有两个页面边界大小的幂的虚拟内存区域时,例如:
void* address = VirtualAlloc(0, 0x10000, MEM_COMMIT, PAGE_READWRITE); // Get 64KB
Run Code Online (Sandbox Code Playgroud)
在address似乎永远在64KB对齐,而不仅仅是页面边界,这在我的情况是4KB。
问题是:这种一致性是可靠和明确的,还是偶然的? 文档指出,它保证在页面边界上,但是没有解决我所看到的问题。我问是因为稍后我想获取一个任意指针(由使用此块的池分配器提供),并通过类似于以下内容的方法确定它属于哪个64KB块:
void* chunk = (void*)((uintptr_t)ptr & 0xFFFF0000);
Run Code Online (Sandbox Code Playgroud) 该CryptoJS.AES.decrypt函数返回一个空的 WordArray。
我的参数是secret、key、 和iv。key是一个256位WordArray并且被确认是正确的,iv是一个128位WordArray并且也被确认是正确的。
秘密是使用 php 加密的openssl_encrypt()- 明文是 32 字节 - 结果是 48 字节(所以它似乎填充正确)。
我已经尝试将 Secret 作为 WordArray、十六进制字符串和 base64 字符串,但是当我调用时:
var decrypted = CryptoJS.AES.decrypt(secret, key, {iv: iv});
Run Code Online (Sandbox Code Playgroud)
解密后是一个空的WordArray。这让我发疯......什么是失败?我认为错误是在某个秘密的地方,有填充格式或奇怪的东西,但是Cryptojs和 openssl_(encrypt/decrypt)之前已经证明对我来说是彼此兼容的。请在我失去理智之前帮忙。