Articles of Windows

如何使WPF窗口标题的文本长度大于255个字符?

在VS2015中创build了WPF应用程序。 将窗口标题设置为长度为290的string。 Title = "123456789 223456789 323456789 423456789 523456789 623456789 723456789 823456789 923456789 133456789 233456789 333456789 433456789 533456789 633456789 733456789 833456789 933456789 143456789 243456789 343456789 443456789 543456789 643456789 743456789 843456789 943456789 153456789 253456789 "; 运行应用程序时,标题被截断为255个字符(跨2个屏幕最大化窗口和窗口)。 如何增加显示字符的数量? WPF窗口标题允许的最大长度是多less? 我试过了 如何设置WPF窗口的宽度等于其标题栏中的内容? 在代码和XAML中设置标题栏文本。

我在哪里可以find一个Windows API常量列表,在一个没有.NET的环境

我想find一些Windows API常量的值,例如但不限于LVM_ENABLEGROUPVIEW & WM_SHOWWINDOW 在网上看着我到MSDN ,告诉我他们是用什么,但不是底层的价值观。 在stackoverflow有一个非常类似的问题, 我在哪里可以find一个Windows API常量的列表 ,但所有的答案是.net,或者假设我有Windows SDK,据我所知我没有。 那我在哪里可以find他们? 如果它有所作为,我正在使用delphi2007年,虽然它在消息单位有很多的内容,它并没有包括所有这些,包括一些最新的。 谢谢

使用多个线程访问单个文件

