GVKun编程网logo

规范的方式来检查Windows API中的文件大小?(windows api 判断文件是否存在)

12

对于规范的方式来检查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 判断文件是否存在)

规范的方式来检查Windows API中的文件大小?(windows api 判断文件是否存在)

有没有一个规范的方式来检查在Windows中的文件的大小? 谷歌search带来了我FindFirstFile和GetFileSizeEx但没有明确的赢家。 GetLastError也必须被调用吗?

有没有免费的“添加连接”或“sql连接”对话框?

与pandas一起使用pyinstaller

不允许请求的registry访问C#窗口应用程序

如何获得另一个应用程序的图标?

Windows的C代码的内联编译失败

如果你只是想要的大小, GetFileSizeEx是明确的赢家。 是的, FindFirstFile也可以完成这项工作,但它确实是用于其他目的,除非你需要做其他的事情,否则它的使用很可能会误导或迷惑读者。

C检查Windows 10

C检查Windows 10

我正在制作一个应用到操作系统的应用程序,但我似乎不能缩小 Windows 10,它出现在Windows 8上.我已经在Window 10 Pro上测试了,结果是Major:6 Min:2.还有另一种方法来检查它是否更有效率的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中有哪些定期计时器对象?

winapi – Windows API中有哪些定期计时器对象?

在研究比.NET计时器对象提供的15 ms分辨率更好的选项时(见 https://stackoverflow.com/questions/3744032/why-are-net-timers-limited-to-15-ms-resolution),我正在研究Windows提供的不同计时器对象.我发现了以下内容:

> Old style Windows timer
> Multimedia timers
> Waitable timer
> Timer queue timers
> Threadpool timers

Windows API中是否还有其他计时器类型?

解决方法

我问了这个问题,因为我对实现一个定期计时器很感兴趣,这个计时器比.NET提供的计时器更精细.我对这些计时器的调查(Windows.Forms.Timer,System.Timers.Timer和System.Threading.Timer)表明,我所希望的最好的是15毫秒粒度,精度为-1到30毫秒.这对大多数应用程序来说都很好,但不适用于我正在处理的应用程序.

有关我的调查的详细信息,请参阅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之间的区别?

winapi – Windows API中的HANDLE和HWND之间的区别?

我试图使用函数SetForegroundWindow(HWND hWnD).我有一些句柄,但它不能作为上述函数的参数.我的句柄是一个线程,我想在前台运行它.

HWND和手柄之间有什么区别?

他们只是 abstract data types.

根据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版本?

winapi – 如何在运行时检查Win32中的Windows版本?

在运行时如何检查Win32中的 Windows版本?
使用 GetVersionEx()VerifyVersionInfo()功能.

今天关于规范的方式来检查Windows API中的文件大小?windows api 判断文件是否存在的分享就到这里,希望大家有所收获,若想了解更多关于C检查Windows 10、winapi – Windows API中有哪些定期计时器对象?、winapi – Windows API中的HANDLE和HWND之间的区别?、winapi – 如何在运行时检查Win32中的Windows版本?等相关知识,可以在本站进行查询。

本文标签: