吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7145|回复: 63
收起左侧

[原创工具] 取色器3.1-Autoit3制作-office高效办公

  [复制链接]
zhaopengdoctor 发表于 2023-1-8 17:20
一、制作该小程序的起因
前两天有一项工作是将某网页上一个表格复刻到Word文件里,包括表格的底纹,其中每一个单元格的底纹均不同。
在使用Word设置单元格底纹时,发现竟然没有取色器,如图1:


图1

无奈,只能打开PowerPoint,使用里面的取色器取色,然后再点击其他颜色,将R、G、B值分别记下,如图2:

图2
然后回到Word界面,点开其他颜色,输入R、G、B值,确定。
后来发现Excel、OneNote里也没有取色器的功能,于是就有了这样一个念头,制作一个小程序来解决这个问题。
前期作了两个不同界面的版本,前两个版本都是带窗口的小程序,
第一个版本是在获取到颜色后,鼠标点击图2红色右边的输入框,按Ctrl+V键,就会将三个色值自动粘贴到里面,然后自动回车确定。
顺带说一句:Word、Excel、PowerPoint、OneNote这几个同属于Microsoft Office办公组件的程序,他们的颜色窗口界面基本一致。
问题是设置了快捷键后,有时会出现Ctrl键粘滞现象,于是有了第二个版本。
第二个版本是在获取到颜色后,打开其他颜色的窗口,就自动将三个值输入,自动确定。
在做好第二个版本后,将代码稍微修改了一下,发现图2中R、G、B输入框的值可以随鼠标移动而自动更改为当前的色值,于是有了现在这个版本,如图3:

图3
二、软件使用说明
软件在运行后无任何提示,多次双击仅能运行一个实例,托盘图标已隐藏,在任务管理器中可以找到该程序,占用CPU和内存大小如图4:

图4
在Microsoft Office系列办公软件中,当点击图1中的“其他颜色”,打开图3窗口时,在确定、取消的下方会自动显示一个名为”取色器“的按钮,
当鼠标移动到其上方时会变成十字,此时点按鼠标并拖动到想要取色的位置,取色器按钮的背景颜色会自动切换成鼠标所在位置屏幕的颜色,
当确定好要取的颜色时,松开鼠标即停止取色,点击确定即可设置为所取颜色。
如果切换到”自定义“标签下(图2),还可看到R、G、B输入框的值为当前获取到的色值。
三、目前存在的缺陷
1.打开程序后占用内存虽然仅2M,但CPU占用有时较大,甚至超过了10%(我的笔记本是2014年的比较老旧了),目前还没找到好的方法。
2.打开其他颜色窗口后,如果用其他窗口遮挡颜色窗口,会看到取色器按钮孤零零地待在那里,本来两者就不是一体的,想融合到一起比较困难。
3.在取色器按钮显示时,任务栏上会出现程序的图标,由于应用界面无标题栏,故取消了关闭窗口的按钮功能,在任务栏上是关不掉这个程序的,可以在任务管理器中结束任务。
四、程序源代码
在发布代码前我对大部分代码作了解释,方便大家互相学习交流。
希望有高手大侠能针对上述缺陷,对代码进一步完善。
在使用过程中遇到的问题也可以及时反馈给我。
[Asm] 纯文本查看 复制代码
#NoTrayIcon	;隐藏托盘图标
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_Icon=favicon.ico
#AutoIt3Wrapper_OutFile=取色器3.1.exe
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_Description=吾爱破解——zhaopengdoctor原创
#AutoIt3Wrapper_Au3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;创建GUI窗体及按钮
#Region ### START Koda GUI section ###
$Title = "取色器-吾爱破解论坛"
If WinExists($Title) Then Exit ; 仅允许只有一个脚本运行
AutoItWinSetTitle($Title)
Opt("GUIOnEventMode", 1) ;设置事件响应模式
$Form1 = GUICreate($Title, 76, 32, 0, 0, $WS_POPUP, $WS_EX_TOPMOST)
$Button1 = GUICtrlCreateButton("取色器", 0, 0, 76, 32)
GUICtrlSetCursor(-1, 3) ;指定鼠标移动到按钮控件时指针变为精确定位
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "getcolor") ;当主键鼠标按下事件发生时,执行getcolor
#EndRegion ### END Koda GUI section ###
While 1
	If WinExists("颜色", "") Then ;如果存在颜色窗口
		$pos = WinGetPos("颜色", "") ;获取颜色窗口的坐标位置和大小
		$state = WinGetState("颜色", "") ;获取颜色窗口的状态
		$GUIx = $pos[0] + $pos[2] - 90 ;取色器窗口x坐标
		$GUIy = $pos[1] + 118 ;取色器窗口y坐标
		$buttonleft = $GUIx ;按钮控件左边缘屏幕坐标
		$buttonright = $GUIx + 76 ;按钮控件右边缘屏幕坐标
		$buttontop = $GUIy ;按钮控件上边缘屏幕坐标
		$buttonbottom = $GUIy + 32 ;按钮控件下边缘屏幕坐标
		If BitAND($state, 2) Then ;如果颜色窗口为可见状态
			GUISetState(@SW_SHOW) ;显示取色器窗口
			WinMove($Title, "", $GUIx, $GUIy) ;将取色器窗口移动至颜色窗口相对位置
		EndIf
		$mousepos = MouseGetPos() ;获取鼠标位置
		$getcolor = PixelGetColor($mousepos[0], $mousepos[1]) ;获取鼠标所在位置的屏幕颜色(结果为十进制)
		$hexcolor = Hex($getcolor) ;将颜色转换为十六进制
		$strR = StringMid($hexcolor, 3, 2) ;从十六进制颜色中提取R颜色
		$strG = StringMid($hexcolor, 5, 2) ;从十六进制颜色中提取G颜色
		$strB = StringRight($hexcolor, 2) ;从十六进制颜色中提取B颜色
		$R = Dec($strR) ;将R颜色转换为十进制
		$G = Dec($strG) ;将G颜色转换为十进制
		$B = Dec($strB) ;将B颜色转换为十进制
	Else
		GUISetState(@SW_HIDE) ;否则,隐藏取色器窗口
	EndIf
