现在偶想让偶的强制休息程序的剩余时间提示窗口在屏幕右下角提示,但是不能挡住任务栏,而要在任务栏的上方

这可能需要获取任务栏的高度

Google了一下,这方面的资料不多,在百毒网站Baidu的个人空间找到了一段VB的代码(Google的结果可以有BaiDu的东东,这才是干大事的气量和风度),加减乘除都用上了,不过没看明白~

还是自己查了一下API,找到了下面的方法(源代码和可执行程序下载地址 http://download.csdn.net/source/640883):

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Function: 计算并显示系统任务栏高度
;    Author: PurpleEndurer
;  DevEnv: Win XP SP2 + MASM32 v7
;   log
; ----------------------------------------------------
; 2008-09-21 Created!
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
.386
.model  flat,  stdcall
option  casemap: none
include /masm32/ include/windows.inc

include /masm32/ include/kernel32.inc
includelib /masm32/ lib/kernel32.lib

include /masm32/ include/user32.inc
includelib /masm32/ lib/user32.lib

GetTaskBarHeight  proto

.data
g_hHInstance    HINSTANCE ?
g_szAppName      db  "系统任务栏高度", 0
g_szFmtPerD      db  "系统任务栏高度为:%d", 0
g_szBuf200       db 200 dup(0)
g_szFailtGetHeight  db  "未能取得!", 0

.code
start:
     invoke GetModuleHandle,  NULL
     mov    g_hHInstance,  eax

invoke GetTaskBarHeight
     inc  eax
     .if ZERO?
         push MB_ICONERROR
         push  offset g_szAppName         ;push for MessageBox()
         push  offset g_szFailtGetHeight  ;push for MessageBox() 
     .else
         dec  eax
         invoke wsprintf,  addr g_szBuf200,  addr g_szFmtPerD,  eax

push MB_ICONINFORMATION  ;push for MessageBox()
         push  offset g_szAppName  ;push for MessageBox()
         push  offset g_szBuf200   ;push for MessageBox()
     .endif
     push NULL  ;push for MessageBox()
     call MessageBox

invoke ExitProcess,  eax

;///
;Fun: 计算系统任务栏高度
; In: (none)
;Out: 若失败eax=-1,否则eax=高度值
; //
GetTaskBarHeight  proc
     local stDeskRect: RECT

;--- 取桌面工作区大小
     invoke SystemParametersInfo, SPI_GETWORKAREA, NULL,  addr stDeskRect, NULL
     test  eax,  eax
     .if !ZERO?  ; 取得了吗?
         ;--- 如果桌面工作区左上角y坐标值不为零,
         ; 说明任务栏在屏幕上方
         .IF stDeskRect.top != 0
             mov  eax, stDeskRect.top  ;工作区左上角y坐标值即任务栏高度
         .ELSE
             ;--- 取屏幕高度
             invoke GetSystemMetrics, SM_CYSCREEN
             test  eax,  eax
             jz @GetTaskBarHeightFailRet  ;未能取得
             .if  eax != stDeskRect.bottom
                 ;---如果屏幕高度与桌面工作区右下角y坐标值相同,
                 ; 那么任务栏在屏幕两侧,屏幕高度即任务栏高度
                 ; 否则任务栏在屏幕下方,屏幕高度与桌面工作区右下角y坐标值之差即即任务栏高度
                 sub  eax, stDeskRect.bottom
             .endif
         .ENDIF
     .else
@GetTaskBarHeightFailRet:
         mov  eax, -1
     .endif
     ret
GetTaskBarHeight  endp

end start

MASM32编程获取任务栏高度相关推荐

  1. android获取导航栏宽高,Android获取屏幕的宽高度、状态栏、标题栏、导航栏、编辑区域高度...

    目录 0.相关文章: 1.获取屏幕款高度 代码: /** * 获取屏幕宽度 * * @param context 上下文对象 * @return int */ public static int ge ...

  2. 安卓全面屏手机获取虚拟导航栏高度

    安卓全面屏手机获取虚拟导航栏高度 问题:之前做过各种导航栏的适配,这次在适配RN的虚拟导航栏时会出现闪一下的问题,问题虽然不大但是看上去不是十分美观. 解决方法:在安卓端获取虚拟导航栏高度,在RN添加 ...

  3. 小程序自定义导航栏高度

    了解导航栏高度的计算方式 我们先要知道导航栏高度是怎么组成的, 计算公式: 导航栏高度 = 状态栏到胶囊的间距(胶囊距上距离-状态栏高度) * 2 + 胶囊高度 + 状态栏高度 . 获取导航栏高度 用 ...

  4. uni-app 顶部导航栏高度计算 + 胶囊高度计算

    uni-app 顶部导航栏高度计算 + 胶囊高度计算 文章目录 uni-app 顶部导航栏高度计算 + 胶囊高度计算 uni-app 一.顶部导航栏高度计算 二.胶囊高度计算 总结 uni-app u ...

  5. IOS15的导航栏高度和状态栏高度和tabBar高度的获取

    IOS15的导航栏高度和状态栏高度和tabBar高度的获取 这都2021年11月份了.还在有人使用[UIApplication sharedApplication].keyWindow 这样过期的ap ...

  6. Android获取屏幕宽高,状态栏宽高,actionbar宽高,layout宽高,导航栏高度的方法汇总

    看这个博客你可以知道 获取屏幕宽高,状态栏宽高,actionbar宽高,layout宽高,导航栏(虚拟按键栏)高度的方法 目录顺序为 代码测试的机型 状态栏高度 actionbar高度 屏幕高度 导航 ...

  7. ios 获取nav高度_ios 获取导航栏和状态栏高度,针对iPhoneX

    因为iPhoneX的产生,原本的导航栏再也不是44了,那么会出现什么问题呢?在隐藏导航栏的页面,原本的高度要向上调整一个导航栏+状态栏的高度.那么iPhoneX的导航栏高度不是44了,我们需要手动获取 ...

  8. JAVA获得任务栏高度

    很多人在用JAVA做桌面应用程序的时候,有时候会用到在桌面右下角弹出提示框,就好像QQ登录后的提示一样,显示在桌面的右下角,任务栏的上面,过段时间自动消失,但是我们如何获得任务栏的高度呢,这个问题我原 ...

  9. android 电池栏的高度,Android如何取得状态栏、任务栏高度

    释放双眼,带上耳机,听听看~! 对于在Android中取得状态栏.任务栏高度这个问题是很多用户们都表示好奇的,那么接下来我们就一起去看看Android如何取得状态栏.任务栏高度的内容. package ...

最新文章

  1. 数据结构 单链表 C
  2. Mybatis sql注入问题
  3. 我的世界手机版服务器显示即将推出,我的世界手机版领域服即将开启 什么是领域服...
  4. css 属性选择器笔记
  5. 计算机网络中采用最基本的多路复用技术是,2013年华南理工-计算机网络技术试题...
  6. oracle imp命令路径,在oracle中关于imp命令的详细讲解
  7. CCNet:Criss-Cross Attention for semantic Segmentation
  8. 成语——》谁不曾浑身是伤,谁不曾彷徨迷惘
  9. INA230测量电压电流功率
  10. 高通SDX12:SFE(shortcut-fe)软加速驱动效果调测
  11. hibernate之HQL属性查询
  12. 谷歌AI论文BERT双向编码器表征模型:机器阅读理解NLP基准11种最优(公号回复“谷歌BERT论文”下载彩标PDF论文)
  13. 前端开发的辛酸史(2)之织梦教程
  14. JPA使用(Querydsl)
  15. 全排列Permutation
  16. python3 迭代器(自定义迭代器)
  17. 如何在视频中的对象后面添加图像
  18. Very Deep Convolutional Networks for Large-Scale Image Recognition-VGGNet解读
  19. 中英广播电视新媒体战略比较研究
  20. 缺磷YNB (含硫酸铵,不含氨基酸)的成分

热门文章

  1. 双击打开Excel2016文件后无法直接显示文件内容的解决办法
  2. STM32单片机扩展下的IPUS SQPI PSRAM应用领域
  3. 为何excel中数据无法计算机,电脑中excel表格内容无法复制的解决方法
  4. python控制键盘输入_神技能:Python控制键盘鼠标
  5. Python实现Flesch阅读易读性公式计算
  6. 海信系统 重装服务器,海信电视如何重刷系统
  7. 前端不错的相关网站和论坛
  8. 【Matlab数字识别】数字仪表图像识别【含源码 693期】
  9. 蚁群算法求最值c语言实现,蚁群算法代码(求函数最值)
  10. 李迅雷+趋势的力量+K型分化时代如何赢取超额收益