win32

Win32 API Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外,它同时也是⼀个很⼤ 的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程序达到开启 视窗、描绘图形、使⽤周边设备等⽬的,由于这些函数服务的对象是应⽤程序(Application),所以便 称之为Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应⽤程序编程接⼝。 阅读详情
using System;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Text;

namespace wsWin
{
    public class Win32
    {

        public const int GW_HWNDFIRST = 0;
        public const int GW_HWNDLAST = 1;
        public const int GW_HWNDNEXT = 2;
        public const int GW_HWNDPREV = 3;
        public const int GW_OWNER = 4;
        public const int GW_CHILD = 5;

        public const int WM_NCCALCSIZE = 0x83;
        public const int WM_WINDOWPOSCHANGING = 0x46;
        public const int WM_PAINT = 0xF;
        public const int WM_CREATE = 0x1;
        public const int WM_NCCREATE = 0x81;
        public const int WM_NCPAINT = 0x85;
        public const int WM_PRINT = 0x317;
        public const int WM_DESTROY = 0x2;
        public const int WM_SHOWWINDOW = 0x18;
        public const int WM_SHARED_MENU = 0x1E2;
        public const int HC_ACTION = 0;
        public const int WH_CALLWNDPROC = 4;
        public const int GWL_WNDPROC = -4;

        internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
        internal const int TOKEN_QUERY = 0x00000008;
        internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
        internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
        internal const int EWX_LOGOFF = 0x00000000;
        internal const int EWX_SHUTDOWN = 0x00000001;
        internal const int EWX_REBOOT = 0x00000002;
        internal const int EWX_FORCE = 0x00000004;
        internal const int EWX_POWEROFF = 0x00000008;
        internal const int EWX_FORCEIFHUNG = 0x00000010;

        public const int User = 0x0600;
        public const int User_ParmSelect = 0x0601;//May Not Use
        public const int User_ParmClear = 0x0602; //May Not Use
        public const int User_Navigation = 0x603; //May Not Use

        public const int User_Refersh = 0x610;
        public const int User_subDisplayFormNew = 0x611;
        public const int User_subDisplayFormClose = 0x612;
        public const int User_subDisplayFormChange = 0x613;
        //public const int User_subDisplayFormChange = 0x614;
        public const int User_MonitorFormClose = 0x615;

        #region [ Window API ]
        [DllImport("kernel32")]
        public static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
        [DllImport("kernel32")]
        public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

        [DllImport("user32.dll")]
        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wPar, IntPtr lPar);