WEnd
Func getcolor()
	If $mousepos[0] > $buttonleft And $mousepos[0] < $buttonright And $mousepos[1] > $buttontop And $mousepos[1] < $buttonbottom Then ;判断鼠标在“获取”按钮范围时
		GUISetOnEvent($GUI_EVENT_MOUSEMOVE, "printcolor") ;鼠标移动时执行printcolor
		GUISetOnEvent($GUI_EVENT_PRIMARYUP, "setcolor") ;鼠标抬起时执行setcolor
	EndIf
EndFunc   ;==>getcolor
;将按钮背景设置为鼠标所在位置屏幕的颜色,并将十六进制颜色及R、G、B的值显示在输入框
Func printcolor()
	ControlSetText("颜色", "", "[CLASS:RichEdit20W; INSTANCE:10]", $R)
	ControlSetText("颜色", "", "[CLASS:RichEdit20W; INSTANCE:11]", $G)
	ControlSetText("颜色", "", "[CLASS:RichEdit20W; INSTANCE:12]", $B)
	GUICtrlSetBkColor($Button1, $getcolor)
EndFunc   ;==>printcolor
;停止显示鼠标所在位置屏幕的颜色,等待颜色窗口激活时,将输入框内R、G、B颜色设置为当前颜色
Func setcolor()
	GUISetOnEvent($GUI_EVENT_MOUSEMOVE, "")
	GUISetOnEvent($GUI_EVENT_PRIMARYUP, "")
	GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "getcolor")
EndFunc   ;==>setcolor

五、软件源码及程序下载
为使32位系统计算机也可使用该程序,仅编译了32位版本;同时按照版规,以附件形式上传论坛,敬请谅解。
取色器.zip (300.5 KB, 下载次数: 392) 解压密码:52pojie



免费评分

参与人数 10吾爱币 +17 热心值 +7 收起 理由
shuazi313 + 1 + 1 我很赞同!
saoye + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Mushy + 1 我很赞同!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
confiant + 1 谢谢@Thanks!
wyangdh + 2 + 1 谢谢@Thanks!
lgc81034 + 1 谢谢@Thanks!
zhanglei1371 + 2 + 1 谢谢@Thanks!
wkdxz + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
a85401234 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

winshaw 发表于 2023-1-8 17:39
微信截图:alt+A
里面就有RGB的色值了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
7870306 + 1 + 1 我很赞同!

查看全部评分

 楼主| zhaopengdoctor 发表于 2023-1-20 12:54
wkjxs2015 发表于 2023-1-20 07:30
取色器好用的太多了,希望楼主的能有些自己的特色。

我的只是方便在word、excel等办公软件里取色,并没有想做一个单独取色的程序,针对我的需求而言,我的小程序或者叫小插件更加便捷,只是将鼠标从按钮拖动到取色位置然后松开鼠标,点击确定即可。
其他的取色程序功能是不少,但是取色后你还要把相应的色值复制粘贴到对话框里,再点击确定。针对于有些office版本并不能直接粘贴16进制的色值,还需要将RGB三个色值依次录入或粘贴。
a85401234 发表于 2023-1-8 17:23
ysjd22 发表于 2023-1-8 17:48
视乎挺不错的
Chao11 发表于 2023-1-8 18:06
感谢分享
 楼主| zhaopengdoctor 发表于 2023-1-8 18:11
winshaw 发表于 2023-1-8 17:39
微信截图:alt+A
里面就有RGB的色值了

当时是在办公电脑上,没有外网,没有微信~
asz2426 发表于 2023-1-8 18:55
很好的东西  能解决问题
songmingjiu8888 发表于 2023-1-8 19:16
谢谢分享!
7890qwaszx 发表于 2023-1-8 20:10
现在竟然还能看到用Au3写的东西
flyuan 发表于 2023-1-8 20:11
支持原创
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-24 21:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表