对于规范的方式来检查WindowsAPI中的文件大小?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍windowsapi判断文件是否存在,并为您提供关于C检查Windows10、winapi–
对于规范的方式来检查Windows API中的文件大小?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍windows api 判断文件是否存在,并为您提供关于C检查Windows 10、winapi – Windows API中有哪些定期计时器对象?、winapi – Windows API中的HANDLE和HWND之间的区别?、winapi – 如何在运行时检查Win32中的Windows版本?的有用信息。
本文目录一览:- 规范的方式来检查Windows API中的文件大小?(windows api 判断文件是否存在)
- C检查Windows 10
- winapi – Windows API中有哪些定期计时器对象?
- winapi – Windows API中的HANDLE和HWND之间的区别?
- winapi – 如何在运行时检查Win32中的Windows版本?
规范的方式来检查Windows API中的文件大小?(windows api 判断文件是否存在)
有没有一个规范的方式来检查在Windows中的文件的大小? 谷歌search带来了我FindFirstFile和GetFileSizeEx但没有明确的赢家。 GetLastError也必须被调用吗?
有没有免费的“添加连接”或“sql连接”对话框?
与pandas一起使用pyinstaller
不允许请求的registry访问C#窗口应用程序
如何获得另一个应用程序的图标?
Windows的C代码的内联编译失败
如果你只是想要的大小, GetFileSizeEx是明确的赢家。 是的, FindFirstFile也可以完成这项工作,但它确实是用于其他目的,除非你需要做其他的事情,否则它的使用很可能会误导或迷惑读者。
C检查Windows 10
编辑:找到一个正常工作的API RtlGetVersion()适用于所有操作系统的正确!
#include "windows.h" #include <iostream> using namespace std; BOOL EqualsMajorVersion(DWORD majorVersion) { OsveRSIONINFOEX osversionInfo; ::ZeroMemory(&osversionInfo,sizeof(OsveRSIONINFOEX)); osversionInfo.dwOsversionInfoSize = sizeof(OsveRSIONINFOEX); osversionInfo.dwMajorVersion = majorVersion; ULONGLONG maskCondition = ::VerSetConditionMask(0,VER_MAJORVERSION,VER_EQUAL); return ::VerifyVersionInfo(&osversionInfo,maskCondition); } BOOL EqualsMinorVersion(DWORD minorVersion) { OsveRSIONINFOEX osversionInfo; ::ZeroMemory(&osversionInfo,sizeof(OsveRSIONINFOEX)); osversionInfo.dwOsversionInfoSize = sizeof(OsveRSIONINFOEX); osversionInfo.dwMinorVersion = minorVersion; ULONGLONG maskCondition = ::VerSetConditionMask(0,VER_MInorVERSION,maskCondition); } int main() { if (EqualsMajorVersion(7) && EqualsMinorVersion(1)) printf("Maj:7 Min:1"); else if (EqualsMajorVersion(7) && EqualsMinorVersion(0)) printf("Maj:7 Min:0"); else if (EqualsMajorVersion(6) && EqualsMinorVersion(7)) printf("Maj:6 Min:7"); else if (EqualsMajorVersion(6) && EqualsMinorVersion(6)) printf("Maj:6 Min:6"); else if (EqualsMajorVersion(6) && EqualsMinorVersion(5)) printf("Maj:6 Min:5"); else if (EqualsMajorVersion(6) && EqualsMinorVersion(4)) printf("Maj:6 Min:4"); else if (EqualsMajorVersion(6) && EqualsMinorVersion(3)) printf("Maj:6 Min:3"); else if (EqualsMajorVersion(6) && EqualsMinorVersion(2)) printf("Maj:6 Min:2"); else if (EqualsMajorVersion(6) && EqualsMinorVersion(1)) printf("Maj:6 Min:1"); else if (EqualsMajorVersion(6) && EqualsMinorVersion(0)) printf("Maj:6 Min:0"); else if (EqualsMajorVersion(5) && EqualsMinorVersion(2)) printf("Maj:5 Min:2"); else if (EqualsMajorVersion(5) && EqualsMinorVersion(1)) printf("Maj:5 Min:1"); else printf("OS not on list..."); getchar(); }
解决方法
BOOL WINAPI IsWindows10OrGreater(void);
文件here.
编辑:雷蒙德的天才似乎有与原型相关的问题,或换句话说,OP得到一个未定义的符号错误,如评论中所述.还有这个功能:
BOOL WINAPI IsWindowsversionorGreater( WORD wMajorVersion,WORD wMinorVersion,WORD wServicePackMajor );
而对于Windows 10,wMajorVersion,wMinorVersion和wServicePackMajor分别为10,0和0.
该功能的文档here.
第二个编辑:它是官方的:IsWindowsversionorGreater()和GetVersionEx()从8.1起破坏.使用IsWindowsXXXOrGreater(),而XXX可以是XP,XPSP1,XPSP2,XPSP3,Vista,VistaSP1,VistaSP2,7,7SP1,8,8Point1,10或Server.
winapi – Windows API中有哪些定期计时器对象?
> Old style Windows timer
> Multimedia timers
> Waitable timer
> Timer queue timers
> Threadpool timers
Windows API中是否还有其他计时器类型?
解决方法
有关我的调查的详细信息,请参阅Why are .NET timers limited to 15 ms resolution?和http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=815.
这导致我在Windows下寻找可用的定期计时器对象.我确定了我在原始问题中发布的五种类型.我没有找到任何其他人.我放弃了旧式Windows计时器,因为我不想处理消息.然后我在C#中为其他四种计时器类型编写了托管原型并进行了一些测试.
所有四种定时器类型(多媒体定时器,等待定时器,定时器队列定时器和线程池定时器)提供可靠的1 ms间隔,具有非常好的分辨率.其中,Threadpool计时器是最容易与之交互的计时器,但遗憾的是它在Windows XP上不受支持.定时器队列定时器有一系列令人眼花缭乱的选项,但如果忽略大多数选项,它们几乎就像Threadpool定时器一样简单.有关详细信息,请参阅Exploring options for better timers.
我选择在.NET中为我的通用计时器类包装计时器队列计时器.你可以看到它here.
您可能也对Waitable Timers in .NET with C#感兴趣.
winapi – Windows API中的HANDLE和HWND之间的区别?
HWND和手柄之间有什么区别?
根据MSDN,HANDLE和HWND定义为:
> HANDLE是一个对象的handle.
> HWND是窗口的句柄.
所以,HWND是一个HANDLE,但并不是所有的HANDLE都是HWND.事实上:
typedef void *PVOID; typedef PVOID HANDLE; typedef HANDLE HWND;
例
除非你知道你在做什么,否则你只应将HWND传递给SetForegroundWindow.
HWND hWnd = FindWindow(NULL,"Calculator"); SetForegroundWindow(hWnd);
这首先使用FindWindow获取名为“Calculator”的窗口的句柄,然后将该窗口转到前台.
winapi – 如何在运行时检查Win32中的Windows版本?
GetVersionEx()
或
VerifyVersionInfo()
功能.
今天关于规范的方式来检查Windows API中的文件大小?和windows api 判断文件是否存在的分享就到这里,希望大家有所收获,若想了解更多关于C检查Windows 10、winapi – Windows API中有哪些定期计时器对象?、winapi – Windows API中的HANDLE和HWND之间的区别?、winapi – 如何在运行时检查Win32中的Windows版本?等相关知识,可以在本站进行查询。
本文标签: