monitorinfo(monitorinfo安卓)

http://www.itjxue.com  2023-02-21 15:21  来源:未知  点击次数: 

mfc设置主副屏

主机上另外再连接一个监视器,这样主机就可以检测到两个显示器,设置显示器属性,将屏幕扩展到第二屏(采用扩展模式)。在VC编程时,可以检测到第二屏的信息(甚至多屏),比如屏的个数,各个屏的分辨率,各个屏的句柄,获得了这些信息后,就可以在第二屏上操作了,比如画图之类。

在编程中要用到相关的结构体和函数,这些都已经包装好,在multimom.h头文件中,该头文件VC自带有。在要用的的地方包含该头文件,注意在包含前面要加上一句宏定义:

#define COMPILE_MULTIMON_STUBS

几个重要的结构体和函数

EnumDisplayMonitors( )  该函数对当前用户系统中所包含的显示器进行枚举。应用程序就是通过与该函数交流得知,当前用户系统中

所拥有的显示器个数以及其名称。

MonitorInfoex 和MonitorInfo 。在这两个结构中保存着相应显示器的相关信息,如坐标、是否为主显示器等。

GetMonitorInfo ( )  取得指定显示器的相关信息,如物理显示区大小等。

MonitorFromPoint ( )  取得指定点所在的显示器句柄。

MonitorFromRect ( )  取得指定矩形所在的显示器句柄。

MonitorFromWindow( )  取得指定窗口所在的显示器句柄

MonitorEnumProc( ) 。当应用程序调用EnumDisplayMonitors ( )查询显示器个数时,系统自动为每一个显示器调用一次该函数。应用程序可以依此判断显示器的个数、位置及显示区域的大小等信息。

编程实现,获得第二屏信息,在主屏上点击一按钮,在第二屏上显示一幅图像。

在应用程序初始化时,调用EnumDisplayMonitors(NULL,NULL,MonitorEnumProc,0);,该函数枚举显示器,得到显示器信息,方便以后调用。其中MonitorEnumProc,是一回调函数,这个回调函数是要自己写的

/*********************************************************

函数名:MonitorEnumProc()

输入参数:HMONITOR hMonitor ---显示器句柄

HDC hdcMonitor ----显示器DC句柄

LPRECT lprcMonitor-----

LPARAM dwData-----EnumDisplayMonitors传来的数据

返回:bool

功能:若返回为真,EnumDisplayMonitors继续枚举,

若返回为假,EnumDisplayMonitors停止枚举,从而获得显示器信息

将显示器个数保存在numScreen,分辨率信息保存在rect

**********************************************************/

BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,

HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)

{

static BOOL first = TRUE; //标志

//保存显示器信息

MONITORINFO monitorinfo;

monitorinfo.cbSize = sizeof(MONITORINFO);

//获得显示器信息,将信息保存到monitorinfo中

GetMonitorInfo(hMonitor, monitorinfo);

//若检测到主屏

if(monitorinfo.dwFlags == MONITORINFOF_PRIMARY)

{

if(first) //第一次检测到主屏

{

first = FALSE;

numScreen = 1;

//将显示器的分辨率信息保存到rect

rect[0] = monitorinfo.rcMonitor;

return TRUE;

}

else //第二次检测到主屏,说明所有的监视器都已经检测了一遍,故可以停止检测了

{

first = TRUE; //标志复位

return FALSE; //结束检测

}

}

rect[numScreen] = monitorinfo.rcMonitor;

numScreen++;

return TRUE;

}

创建对话框,通过MoveWindow 函数将对话框移动到第二屏上即可

if(numScreen == 2)

{

CSecondScr *pDlg = new CSecondScr;

pDlg-Create (IDD_DIALOG1,this);

pDlg-ShowWindow (SW_SHOW);

pDlg-MoveWindow (rect[1].left ,rect[1].top ,rect[1].Width (),rect[1].Height (),TRUE);

}

点击阅读全文

打开CSDN,阅读体验更佳

