草庐IT

c++ - 使用 Win32/C++ API 更改 Windows 7 墙纸(操作未实现异常)

以下代码适用于Windows8.1(已测试)但不适用于Windows7。std::wstringloc=L"C:\\Users\User\\Desktop\\wallpaper.jpg";BOOLret=SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(PVOID)loc.c_str(),SPIF_UPDATEINIFILE);当我在Windows7上运行该程序时,出现以下异常:First-chanceexceptionat0x76E3C41F(KernelBase.dll)inMyApp.exe:0xC0000002:Therequestedo

c# - 在 32 位机器上部署 64 位 C# winform 应用程序

我已经在64位机器上使用VS2012开发了一个C#winform应用程序,现在我想将它部署到32位机器上,但是我得到了“...不是有效的win32应用程序”形式的错误"每当我尝试在32位机器上安装和运行exe文件时。请建议我解决这种情况的最佳方法。谢谢! 最佳答案 听起来该项目是专门为x64编译的。纯.NET项目可以而且应该编译为“任何CPU”,这意味着它们将在x86和x64上运行。这通常是默认值。http://blogs.microsoft.co.il/sasha/2012/04/04/what-anycpu-really-mea

windows - 如何从 Windows 命令行 shell 脚本打开(锁定)文件?

我一直在读thisthread关于检测锁定的文件,现在我想在我的脚本中实现它,所以我需要一种在Windowsshell脚本中以编程方式检测它的方法。公认的解决方案提供了一种保持文件打开/锁定的方法:(>&2pause)>>test.txt但此解决方案需要按键。我想创建一个类似的Windowsshell脚本,如下所示:[Createandlockingofc:\Temp\ProgramRunning.lck]---------------RestoftheScript---------------[Blahblahblah]----------EndoftheMainBodytheScr

windows - 使用 shell 命令的 GNU MAKE 异常

我在WIN7PC上对我的项目运行make并收到以下错误:make:Interrupt/Exceptioncaught(code=0xc0000005,addr=0x0040b0ac)当删除一些make部件时,似乎以下行是有问题的:$(shellifexist$(1)echoYES)任何想法似乎是什么问题?解决方案?谢谢!更新:我正在使用gnumake3.81.1mingw32,同样的make和makefile用于我以前的WINXP(32位),升级到WIN7后出现问题。 最佳答案 好的,我想我明白了。显然它与PATH相关,如果我用预定

windows - 无法使用 powershell 从 32 位版本的 win2008 读取 64 位注册表项

我尝试使用powershell从32位Windows2008读取64位版本的WindowsServer2008r2上的以下注册表项,但该值显示为空白并且不返回任何值。可以帮助我了解如何从32位服务器读取64位注册key吗?$line="WIN-QENOBBC64B8"$regkey=[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$line)$ref=$regKey.OpenSubKey("SOFTWARE\Microsoft\MicrosoftS

c - Win32 - 在创建窗口之前拦截窗口的更好方法

我正在尝试自动化外部Windows应用程序。目标是在不显示任何事件窗口/启动画面且不从其他应用程序窃取焦点的情况下使此应用程序最小化启动。我用C编写了一个小程序,它在循环中调用EnumWindows()并使用ShowWindow()来最小化所需的窗口。它非常快,在80%的情况下都有效。不幸的是,有时应用程序窗口仍在显示并在短时间内窃取焦点。拦截窗口的更好(确定)方法是什么?使用SetWindowsHookExHook是唯一的选择吗? 最佳答案 您是否尝试过使用STARTUPINFOstructure的wShowWindow成员?你传

c++ - 在 win32 应用程序中动态设置 DPI 感知级别

我正在寻找任何方法来动态设置DPI感知级别(基于用户输入)。我遇到了this.它建议我应该使用setProcessDpiAwareness功能来设置意识水平。但此api调用仅受Windows8.1预览版支持。我可以使用任何其他方法动态设置Windows7及更高版本支持的Dpi感知级别吗?提前致谢。 最佳答案 在Windows8.1中每个显示器的DPI感知出现之前,有SetProcessDPIAware,从Vista开始支持。但是,令我印象深刻的是,您可能希望在运行时做出此决定。最佳做法是将应用程序设计为具有高DPI感知能力,并将这种

c++ - _WIN32_WINNT 定义在 header 中更改,这是否会导致二进制不兼容?

在VS2010中,我正在努力将应用程序更新到第三方库的新版本,该库要求_WIN32_WINNT至少为0x501,但另一个提供二进制共享库的第三方共享库在header中将其定义为0x500包含在应用程序中。如果修改了,是否会出现二进制不兼容或者这是一个无关紧要的更改?我是否必须从将其定义为0x500的库中请求新的二进制文件?我不确定如何判断这是否需要新的bin——我认为如果任何类/结构的大小或命名发生变化,或者任何方法/函数签名发生变化,则需要进行新的编译。 最佳答案 简短的回答:可能不会,但如果是的话,那你就进退两难了。长答案:_W

windows - Shell 函数对可执行文件的位置和路径中的空格都敏感

直到最近这个VB6代码才在我的windows764位机器上运行Shell"c:\MyApp\Helpers\Helper.exe"现在抛出的错误信息是Invalidprocedurecallorargument(Error5)由于它停止工作,我发现将目录Helpers移动到桌面可以解决问题。通过重命名也可以摆脱路径中的空间MyApp文件夹为MyApp插入开始和结束引号也是如此:Shell"""c:\MyApp\Helpers\Helper.exe"""同时,如果Helpers文件夹在桌面上,我可以通过重命名文件夹“Helpers”在路径中插入一个空格,它仍然可以在没有额外引号的情况下工

c++ - Win32 文件 IO 工作但 fopen 等。阿尔。失败。这里发生了什么?

以前从来没有过。如果我使用fopen()等函数从磁盘读取文件,fopen会成功,但FILE*内容看起来有点NULL-ish。然后我尝试fseek(SEEK_END)并报告文件大小为0字节。如果我对CreateFile()、GetFileSize()、ReadFile()执行相同的操作,它就会起作用。相同的功能,相同的路径...VS2013社区版,Win7x64,64位编译。我测试的文件很小(从不超过400字节)。它们位于E:盘(E:\temp),这是一个本地分区。我有什么想法需要焊接我的电脑来解决这个问题吗?:)staticvoidLoadFile(conststd::string&p