我需要与多个线程同时访问一个文件。 这需要同时完成,没有线程序列化出于性能原因。 该文件特别是用“临时”文件属性创build的,它鼓励Windows将文件保存在系统caching中。 这意味着大部分时间文件读取不会靠近磁盘,而是从系统caching中读取文件的一部分。 能够同时访问这个文件将显着提高我的代码中某些algorithm的性能。 所以,这里有两个问题: 是否有可能从不同的线程同时访问相同的文件? 如果是这样,你如何提供这种能力? 我已经尝试创build临时文件并再次打开文件以提供两个文件句柄,但第二次打开不成功。 这是创build: FFileSystem := CreateFile(PChar(FFileName), GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL OR FILE_FLAG_RANDOM_ACCESS OR FILE_ATTRIBUTE_TEMPORARY OR FILE_FLAG_DELETE_ON_CLOSE, 0); 这是第二次打开: FFileSystem2 := CreateFile(PChar(FFileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL OR FILE_FLAG_RANDOM_ACCESS OR FILE_ATTRIBUTE_TEMPORARY OR FILE_FLAG_DELETE_ON_CLOSE, 0); 我已经试过各种组合的标志,迄今为止没有成功。 第二个文件打开总是失败,消息的影响是文件无法访问,因为它正在被另一个进程使用。 编辑: 好,还有更多的信息(我希望不要迷失在这里的杂草里) 有问题的进程是在WinXP 64上运行的Win32服务器进程。它维护着大型的空间数据库,并希望在L1 / L2caching结构的内存中尽可能多地保留空间数据库。 L1已经存在。 L2作为一个“临时”文件存在,保留在windows系统caching中(这是一个肮脏的伎俩,但绕过win32的内存限制)。 […]

在python中截取应用程序,无论前面是什么

所以我可以使用PIL来抓取桌面的截图,然后使用pywin32来获得它的矩形,并裁剪出我想要的部分。 但是,如果在我想要的窗口前面有东西,它会遮挡我想要的截图的应用程序。 有没有什么办法可以得到一个应用程序当前显示的窗口? 它有这样的数据,即使其他窗口在它的前面。

什么是32位和64位c + +代码?

我试图从registry项中获取一个值,最终的程序必须在32位和64位的机器上工作。 目前的代码是: HKEY hKey; LONG Result1; LONG result2; Result1 = RegOpenKeyEx(HKEY_CLASSES_ROOT,L"Word.Application\\CurVer",0,KEY_READ,&hKey); cout << Result1; cout << "\n"; TCHAR value[255]; DWORD BufferSize = 255; result2 = RegGetValue(hKey, L"Word.Application\\CurVer", L"", RRF_RT_ANY, NULL, (PVOID)&value, &BufferSize); cout << result2; 我从RegGetValue得到了错误'2',并且看到这个RegOpenKeyEx / RegGetValue返回ERROR_FILE_NOT_FOUND,它存在于表示在64位操作系统上'32位代码'不起作用,但我不明白这是什么意思 它是必须为不同的体系结构编译的程序,还是RegGetValue特定于32位? 对不起,我的大部分C ++编程都是在64位计算机成为主stream之前完成的,而我之前编写的偶尔的项目都没有遇到这个问题。

在Windows 8中注册协议处理程序

我试图注册我的应用程序,将处理链接开放,E,克, http://stackoverflow.com 。 我需要为Windows 8明确地做到这一点,我有早期的Windows版本。 根据MSDN,这在Win8中已经发生了变化。 我已经通过MSDN上的MSDN(msdn.microsoft.com/en-us/library/cc144154.aspx)页面上的默认程序页面。 它提供了一个处理文件types的很好的演练,但对协议的细节很less见。 注册一个应用程序到一个URL协议只会涉及到build立一个新的协议所涉及的步骤,而不是如何正确地添加一个新的处理程序到现有的协议。 我也尝试了其他SOpost中列出的registry设置。 还有一件事,该应用程序不是一个Metro / Windowsapp store应用程序,所以在清单中添加一个条目将不适用于我。

从C#调用MsiEnumRelatedProducts正在崩溃

我毫不费力地从C#中调用MsiEnumRelatedProducts。 我已经尝试了几个p / invoke定义的变体,但没有运气(out和ref)。 我认为问题是最后一个参数,这是一个LPTSTR应该指向一个39个字符的string。 以下是密码和电话: public static string EnumRelatedProducts(string UpgradeCode, int Index) { string ProductCode; UInt32 rc = MsiEnumRelatedProducts(UpgradeCode, 0, Index, out ProductCode); Console.WriteLine("Returned"); if (rc != 0) { return string.Empty; } return ProductCode; } [DllImport("msi.dll", CharSet = CharSet.Auto)] private static extern UInt32 MsiEnumRelatedProducts(string UpgradeCode, int reserved, int Index, out string ProductCode); 请注意,只有当传递的UpgradeCode至less有一个已安装的产品时才会发生崩溃。

FindFirstFile / FindNextFilerecursionsearch没有find“程序文件”

我已经用C编写了一个应用程序,它使用FindFirstFile / FindNextFile Windows APIrecursionsearch从C:开始的目录。 它成功地遍历文件系统并查找和search所有子目录,但无法search“Program Files”目录。 有没有我在这里失踪的权限问题? 我应该注意到正在运行的应用程序在SYSTEM帐户的上下文中,该帐户是具有访问“程序文件”权限的帐户。 有没有人经历过这个? 我已经完成了很多关于这个问题的答案,但到目前为止还没有发现这种行为的确定性原因。 这里是我用来search目录的代码: static void SearchDirectory(PCHAR pszDirectory) { CHAR szSearch[MAX_PATH] = {0}; CHAR szDirectory[MAX_PATH] = {0}; HANDLE hFind = NULL; WIN32_FIND_DATAA FindFileData; sprintf_s(szSearch, MAX_PATH, "%s%s", pszDirectory, "*"); hFind = FindFirstFileA(szSearch, &FindFileData); if(hFind == INVALID_HANDLE_VALUE) return; do { // Do file processing here etc if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY […]

延迟加载DLL

我迫切需要帮助,我需要在Visual Studio中pipe理应用程序依赖项。 应用程序仅在特定版本的Windows上链接到DLL,可以说Windows 7,而在其他环境下,不应加载该DLL。 我将如何能够实现这一点,使用DLL延迟加载作为这个话题对我来说是全新的,并没有任何关于这个特定的事情在线提供很好的参考。 问候

以编程方式在Windows 8上排列文件夹

Windows 8似乎不会在个别文件夹上保留sorting顺序。 我猜测当explorer.exe终止(如重新启动时)这些偏好被丢弃? 打我,我所知道的是一段时间后(如几天),这些偏好完全丧失。 有没有办法在Windows资源pipe理器中以编程方式复制文件夹的sorting(select上下文菜单中的“sorting”选项之一)? 这样,说我有一个文件夹在Windows用户界面中打开。 说当前文件夹设置为按“名称”进行sorting,运行程序后,将按大小对其进行sorting,我再次检查Windows资源pipe理器中的sorting顺序,现在它说“大小”? 我有一个特定的大文件夹结构,我希望它的所有和它的子文件夹按大小永久sorting。 所以我想在查看它们之前运行这个程序,而不必单独手动重新sorting它们。 谢谢!