最新发布 MFC Windows 程序设计[六十]之窗口分屏(附源码)

MFC是微软公司提供的一个类库(class libraries),用以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。有很多初学MFC的小伙伴们都觉得MFC比较难学,看书吧,看了就忘了,网上的一些教程又是写的含糊不清,故而学习起来很吃力...... 故此,本专栏亲自研究,实践,由易到难,层层深入,将调试过程中所遭所遇进行详细讲解,注意事项进行一一列举,希望能够帮助到各位初学MFC的小伙伴,避免走弯路,费时费力。

继续访问

VC++双屏显示源码

双屏显示源代码,是双屏编程人员必不可少的参考代码,可实现扩展模式、克隆模式。

mfc多屏检测及双击窗口最大化

在OnInitDialog函数中添加:EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, NULL);MonitorEnumProc函数:CArray MONITORINFO, MONITORINFOg_arMonitorInfo; BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor...

继续访问

VC++在MFC程序窗口中实现全屏显示切换

内容索引:VC/C++源码,界面编程,全屏VC++在MFC程序窗口中实现全屏显示切换,有点像微软PPT幻灯片播放中的全屏效果。在VC++的MFC程序中,有一个专一用来切换全屏的按钮,点击这个按钮,程序的主界面将全屏,标题栏、任务栏、菜单栏统统隐藏掉了,只显示主要内容及一个返回标准窗体的按钮,MFC模式的全屏切换,是不是有必要学习一下呢?

窗口移动到扩展屏(简单操作)

这是一个简单的窗口移动到扩展屏的代码,主要实现了:1.扩展屏的分辨率大小测定 2. 主屏上的程序窗口移动到扩展屏上并全屏显示

基于MFC的屏幕分屏.rar

基于VC++ 的屏幕分屏显示工具

MFC双屏显示

//一、为工程添加一个类Spxs,在Spxs.h中添加 public: afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized); //二、主cpp里添加: #include"Spxs.h" Spxs dlg1 //初始化函数里添加: dlg1.Create(IDD_TEST_111,GetDesktopWi

继续访问

VC对话框全屏显示及相应控件位置改变(转)

一、简单对话框全屏显示方法 在OnInitDialog()中任意加入: 1、ModifyStyle(WS_CAPTION,0,0); //如果不想去掉标题栏,去掉该句。 SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0); 2、ShowWindow(SW_SHOWMAXIMIZED); 二、复杂一点的对话框全屏显示方法,随屏幕的分辩率而调节 ...

继续访问

热门推荐 VC++实现Windows中双显示器(主屏、扩展屏)各种操作的源码工程

Windows中鼠标右键桌面-“屏幕分辨率”时出现的“更改显示器的外观”对话框下实现了双屏操作的诸多功能,如:主屏的设置、主屏和扩展屏的分辨率、方向、屏幕合并等。实际项目中需要通过VC++代码实现这些功能,用了将近一周的事件,在网上经过几番搜索、整合及改写,终于开发出了所需功能。以下将cpp源码贴出,以弥补此方面网上资料的匮乏。完整工程见下载资源(VS2010下开发)。 // Multi_

继续访问

MFC 获取屏幕客户区(及显示器大小)

CRect rectWorkArea; SystemParametersInfo(SPI_GETWORKAREA,0,rectWorkArea,SPIF_SENDCHANGE);//获取屏幕客户区大小 转载于:

继续访问

MFC 多屏显示

概念 HMONITOR : 显示器句柄. 有效的显示器,该值不为空. 当WM_DISPLAYCHANGE 心消息发送的时候, 任何小时起都有可能被移除, 所以应用程序时刻检查全部的HMONITORS是否为非空. 函数 EnumDisplayMonitors: 该函数对当前用户系统中所包含的显示器进行枚举. 示例 在自己的函数中: void Fun...

继续访问

MFC程序多屏最大化问题

