MASM32编程获取任务栏高度

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

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

还是自己查了一下API,找到了下面的方法:

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; 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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索masm
, masm怎么yong
, 提示
, 右下角
, 高度
, 任务
, 剩余
上方
获取任务栏高度、mfc获取任务栏高度、qt获取任务栏高度、java获取任务栏高度、vb获取任务栏高度,以便于您获取更多的相关知识。

时间: 2024-11-02 14:15:52

MASM32编程获取任务栏高度的相关文章

用MASM32编程获取并显示WinRAR的路径

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<; 文件名: rar_path.asm; 功 能: 获取并显示WinRAR的路径; 作 者:

Android编程获取通知栏高度的方法_Android

本文实例讲述了Android编程获取通知栏高度的方法.分享给大家供大家参考,具体如下: 这里通过反射机制获取通知栏高度 通知栏高度写在dimen文件中: public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; Field field = null; int x = 0, statusBarHeight = 0; try { c = Class.forName(&qu

Android编程获取通知栏高度的方法

本文实例讲述了Android编程获取通知栏高度的方法.分享给大家供大家参考,具体如下: 这里通过反射机制获取通知栏高度 通知栏高度写在dimen文件中: public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; Field field = null; int x = 0, statusBarHeight = 0; try { c = Class.forName(&qu

JAVA获得任务栏高度

很多人在用JAVA做桌面应用程序的时候,有时候会用到在桌面右下角弹出提示框,就好像QQ登录后的提示一样,显示在桌面的右下角,任务栏的上面,过段时间自动消失,但是我们如何获得任务栏的高度呢,这个问题我原来也纠结了一段时间,有的人说,JAVA无法做到,要用到JNI编程,用C/C++去获得任务栏高度,今天我为大家介绍一种方法,不需要这么麻烦. 在JAVA中已经为我们提供了获得容器边界的类Insets,归根结底,屏幕桌面也是一个容器,所以我们可以使用该类进行操作. 在JDK API中对Insets类的描

Android编程获取GPS数据的方法详解_Android

本文实例讲述了Android编程获取GPS数据的方法.分享给大家供大家参考,具体如下: GPS是Android系统中重要的组成部分,通过它可以衍生出众多的与位置相关的应用. Android的GPS有一个专门的管理类,称为LocationManager,所有的GPS定位服务都由其对象产生并进行控制. 首先需要明确的是,LocationManager类的对象获取并不是直接创建的,而是由系统提供的,具体来说,通过如下方法,为一个LocationManager对象建立一个对象引用: 复制代码 代码如下:

Android编程获取图片和视频缩略图的方法_Android

本文实例讲述了Android编程获取图片和视频缩略图的方法.分享给大家供大家参考,具体如下: 从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位 置,可以帮助我们从mediaprovider中获取系统中的视频或图片文件的缩略图,该类提供了三种静态方法可以直接调用获取. 1. createVideoThumbnail static Bitmap createVideoThumbnail(

Android编程获取屏幕宽高与获取控件宽高的方法_Android

本文实例讲述了Android编程获取屏幕宽高与获取控件宽高的方法.分享给大家供大家参考,具体如下: 获取屏幕宽高 // 获取屏幕宽高(方法1) int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px) int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p) L

Android编程获取控件宽和高的方法总结分析_Android

本文总结分析了Android编程获取控件宽和高的方法.分享给大家供大家参考,具体如下: 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一个控件,这个控件非常简单: public class MyImageView extends ImageView { public MyImageView(Context context, AttributeSet attrs) { super(context, attrs); } public MyIm

Android编程获取图片和视频缩略图的方法

本文实例讲述了Android编程获取图片和视频缩略图的方法.分享给大家供大家参考,具体如下: 从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位 置,可以帮助我们从mediaprovider中获取系统中的视频或图片文件的缩略图,该类提供了三种静态方法可以直接调用获取. 1. createVideoThumbnail static Bitmap createVideoThumbnail(