meteor1022 发表于 2010-7-5 19:06:38

【已解决】如何在屏幕指定位置显示文字?

本帖最后由 meteor1022 于 2010-7-7 04:06 编辑

小弟想问一个问题,刚接触autoit不久,不知道能不能实现。

如何在屏幕指定位置显示文字?
并且这些文字不影响到正常的使用电脑,感觉就像是本身桌面墙纸带有的。
而且这些字的大小,位置,颜色都是可以控制的。

水木子 发表于 2010-7-5 22:49:08

#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <FontConstants.au3>

Global $tRECT, $hFont, $hOldFont, $hDC

HotKeySet("{ESC}", "_Exit")

$tRECT = DllStructCreate($tagRect)
DllStructSetData($tRECT, "Left", 5)
DllStructSetData($tRECT, "Top", 5)
DllStructSetData($tRECT, "Right", 250)
DllStructSetData($tRECT, "Bottom", 50)

$hDC = _WinAPI_GetDC(0)
$hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _
                $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
$hOldFont = _WinAPI_SelectObject($hDC, $hFont)

_WinAPI_SetTextColor($hDC, 0x0000FF)
_WinAPI_SetBkColor($hDC, 0x000000)
; comment next line to get black background instead of transparent one
_WinAPI_SetBkMode($hDC, $TRANSPARENT)

While 1
        _WinAPI_DrawText($hDC, "Hello world!", $tRECT, $DT_CENTER)
        Sleep(100)
WEnd

Func _Exit()
        _WinAPI_SelectObject($hDC, $hOldFont)
        _WinAPI_DeleteObject($hFont)
        _WinAPI_ReleaseDC(0, $hDC)
        _WinAPI_InvalidateRect(0, 0)
        $tRECT = 0
        Exit
EndFunc   ;==>_Exit

newuser 发表于 2010-7-6 13:54:25

本帖最后由 newuser 于 2010-7-6 13:56 编辑

回复 2# 水木子
请问是在以下调整坐标吗?
DllStructSetData($tRECT, "Left", 5)

DllStructSetData($tRECT, "Top", 5)

DllStructSetData($tRECT, "Right", 250)

DllStructSetData($tRECT, "Bottom", 50)
我调来调去还是不清楚?要么是在左上角,要么看不到字?
明白了,是我设置的数字不合理,谢谢!

meteor1022 发表于 2010-7-7 04:04:39


水木子 发表于 2010-7-5 22:49 http://www.autoitx.com/images/common/back.gif


    谢谢指导。。效果和我想象中的有点区别,那些字是在桌面上层的,虽然没有影响到点击,但影响了观看。

   再次感谢。我自己慢慢摸索了。。

hollandmfq 发表于 2014-5-4 10:58:15

雷锋精神传天下!谢谢分享!
页: [1]
查看完整版本: 【已解决】如何在屏幕指定位置显示文字?