单个显示屏下如果我们需要最大化窗口的时候我们如果直接调用 ShowWindow(SW_MAXIMIZE); //最大化show窗口 但是存在会遮挡Windows的标题栏这个时候我们可以用Windows给我们提供的方法 CRect rcWorkArea; SystemParametersInfo(SPI_GETWORKAREA,0,rcWorkArea,0); //获取工作区域的大小 MoveWindow(rcWorkArea); OnNcPaint(); 这样可

继续访问

MFC简单多屏操作

简易的MFC下处理双屏 可以获得屏幕分辨率 主次屏信息 双击主对话框会在另一屏幕上弹出一个全屏的新窗口

mfc在控制多显示器的使用方法

一、取得显示器的个数 GetSystemMetrics(SM_CMONITORS); 二、根据窗口句柄、矩形区域、点取得显示器的句柄 MonitorFromRect( lprc, MONITOR_DEFAULTTONULL ) MonitorFromPoint( pt, MONITOR_DEFAULTTONULL ) MonitorFromWindow( pWnd-GetSafe...

继续访问

MFC

双屏

写评论

评论

6

2

分享

求monitorinfo(显示器色域检测工具) V2.2.1 中文绿色版网盘资源

链接:

提取码:wpkb

软件名称:monitorinfo(显示器色域检测工具)V2.2.1中文绿色版

语言:简体中文

大小:557.32KB

类别:系统工具

介绍:monitorinfo(显示器色域检测工具)中文绿色版是一款十分小巧的显示器信息查询及色域检测工具。monitorinfo(显示器色域检测工具)中文绿色版可以帮助用户查看电脑显示器的厂商、产品ID和型号等,并且可以查看到标准NTSC色彩范围等。

怎样用Java获取内存中的数据?

方法如下:

首先

创建一个Bean用来存贮要得到的信

public class MonitorInfoBean {

/** 可使用内存. */

private long totalMemory;

/** 剩余内存. */

private long freeMemory;

/** 最大可使用内存. */

private long maxMemory;

/** 操作系统. */

private String osName;

/** 总的物理内存. */

private long totalMemorySize;

/** 剩余的物理内存. */

private long freePhysicalMemorySize;

/** 已使用的物理内存. */

private long usedMemory;

/** 线程总数. */

private int totalThread;

/** cpu使用率. */

private double cpuRatio;

public long getFreeMemory() {

return freeMemory;

}

public void setFreeMemory(long freeMemory) {

this.freeMemory = freeMemory;

}

public long getFreePhysicalMemorySize() {

return freePhysicalMemorySize;

}

public void setFreePhysicalMemorySize(long freePhysicalMemorySize) {

this.freePhysicalMemorySize = freePhysicalMemorySize;

}

public long getMaxMemory() {

return maxMemory;

}

public void setMaxMemory(long maxMemory) {

this.maxMemory = maxMemory;

}

public String getOsName() {

return osName;

}

public void setOsName(String osName) {

this.osName = osName;

}

public long getTotalMemory() {

return totalMemory;

}

public void setTotalMemory(long totalMemory) {

this.totalMemory = totalMemory;

}

public long getTotalMemorySize() {

return totalMemorySize;

}

public void setTotalMemorySize(long totalMemorySize) {

this.totalMemorySize = totalMemorySize;

}

public int getTotalThread() {

return totalThread;

}

public void setTotalThread(int totalThread) {

this.totalThread = totalThread;

}

public long getUsedMemory() {

return usedMemory;

}

public void setUsedMemory(long usedMemory) {

this.usedMemory = usedMemory;

}

public double getCpuRatio() {

return cpuRatio;

}

public void setCpuRatio(double cpuRatio) {

this.cpuRatio = cpuRatio;

}

}

之后,建立bean的接口

public interface IMonitorService {

public MonitorInfoBean getMonitorInfoBean() throws Exception;

}

然后,就是最关键的,得到cpu的利用率,已用内存,可用内存,最大内存等信息。

import java.io.InputStreamReader;

import java.io.LineNumberReader;

import sun.management.ManagementFactory;

import com.sun.management.OperatingSystemMXBean;

import java.io.*;

import java.util.StringTokenizer;

/**

* 获取系统信息的业务逻辑实现类.

* @author GuoHuang

*/

public class MonitorServiceImpl implements IMonitorService {

private static final int CPUTIME = 30;

private static final int PERCENT = 100;

private static final int FAULTLENGTH = 10;

private static final File versionFile = new File("/proc/version");

private static String linuxVersion = null;

/**

* 获得当前的监控对象.

* @return 返回构造好的监控对象

* @throws Exception

* @author GuoHuang

*/

public MonitorInfoBean getMonitorInfoBean() throws Exception {

int kb = 1024;

// 可使用内存

long totalMemory = Runtime.getRuntime().totalMemory() / kb;

// 剩余内存

long freeMemory = Runtime.getRuntime().freeMemory() / kb;

// 最大可使用内存

long maxMemory = Runtime.getRuntime().maxMemory() / kb;

OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory

.getOperatingSystemMXBean();

// 操作系统

String osName = System.getProperty("os.name");

// 总的物理内存

long totalMemorySize = osmxb.getTotalPhysicalMemorySize() / kb;

// 剩余的物理内存

long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize() / kb;

// 已使用的物理内存

long usedMemory = (osmxb.getTotalPhysicalMemorySize() - osmxb

.getFreePhysicalMemorySize())

/ kb;

// 获得线程总数

ThreadGroup parentThread;

for (parentThread = Thread.currentThread().getThreadGroup(); parentThread

.getParent() != null; parentThread = parentThread.getParent())

;

int totalThread = parentThread.activeCount();

double cpuRatio = 0;

if (osName.toLowerCase().startsWith("windows")) {

cpuRatio = this.getCpuRatioForWindows();

}

else {

cpuRatio = this.getCpuRateForLinux();

}

// 构造返回对象

MonitorInfoBean infoBean = new MonitorInfoBean();

infoBean.setFreeMemory(freeMemory);

infoBean.setFreePhysicalMemorySize(freePhysicalMemorySize);

infoBean.setMaxMemory(maxMemory);

infoBean.setOsName(osName);

infoBean.setTotalMemory(totalMemory);

infoBean.setTotalMemorySize(totalMemorySize);

infoBean.setTotalThread(totalThread);

infoBean.setUsedMemory(usedMemory);

infoBean.setCpuRatio(cpuRatio);

return infoBean;

}

private static double getCpuRateForLinux(){

InputStream is = null;

InputStreamReader isr = null;

BufferedReader brStat = null;

StringTokenizer tokenStat = null;

try{

System.out.println("Get usage rate of CUP , linux version: "+linuxVersion);

Process process = Runtime.getRuntime().exec("top -b -n 1");

is = process.getInputStream();

isr = new InputStreamReader(is);

brStat = new BufferedReader(isr);

if(linuxVersion.equals("2.4")){

brStat.readLine();

brStat.readLine();

brStat.readLine();

brStat.readLine();

tokenStat = new StringTokenizer(brStat.readLine());

tokenStat.nextToken();

tokenStat.nextToken();

String user = tokenStat.nextToken();

tokenStat.nextToken();

String system = tokenStat.nextToken();

tokenStat.nextToken();

String nice = tokenStat.nextToken();

System.out.println(user+" , "+system+" , "+nice);

user = user.substring(0,user.indexOf("%"));

system = system.substring(0,system.indexOf("%"));

nice = nice.substring(0,nice.indexOf("%"));

float userUsage = new Float(user).floatValue();

float systemUsage = new Float(system).floatValue();

float niceUsage = new Float(nice).floatValue();

return (userUsage+systemUsage+niceUsage)/100;

}else{

brStat.readLine();

brStat.readLine();

tokenStat = new StringTokenizer(brStat.readLine());

tokenStat.nextToken();

tokenStat.nextToken();

tokenStat.nextToken();

tokenStat.nextToken();

tokenStat.nextToken();

tokenStat.nextToken();

tokenStat.nextToken();

String cpuUsage = tokenStat.nextToken();

System.out.println("CPU idle : "+cpuUsage);

Float usage = new Float(cpuUsage.substring(0,cpuUsage.indexOf("%")));

return (1-usage.floatValue()/100);

}

} catch(IOException ioe){

System.out.println(ioe.getMessage());

freeResource(is, isr, brStat);

return 1;

} finally{

freeResource(is, isr, brStat);

}

}

java 怎么把数据存到内存中

这里你采纳与否没关系,给你说说编程与内存的关系。

你定义的任何变量,常量,类,方法等等,其实都在内存中,没有所谓的把数据存内存中,这概念,你可以想一下电脑重启或关机后,内存中的所有数据,都会丢失,除非你保存到磁盘中去。

在内存中的数据有两块,第一、缓冲,一般写数据到磁盘的时候开辟出来的内存空间;第二、缓存,一般是从磁盘读数据到内存中开辟出来的内存空间。会这么使用,原因很简单,磁盘读写数据速度与内存不一致(磁盘的存取效率远远小于内存的存取效率),为了提高数据的存取效率,才会这么干的。

一般而言,java中的所谓数据,大部分都是类,从自动引用计数的概念来分析,你想把对象长久的放在内存中,不会被垃圾回收机制释放,注意制药有一个对象在使用/引用你的数据,这条数据就会存在内存中。所以,想servlet中的全局配置参数,随时可以取到还是唯一一份,你可以参考一下。

另外内存使用分堆与栈,堆在面向对象编程中存储对象的,栈是方法或函数执行的时候临时开辟的存储空间,方法或函数执行完毕就会释放。

希望我的回复能帮助到你,采纳与否没关系。有更好的答案,我就隐藏我的回复。

怎么查看自己电脑色域?72%ntsc是高色域吗

1.什么是电脑色域

百度百科解释:“色域是对一种颜色进行 编码 的方法,也指一个技术系统能够产生的 颜色 的总和。在 计算机 图形处理中,色域是颜色的某个完全的子集。颜色子集最常见的应用是用来精确地代表一种给定的情况”

通俗来说就是电脑屏幕能够展示的色彩数有多少。

2.色域的常见分类

目前常见的屏幕色域标准有三种,分别是sRGB、NTSC、Adobe RGB

①sRGB

是微软和HP在1996年共同开发的色彩空间,也是目前的微软旗下的Windows系统和众多原生软件默认支持的色彩空间。

②NTSC

National Television Standards Committee/(美国)国家电视标准委员会 (NTSC),美国和日本的主流电视标准。NTSC 每秒发送 30 个隔行扫描帧,分辨率为 525 线。

③Adobe RGB

Adobe RGB色彩空间是一种由Adobe Systems于1998年开发的色彩空间。开发的目的是为了尽可能在CMYK彩色印刷中利用计算机显示器等设备的RGB颜色模式上囊括更多的颜色。Adobe RGB色彩空间粗略包括了50%的Lab色彩空间中的可视色彩,主要在青绿色(cyan-green)色系上有所提升。

3.多少色域算高色域

一般指72%NTSC、100%sRGB色域屏幕。

4.怎么查看自己电脑的色域

方法一:使用工具monitorinfo (推荐)

不足1M的小巧工具monitorinfo,只需要网页搜索下载简单运行一下就可以了,可以查询到自己屏幕的色域信息、制造商、屏幕尺寸等信息,可以说是非常方便了。

方法二:通过“屏库”进行查询。

①首先需要通过安装电脑硬件检测工具(如鲁大师、腾讯电脑管家等)

②然后通过检测工具检测出自己电脑的屏幕型号

③搜索“屏库”官网(),在里面输入自己的屏幕型号查询

(责任编辑:IT教学网)

更多
上一篇:没有了

推荐浏览下载文章