控制台调用win32 API 示例二则
一 控制台显示消息框
#include <stdio.h>
#include <windows.h>int main(int argc, char* argv[])
{int nRet=MessageBox(NULL, TEXT("Console Win32 API Demo !!!"), "Console Demo", MB_OKCANCEL);//int nRet = ::MessageBox(NULL,"aaa","bbb",MB_OKCANCEL);if(IDOK==nRet){printf("用户选择了\"确定\"按钮 \n");}else{printf("用户选择了\"取消\"按钮 \n");}return 0;
}
控制台程序调用win32 API;包含windows.h;
如下的代码看上去没错;第一次执行;出现 无法执行程序;
改成如下;去掉TEXT宏;不一次性构建;先编译;再执行;结果提示 冒号语法错误;
冒号应该是没错;调用win32 api,都是::XXX;
去掉冒号;如下图;直接写win32 API;结果对了;
二 调用Win32 API在控制台画线
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>HWND WINAPI GetConsoleWindow();int main(int argc, char *argv[])
{HWND hwnd; HDC hdc; HPEN hpen;hwnd = GetConsoleWindow(); hdc = GetDC(hwnd); system("color A3"); system("cls"); hpen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0)); SelectObject(hdc, hpen); MoveToEx(hdc, 20, 20, NULL); LineTo(hdc, 200, 300); DeleteObject(hpen); ReleaseDC(hwnd, hdc); getchar();return 0;
}
第一次直接执行,也是显示 无法执行程序;不一次性构建,先编译,再执行,就可以;可能是版本问题;
代码简单解释:
获取控制台句柄到hwnd;
从hwnd获取设备描述表句柄赋给hdc;
调用dos命令设置控制台窗口颜色;
调用dos命令清屏;
创建画笔:实线,宽度3,红色;
把画笔选进设备描述表;
设置起始点;画线;
删除画笔;
释放设备描述表;
等待输入一个字符然后退出;
关于DOS color命令的说明:
设置默认的控制台前景和背景颜色。
COLOR [attr] attr 指定控制台输出的颜色
属性颜色
属性由两个十六进制数字指定
-- 第一个为背景,第二个则为前景。
每个数字可以为以下任何值之一:
0 = 黑色
8 = 灰色
1 = 蓝色
9 = 淡蓝色
2 = 绿色
A = 淡绿色
3 = 浅绿色
B = 淡浅绿色
4 = 红色
C = 淡红色
5 = 紫色
D = 淡紫色
6 = 黄色
E = 淡黄色
7 = 白色
F = 亮白色
如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。
这个值来自当前控制台窗口、/T 命令行开关或DefaultColor 注册表值。
如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。
例如: "COLOR fc" 在亮白色上产生亮红色
控制台调用win32 API 示例二则相关推荐
- 图解C# 调用Win32 API 示例程序
一 弹出消息框和发声 先上代码:相关函数不解释:网上比较容易查到: using System; using System.Collections.Generic; using System.Compo ...
- java 调用win32 api 学习总结
java使用JInvoke调用windows API 使用jinvoke调用windowsAPI.jna使用比较麻烦,需要写c代码和参数转换,jinvoke的使用就像jdk中的包一样. 官网使用参考: ...
- C# 获取笔记本电池信息 调用 Win32 Api
C# 获取笔记本电池信息 获取电池信息需要调用Win32 Api 相关函数为 GetSystemPowerStatus 函数结构: BOOL GetSystemPowerStatus(LPSYSTEM ...
- C#调用Win32 api学习总结
转载:https://blog.csdn.net/bcbobo21cn/article/details/50930221 从.NET平台调用Win32 API Win32 API可以直接控制Micro ...
- MSIL 教程(二):数组、分支、循环、使用不安全代码和如何调用Win32 API(转)...
转自:http://www.cnblogs.com/Yahong111/archive/2007/08/16/857574.html 续上文[翻译]MSIL 教程(一) ,本文继续讲解数组.分支.循环 ...
- C++调用win32 API操作打印机实现驱动打印
方法说明: 1.s2w(string &content, int length):将string类型的变量转换为wchar_t*类型,用于调用TextOut()方法时传参,其中length为需 ...
- php调用win32 api,C#_c#使用win32api实现获取光标位置,方法一:需要调用win32api,winfo - phpStudy...
c#使用win32api实现获取光标位置 方法一:需要调用win32api,winform.wpf通用 [DllImport("user32.dll")] public stati ...
- c#调用win32 API函数修改系统时间
一般来说,系统时间的修改可以通过win32 API函数库中的SetLocalTime函数进行设置.对于C#语言来说,虽然win32 API大部分函数都已经封装在了.NET Framework类库中,但 ...
- Python发送微信消息(文字、图片、文件)给指定好友和微信群(调用Win32 API模拟人的手动操作来发送消息)
本示例是调用Windows API模拟发送,用Python调用win32api这个库来调用Windows API模拟人的手动操作来发送消息. 在使用前,请将你微信的窗口设置为在最前面,这样就便于程序找 ...
最新文章
- 卷积神经网络(CNN)_相关知识
- volatile: 多线程程序员最好的朋友
- 像素测量工具_翼眸科技利用无人机屋顶测量光伏行业应用
- 自动生成文章的html,文章自动更新工具|自动生成文件|自动伪原创|文章自动插入关键词工具...
- Strust2初之体验
- redis队列(list)
- jQuery post使用变量作参数名
- Android基于mAppWidget实现手绘地图(九)–如何处理地图对象的touch事件
- cookielib和urllib2模块相结合模拟网站登录
- 一文入门推荐系统——推荐系统实践读书笔记
- python接受前端传递的参数
- 搜索引擎四:CoreSeek配置MySql数据源
- html 倒计时,jQuery倒计时插件
- 电子科技大学计算机学院图章,桂林电子科技大学印章管理暂行规定
- 使用树莓派搭建直播平台实现b站实时直播
- Golang 期权 指标计算
- 社会工程学三本_1.9万人报考,扩招近千人!被戏称为“大三本”的985——东南大学,低调有实力!...
- 如何实现SQL中加减乘除等四则运算
- Node Inspector 调试 Node.js 程序
- 关于自动驾驶车辆控制