        [DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)]
        public static extern int GetWindowLong(HandleRef hWnd, int nIndex);

        [DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)]
        public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);

        [DllImport("user32.dll")]
        public static extern int GetForegroundWindow();

        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr GetWindowDC(IntPtr handle);

        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr ReleaseDC(IntPtr handle, IntPtr hDC);

        [DllImport("Gdi32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr CreateCompatibleDC(IntPtr hdc);

        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern int GetClassName(IntPtr hwnd, char[] className, int maxCount);

        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr GetWindow(IntPtr hwnd, int uCmd);

        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern bool IsWindowVisible(IntPtr hwnd);

        [DllImport("user32", CharSet = CharSet.Auto)]
        public static extern int GetClientRect(IntPtr hwnd, ref RECT lpRect);

        [DllImport("user32", CharSet = CharSet.Auto)]
        public static extern int GetClientRect(IntPtr hwnd, [In, Out] ref Rectangle rect);

        [DllImport("user32", CharSet = CharSet.Auto)]
        public static extern bool MoveWindow(IntPtr hwnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

        [DllImport("user32", CharSet = CharSet.Auto)]
        public static extern bool UpdateWindow(IntPtr hwnd);

        [DllImport("user32", CharSet = CharSet.Auto)]
        public static extern bool InvalidateRect(IntPtr hwnd, ref Rectangle rect, bool bErase);

        [DllImport("user32", CharSet = CharSet.Auto)]
        public static extern bool ValidateRect(IntPtr hwnd, ref Rectangle rect);

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        internal static extern bool GetWindowRect(IntPtr hWnd, [In, Out] ref Rectangle rect);

        [StructLayout(LayoutKind.Sequential)]
        public struct RECT
        {
            public int Left;
            public int Top;
            public int Right;
            public int Bottom;
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct WINDOWPOS
        {
            public IntPtr hwnd;
            public IntPtr hwndAfter;
            public int x;
            public int y;
            public int cx;
            public int cy;
            public uint flags;
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct NCCALCSIZE_PARAMS
        {
            public RECT rgc;
            public WINDOWPOS wndpos;
        }
        #endregion

        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        internal struct TokPriv1Luid
        {
            public int Count;
            public long Luid;
            public int Attr;
        }

        [DllImport("kernel32.dll", ExactSpelling = true)]
        internal static extern IntPtr GetCurrentProcess();
        [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
        internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
        [DllImport("advapi32.dll", SetLastError = true)]
        internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
        [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
        internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
        [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
        internal static extern bool ExitWindowsEx(int DoFlag, int rea);

        #region [ Shutdown Functions ]
        private static void DoExitWin(int DoFlag)
        {
            bool ok;
            TokPriv1Luid tp;
            IntPtr hproc = GetCurrentProcess();
            IntPtr htok = IntPtr.Zero;
            ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
            tp.Count = 1;
            tp.Luid = 0;
            tp.Attr = SE_PRIVILEGE_ENABLED;
            ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);
            ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
            ok = ExitWindowsEx(DoFlag, 0);
        }

        public static void Reboot()
        {
            DoExitWin(EWX_FORCE | EWX_REBOOT);
        }
        public static void PowerOff()
        {
            DoExitWin(EWX_FORCE | EWX_POWEROFF);
        }
        public static void LogOff()
        {
            DoExitWin(EWX_FORCE | EWX_LOGOFF);
        }
        #endregion
    }
}

win32控制台、win32工程、MFC工程的区别 空项目   控制台 win 32 mfc 问2个问题即可。 1.控制台 VS win32 mfc? 嗯,有不有脸? 有脸,选win32或mfc。没有脸,选控制台。 (脸就是窗口,就是window......s) (这个有脸) (这个没脸) 控制台与win32 mfc:交互方式的不同,前者是CML(命令模式),后者是GUI(用户界面)。 ... 阅读详情

相关推荐

Hey,别搞错了Win32项目和Win32控制台程序

你是否和我一样呢,写了很多控制台程序,特别熟悉cout、main函数等等。 但是你同样也听说过win32 api !!当在你的控制台应用程序中写下某个api函数的时候,你也许会窃喜api函数带来的方便。但是当你编译代码的时候,编译器会无情的通知你“不能识别XX标识符”。 所以,从现在开始我的blog.你兴致勃勃的打开vs2010,选择“文件”-》“新建”-》“项目”,你会看到如下: 正如你

一蓑烟雨任平生 也无风雨也无晴 1万+

WIN32 预定义宏WIN32,_WIN32,_WIN64介绍使用

1.WIN32宏 在 Win32 配置下,WIN32 在“项目属性-C/C++-预处理器-预处理器定义”里声明了,而在 x64 配置下,这个常量并不在项目预定义列表中。这是否说明可以根据 WIN32 来判断是否在 x64 平台呢?不。在 Windows SDK 的 minwindef.h 下第 37 行有如下定义: #ifndef WIN32 #define WIN32 #endif ...

kevin的博客 2万+

在Win32工程中使用GdiPlus

在vs直接建立的win32工程里直接添加GdiPlus的相关支持文件,编译器会报几百个错误,都是些什么"缺少类型说明符",语法错误或者标识符错误之类的. 一般这种情况都是由于头文件引用缺少一些特殊的支持,或者引用顺序错误导致的. 网上的解决办法一般有两种: 1.关闭#include 前面的WIN32_LEAN_AND_MEAN定义; 2.在导入GdiPlus支持文件之前添加#include . 这两种解决办法究竟有什么不同呢?

云彩挂上的二叉树 3024

pywin32、win32api、win32gui、win32com、win32con 都是啥?

pywin32、win32api、win32gui、win32com、win32con 名称非常类似,特别容易混淆,今天就用600字给大家区分一下 文章目录pywin32win32guiwin32conwin32apiwin32com记录时间 pywin32 pywin32 主要的作用是供 Python开发者快速调用 Windows API的一个模块库。该模块的另一个作用是是通过Python进行COM编程。 落地场景: 如果你想在Windows操作系统用Python实现自动化工作,pywin32模块经常用到

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 3万+

Win32 SDK Gui编程系列之--WIN32 Gui常用API

如果是多行文本,使用lpRect参数指定的矩形区域的宽度,将矩形区域的下端扩展到文本的最后一行下方边界线。在窗口手柄参数中指定父窗口手柄,并且指定WS_CHILD和窗口ID时,是只在父窗口内运行的子窗口。通常,记忆前缀字符的“&”被解释为在下一个字符上加上下划线(_)来表示的命令,记忆前缀字符的“&&”是显示一个“&”的命令。DT_PATH_ELLIPSIS 为了适合指定的矩形区域,根据需要省略文本的中间 (...)换成如果是包含圆符号(\)的文本,则尽可能保留最后一个圆符号后面的文本。

weixin_55465758的博客 728

win32项目和win32控制台程序的区别

回答1: 1、win32应用程序是指窗口类的,像QQ之类的,有图形化界面,而控制台是指运行在黑框下的,像cmd之类的; 2、win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用程序... win32项目指运行于32位Windows操作系统中的应用程序...包括win32控制台项目... 3、最大的区别当然是程序入口了,console的入口是main,Windows的入口时WinMain。而程序的入口点是可以重新设置的。我们可以在console应用程序中设置...

digitalkee的博客 3897

预定义常量WIN32、_WIN32、_WIN64的作用

MSDN 里说,VC有3个预处理常量,分别是_WIN32,_WIN64,WIN32。这三个常量如何使用呢?看起来简单,其实是很困惑的。 WIN32 在 Win32 配置下,WIN32在“项目属性-C/C+±预处理器-预处理器定义”里声明了,而在 x64 配置下,这个常量并不在项目预定义列表中。这是否说明可以根据 WIN32 来判断是否在 x64 平台呢?不。在 Windows SDK的minwindef.h下第37行有如下定义: #ifndef WIN32 #define WIN32 #e.

technologyleader的专栏 3751

Spine动画在Unity里卡顿、闪烁、排序错乱?这些性能优化与渲染问题一次讲清

本文深入解析了Spine动画在Unity中常见的卡顿、闪烁和排序错乱问题,提供了全面的性能优化与渲染解决方案。从性能瓶颈诊断到材质合并、动态合批优化,再到层级错乱与Alpha闪烁的处理,帮助开发者提升动画表现和运行效率。特别针对Unity和Spine的协同工作进行了详细的技术探讨。

weixin_29967445的博客 380

ifdef WIN32有什么作用

ifdef WIN32有什么作用

ugfffj的博客 6403

PID参数自整定实战解析:从继电反馈到智能调节的完整实现

本文深入解析PID参数自整定的实战应用,从继电反馈原理到智能调节算法的完整实现。通过详细讲解振荡波形特征提取、参数计算的工程化改进及工业场景调试技巧,帮助工程师快速掌握PID自整定技术,提升控制系统性能。特别针对嵌入式系统优化和噪声环境下的稳定策略提供了实用解决方案。

weixin_28731223的博客 461

【EPICS学习记录】根据官方教程创建一个IOC应用

参照官网给出的IOC创建教程逐步操作完成了一个IOC应用的创建,官网教程中有部分过程表述的不清晰,自己摸索之后完成了IOC的创建,并把流程记录下来。其中有一些操作不是很理解,有问题或者建议欢迎指正。

yifeng_H的博客 3661

MFC和WIN32区别

从尽可能多的角度去描述。欢迎提出您的观点,不甚感激~_~!!! 基础概念: Win32:包含好多基本的API; MFC:里面包含好多类库,通过类库间接使用API; 经验之====================================================================== 谈Win32: ①   有时候mfc是封装的类不能满足我们的要求,这时就需要...

qq_40497432的博客 4806

【IEEE】从Accept到Online:详解Proof校样阶段的关键操作与避坑指南

本文详细解析了IEEE论文从Accept到Online的Proof校样阶段关键操作流程与避坑指南。重点介绍了IEEE Author Gateway平台的使用技巧、校样稿首页的风险点检查,以及多人协作校对策略,帮助作者高效完成论文出版前的最后审核,确保学术成果准确呈现。

weixin_30591551的博客 357

[Windows c/c++] WIN32 _WIN32 _WIN64 之间的区别

结论: WIN32 : 跨平台时使用,如果一个工程使用了windows api,那么它在引入windows api相关的头文件后,必须预定义WIN32以启用 所有API。 _WIN32:编译时使用,用来指定编译器的编译结果可以在哪种架构上运行,如果是_WIN32,则既可以在 x86上 又可以在x64上运 行,此外还可以在ARM32和ARM64上运行,简言之,编出来的代码可以同时在 32位机器和64位机器上运行。 _WIN64:编...

ykun089的博客 3014

手把手教你用VS Code + Codex在WSL中高效编程(避坑指南)

本文提供了一份详细的避坑指南,教你如何在WSL环境中高效配置和使用VS Code与OpenAI Codex。文章核心在于解决WSL内Codex扩展的OAuth登录失败问题,推荐将扩展安装在Windows本地,并通过UNC路径直接访问WSL文件系统,从而实现AI辅助编程与Linux开发环境的无缝结合,提升编码效率。

weixin_28677451的博客 1063

数据权限设计

随着IT新技术不断完善成熟,企业数字化建设得到全面的发展,数据将成为一个创造财富的重要来源,并且越来越多地被视为一项值得重视的企业资产。未来,很多企业之间的竞争,其实也是资源和数据竞争。那么针对数据资产,如何保障它的安全性呢?数据的权限管理无疑是必不可少的。数据权限从数据源来控制不同的用户能够查看、使用和授权不同的数据表数据(其实就是数据表行列的管控),就如同筑起了一道道护城墙,为数据安全提供了保障。

qq_40664711的博客 1万+

关于VC预定义常量_WIN32,WIN32,_WIN64

VC2012 下写 Windows 程序时,有时需要判断编译环境。在之前的文章《判断程序是否运行在 Windows x64 系统下。》里说过如何在运行期间判断系统环境,但在编译时如何判断?   MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32。这三个常量如何使用呢?看起来简单,其实是很困惑的。   在 Win32 配置下

hujing_Liu 5456

Vue - 在纯 HTML 普通项目中实现组件化,让原生 html 项目支持引入 *.vue 组件 / 组件与组件间的互相引用等,完美解决了引入组件出现的跨域问题(保姆级详细教程,完整示例源码及插件)

html中使用vue组件,在HTML页面中引入vue组件,HTML界面利用http-vue-loader.js以组件方式引入vue文件,使用http-vue-loader引入组件出现报错,在html页面使用http-vue-loader插件引入组件报跨域错误,如何解决http-vue-loader引用组件时出现跨域问题,纯html原生web项目引入vue后如何实现组件引入,使用http-vue-loader插件控制台报错跨域,http-vue-loader跨域怎么办官方文档,html页面如何引入.vu

🏆 前端领域优质创作者 3907

【Win32API】贪吃蛇会使用到的 Win32API

【Win32API】贪吃蛇会使用到的 Win32API

从不依靠,从不寻找,非常沉默,非常骄傲。 你必须非常努力,才能看起来毫不费力。 1095

铁路场景雷达点云目标识别与追踪系统

本文介绍了一种基于毫米波雷达的铁路货运车站安全监控系统。该系统采用分布式架构,通过多个毫米波雷达节点采集点云数据,经过坐标转换、多雷达融合等处理后,利用机器学习算法实现列车、行人等目标的实时识别与追踪。系统包含数据采集层、处理层、目标识别层、追踪层、预警决策层和可视化层,能够克服传统视频监控受环境影响大的缺点,实现全天候可靠监测。文中详细展示了雷达数据解析和点云预处理的代码实现,包括坐标转换、数据格式解析和体素网格滤波等关键技术。该系统可有效预警铁路场景下的碰撞风险,提升货运车站的安全管理水平。

huanghm88的专栏 125

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

win32gui, win32con, win32api 安装失败

win32gui, win32con, win32api安装失败,可以安装pypiwin32,因为pypiwin32包含了n32gui, win32con, win32api三个模块。 pip install pypiwin32

斗师——Ace 8515

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

WIN32和_WIN32的区别

WIN32 is a name that you could use and even define in your own code and so might clash with Microsoft’s usage._WIN32 is a name that is reserved for the implementor (tn this case MS) because it begins w

2406

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

WIN32汇编基础

一、关于寄存器寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会。EAX是WIN32 API 默认的返回值存放处。ECX是LOOP指令自动减一的寄存器。ESP是堆栈指针。EBP经常用来在堆栈中寻址。ESI好像常常用在指针寻址中,EDI不大清楚。二、关于内存寻址WIN32中内存是

t0nsha's Blog 4473

CMake中WIN32和CMAKE_HOST_WIN32的使用差异

CMake中的WIN32和CMAKE_HOST_WIN32变量有本质区别: WIN32:判断目标系统是否为Windows,受CMAKE_SYSTEM_NAME影响,在project()后设置,用于配置目标平台相关代码(如添加Windows专用源文件) CMAKE_HOST_WIN32:判断CMake运行主机是否为Windows,不受CMAKE_SYSTEM_NAME影响,用于脚本级主机环境判断(如设置工具路径) 关键提示: 交叉编译时若设置CMAKE_SYSTEM_NAME=Generic会导致WIN32失

xuxuluo的博客 605

调试Win32 Service

目的:写这篇文章的目的是实践和总结,巩固Service相关的知识。同时为我们项目中B(WEB)/S(Service)的Service端调试寻找一种简单,方便的调试手段。正文: 半年前就已经抱着[Richter2000]及MSDN看有关Service相关的文章,总体有个了解,但因为缺乏实际项目锻炼的原因(懒惰的借口:)) 并没有实际的动手去编写和调试一个Service程序.近来因为要协助

1164
上一篇: StringX
下一篇: FileAssociation
WavesLine
博客等级 码龄12年 18粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值