找回密码
 加入
搜索
查看: 5808|回复: 13

[AU3基础] 【已解决】怎样自动运行windows计算器的科学计算模式?

  [复制链接]
发表于 2010-2-25 12:19:55 | 显示全部楼层 |阅读模式
本帖最后由 nekin 于 2010-3-3 09:42 编辑

如果windows计算器当前的运行模式为“标准模式”,怎样自动启动计算器,自动转换成“科学计算”模式?
发表于 2010-2-25 12:33:11 | 显示全部楼层
win7下测试通过
run('calc')
sleep(1000)
send('!2')
发表于 2010-2-25 12:42:34 | 显示全部楼层
另外发现注册表中
HKEY_CURRENT_USER\Software\Microsoft\Calc
下的layout 值可以控制其启动模式(值为DWord类型)
值为0时为科学型
值为1时为标准型
值为2时为程序员型(wIN7下才有)
....
所以可以通过先修改注册表值,再启动 CALC就可以达到楼主之目的
 楼主| 发表于 2010-2-25 12:50:15 | 显示全部楼层
回复 2# maxkingmax

不好意思,我测试没成功,在普通的XP系统下,有区别么?我能到”科学计算“模式下,但转换不过去。
 楼主| 发表于 2010-2-25 12:54:30 | 显示全部楼层
回复 3# maxkingmax


    谢谢啦,我先试试
发表于 2010-2-25 13:41:30 | 显示全部楼层
在XP下,刚用虚拟机测试了下
Win.ini中如下字段
[SciCalc]
layout=0
控制 计算器的界面
layout=0 为科学型
layout=1 为普通型
iniWrite(@WindowsDir&'\win.ini','SciCalc','layout','0')
run('calc')
 楼主| 发表于 2010-2-25 13:50:21 | 显示全部楼层
回复 6# maxkingmax


    成功了,真的十分感谢!
 楼主| 发表于 2010-2-25 13:53:34 | 显示全部楼层
回复 6# maxkingmax


我要做一个测试windows计算器的程序,应该做成什么样的呢?能否给点建议?
发表于 2010-2-25 14:31:26 | 显示全部楼层
看不懂,要测试什么呢!?
 楼主| 发表于 2010-2-25 14:45:05 | 显示全部楼层
回复 9# maxkingmax


    windows的计算器
发表于 2010-2-25 15:09:05 | 显示全部楼层
楼主要做一个用au3写的程序?
然后楼主想到了做一个操作系统自带计算器的程序,但是一时半会有不知道这个东西是什么样的,所以就让大家帮忙想想这个test.exe应该有哪些功能,才能完美展示au3的强悍..

给你点建议:
1\打开科学型计算器,(展示au3打开其他exe,操作注册表,ini等文件,的功能)
1-2\识别计算器是否已打开(检测窗体是否出现,出现后弹出提示"已发现计算机界面"...呵呵)
2\点击计算器上的按钮进行计算,(展示au3的控件操作能力)
3\读取计算器的结果(展示au3的窗体\控件的读取能力)
4\移动\隐藏\最大化\最小化\关闭计算器的界面,(窗体操作能力)
5\其他.....
6\貌似这个东西根本无法展示出au3的强悍......充其量使用了au3的千分之一不到的功能......
发表于 2010-2-25 15:59:24 | 显示全部楼层
不错的小技巧,收藏!
发表于 2010-2-25 17:52:18 | 显示全部楼层
如果只是测试计算器功能的话,用send吧,管它什么呢,直接发送按键就完了(计算器里面好像不包含send不可用的按键),何必管autoit呢
发表于 2010-2-25 18:33:21 | 显示全部楼层
强大不....
Global $Calc[20] = ["1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "X", ".", "0", "=", "÷", "(", ")", "Back", "C"]
GUICreate("calculator",200,205)
$ioput = GUICtrlCreateInput("",10,10,180,20)

$x=10
$y=40
For $i = 0 To 19
        $Calc[$i] = GUICtrlCreateButton($Calc[$i],$x,$y,43,30)
        If Mod(($i+1), 4)=0 Then
                $x=10
                $y += 32
        Else
                $x += 45
        EndIf
Next
GUISetState()

$str=""
While 1
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $Calc[0]
                        $str &= "1"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[1]
                        $str &= "2"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[2]
                        $str &= "3"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[3]
                        $str &= "+"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[4]
                        $str &= "4"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[5]
                        $str &= "5"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[6]
                        $str &= "6"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[7]
                        $str &= "-"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[8]
                        $str &= "7"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[9]
                        $str &= "8"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[10]
                        $str &= "9"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[11]
                        $str &= "*"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[12]
                        $str &= "."
                        GUICtrlSetData($ioput,$str)
                Case $Calc[13]
                        $str &= "0"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[14]
                        $str = Execute($str)
                        GUICtrlSetData($ioput,$str)
                Case $Calc[15]
                        $str &= "/"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[16]
                        $str &= "("
                        GUICtrlSetData($ioput,$str)
                Case $Calc[17]
                        $str &= ")"
                        GUICtrlSetData($ioput,$str)
                Case $Calc[18]
                        $str = StringLeft($str, StringLen($str)-1)
                        GUICtrlSetData($ioput,$str)
                Case $Calc[19]
                        $str = ""
                        GUICtrlSetData($ioput,$str)
        EndSwitch
        $str = GUICtrlRead($ioput)
WEnd
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-1-12 07:56 , Processed in 0.083651 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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