是这个意思,但是在上面顶部贴出的那个代码修改。意思就是把“确定”,“否”修改为自己任意所想显示的文 ...
令狐大虾 发表于 2017-1-9 16:42
2楼的代码就是可修改文字,要把代码全部发上来?
;===============================================================================
;~ 参考: http://www.autoitx.com/forum.php ... p;extra=&page=3
;~ 函数: MsgBoxE()
;~ 描述: 修改 MsgBox() 的位置或按钮文字
;~ 作者:甲壳虫
;~ 参数:
;~ $flag = MsgBox() 的 flag
;~ $title = MsgBox() 标题
;~ $text = MsgBox() 的信息内容
;~ $timeout = MsgBox() 超时
;~ $hwnd = MsgBox() 的 hwnd
;~ $Button1 = 第一个按钮要显示的文字
;~ $Button2 = 第二个按钮要显示的文字
;~ $Button3 = 第三个按钮要显示的文字
;~ $x = MsgBox() 的 x 坐标
;~ $y = MsgBox() 的 y 坐标
;~ 返回值: 同 MsgBox() 的返回值
;~ 例:
;Global $msg
#cs
$msg = MsgBoxE(3, '_MsgBoxE()示例', _
'本例对 MsgBox(3, "", "...") 的按钮和位置进行修改:' & @CRLF & @CRLF & _
'第一个按钮“是”改成“按钮1”' & @CRLF & _
'第二个按钮“否”改成“修改设置”' & @CRLF & _
'第三个按钮“取消”不修改' & @CRLF & _
'x 座标不变,y 座标改成 100', 0, '', '启用', '停用', '退出', '', 100)
;提示:是=启用、否=停用、取消=退出
;MsgBox(0, 'MsgBoxE()', '返回:' & $msg)
#ce
Global $msg
$msg = MsgBoxE(3, '提示', '是否启用手写面板笔和墨迹功能?', 0, '', '启用', '停用', '退出', '', 60)
Select
Case $msg = 6 ;启用
MsgBox(0, '', "选择启用")
;添加要执行的代码
Case $msg = 7 ;停用
MsgBox(0, '', "选择停用")
;添加要执行的代码
Case $msg = 2 ;取消
MsgBox(0, '', "选择退出",1)
EndSelect
;===============================================================================
Func MsgBoxE($flag, $title, $text, $timeout = 0, $hwnd = '', $Button1 = '', $Button2 = '', $Button3 = '', $x = '', $y = '')
; 参数加在 title 后面传递给 MB__CallBack,避免使用全局变量
$title &= @CRLF & 'B1=' & $Button1 & @CRLF & 'B2=' & $Button2 & @CRLF & 'B3=' & $Button3 & @CRLF & 'x=' & $x & @CRLF & 'y=' & $y
Local $hGUI = GUICreate("")
Local $sFuncName = "GetWindowLongW"
If @AutoItX64 Then $sFuncName = "GetWindowLongPtrW"
Local $aResult = DllCall("user32.dll", "long_ptr", $sFuncName, "hwnd", $hGUI, "int", -6)
Local $hInst = $aResult[0]
$aResult = DllCall("kernel32.dll", "dword", "GetCurrentThreadId")
Local $iThreadId = $aResult[0]
Local $hCallBack = DllCallbackRegister("MB__CallBack", "int", "int;hWnd;ptr")
Local $pCallBack = DllCallbackGetPtr($hCallBack)
$aResult = DllCall("user32.dll", "handle", "SetWindowsHookEx", "int", 5, "ptr", $pCallBack, "handle", $hInst, "dword", $iThreadId)
Local $hHook = $aResult[0]
Local $msg = MsgBox($flag, $title, $text, $timeout, $hwnd)
GUIDelete($hGUI)
DllCall("user32.dll", "bool", "UnhookWindowsHookEx", "handle", $hHook)
DllCallbackFree($hCallBack)
Return $msg
EndFunc ;==>MsgBoxE
Func MB__CallBack($iCode, $wParam, $lParam)
;~ ConsoleWrite('$iCode=' & $iCode & ', $wParam=' & $wParam & ', $lParam=' & $lParam & @CRLF)
If $iCode = 5 Then
Local $title = WinGetTitle($wParam)
If Not StringInStr($title, @CRLF & 'B1=') Then Return
Local $match = StringRegExp($title, '(?i)\r\nB1=(.*)\r\nB2=(.*)\r\nB3=(.*)\r\nx=(.*)\r\ny=(.*)', 1)
If @error Then Return
; 改回 title
$title = StringRegExpReplace($title, '(?i)(?s)\r\nB1=.*', '')
WinSetTitle($wParam, '', $title)
; 移动 MsgBox 位置
If $match[3] <> '' Or $match[4] <> '' Then
If $match[3] = '' Then $match[3] = Default
If $match[4] = '' Then $match[4] = Default
WinMove($wParam, '', $match[3], $match[4])
EndIf
; 修改按钮文字
If $match[0] <> '' Then ControlSetText($wParam, '', 'Button1', $match[0])
If $match[1] <> '' Then ControlSetText($wParam, '', 'Button2', $match[1])
If $match[2] <> '' Then ControlSetText($wParam, '', 'Button3', $match[2])
EndIf
EndFunc ;==>MB__CallBack
|