找回密码
 加入
搜索
查看: 4475|回复: 10

如何用AU3写桌面程序?

[复制链接]
发表于 2008-8-20 09:07:30 | 显示全部楼层 |阅读模式
比如天气预报,时钟,等等!
在线等!!
发表于 2008-8-20 10:16:13 | 显示全部楼层
俺菜鸟,俺不会,俺飘过
 楼主| 发表于 2008-8-20 14:58:18 | 显示全部楼层
来个会的解说下啊!
发表于 2008-8-20 15:19:46 | 显示全部楼层
我想写个系统内核,只是还不太明白,谁能帮帮我么?
 楼主| 发表于 2008-8-20 15:23:28 | 显示全部楼层
??
不明白,我帖子有问题?
还是?
发表于 2008-8-20 16:41:34 | 显示全部楼层
看这段代码是否能帮助你?
桌面图标位置同步脚本



--------------------------------------------------------------------------------
 
#NoTrayIcon 
#AutoIt3Wrapper_icon=D:\autoit3\Aut2Exe\Icons\FOLDER.ico 
#AutoIt3Wrapper_Compression=4 
#AutoIt3Wrapper_UseAnsi=y 
#AutoIt3Wrapper_Res_Comment=2008-04-19, 23:31 
#AutoIt3Wrapper_Res_Description=桌面图标同步程序 
#AutoIt3Wrapper_Res_Fileversion=1.0.0.1 
#AutoIt3Wrapper_Res_LegalCopyright=Amu 

#include <GuiListView.au3> 
Opt("MustDeclareVars", 1) 
Global $hWndManager = WinGetHandle("Program Manager") 
Global $hWndDesktop = ControlGetHandle("Program Manager","",1) 
If Not IsDeclared("GWL_STYLE") Then Global Const $GWL_STYLE = -16 
Global $LVS_Style = _WinAPI_GetWindowLong($hWndDesktop, $GWL_STYLE) 
Global $inifile, $iSet, $iRefresh, $SNAPTOGRID 

If $CmdLine[0] Then 
    For $i = 1 To $CmdLine[0] 
        Select 
            Case StringRegExp($CmdLine[$i], '^[/-](?i)load[=:].+$|^[/-](?i)l[=:].+$') And Not $inifile         
                $iSet = 1 
                $inifile = StringRegExpReplace($CmdLine[$i], '^[/-](?i)load[=:]?|^[/-](?i)l[=:]?', "") 
                 
            Case StringRegExp($CmdLine[$i], '^[/-](?i)save[=:].+$|^[/-](?i)s[=:].+$') And Not $inifile 
                $iSet = 0 
                $inifile = StringRegExpReplace($CmdLine[$i], '^[/-](?i)save[=:]?|^[/-](?i)s[=:]?', "") 
                 
            Case StringRegExp($CmdLine[$i], '^[/-](?i)SnapToGrid[=:]\d+$|^[/-](?i)g[=:]\d+$') And $inifile         
                $SNAPTOGRID = Number (StringRegExpReplace($CmdLine[$i], '^[/-](?i)SnapToGrid[=:]?|^[/-](?i)g[=:]?', "") ) 
                 
            Case StringRegExp($CmdLine[$i], '^[/-](?i)Refresh$|^[/-](?i)r$') 
                $iRefresh = 1 
                 
            Case StringRegExp($CmdLine[$i], '^[/-](?i)Help$|^[/-](?i)[?h]$') 
                MsgBox(64,"参数帮助!","AutoIcon.exe [</load|/save>=<file>] [/G=<0|1>] [/R]" & @CRLF & "" & @CRLF & _ 
                    "/load=file 要加载的配置文件。" & @CRLF & "/save=file 要保存的配置文件。" & @CRLF & _ 
                        "/G=<0|1>   为“0”取消图标对齐到网格,为“1”图标对齐到网格,默认不作更改。" & @CRLF & "/R         相当于桌面右键“刷新”") 
                Exit 
            Case Not $inifile 
                $inifile = $CmdLine[$i] 
                If FileExists($inifile) Then $iSet = 1 
        EndSelect     
    Next 
Else 
    If Not IsDeclared("iMsgBoxAnswer") Then Dim $iMsgBoxAnswer 
    $iMsgBoxAnswer = MsgBox(547,"注意!","" & @CRLF & "选“是”保存桌面图标位置信息到文件" & @CRLF & "" & @CRLF & "选“否”从文件读取并排列桌面图标。") 
    Select 
        Case $iMsgBoxAnswer = 6 ;Yes 
            $inifile = FileSaveDialog( "输入一个文件名。", @ScriptDir, "配置文件(*.ini)", 2) 
            If @error Or Not $inifile Then Exit 
            $iSet = 0 
            If Not StringRegExp($inifile, "\.ini$") Then $inifile &= ".ini" 
        Case $iMsgBoxAnswer = 7 ;No 
            $inifile = FileOpenDialog( "选择一个文件。", @ScriptDir, "配置文件(*.ini)", 1) 
            If @error Or Not $inifile Then Exit 
            $iSet = 1 
        Case $iMsgBoxAnswer = 2 ;Cancel 
            Exit 
    EndSelect     
EndIf 

If $iSet Then 
    If $SNAPTOGRID Then $SNAPTOGRID = $LVS_EX_SNAPTOGRID 
    If IsNumber ($SNAPTOGRID) Then _SendMessage($hWndDesktop, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_SNAPTOGRID, $SNAPTOGRID) 
    If BitAND($LVS_Style, $LVS_AUTOARRANGE) Then _WinAPI_SetWindowLong($hWndDesktop, $GWL_STYLE, $LVS_Style - $LVS_AUTOARRANGE );取消自动排列 
     
    If $iRefresh Then DllCall("shell32.dll", "none", "SHChangeNotify", "long", 0x8000000, "int", 0, "ptr", 0, "ptr", 0);刷新图标 
    _SaveAndLoadIconPos($inifile, 1) 
    ;Run("RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters");刷新桌面(通过复制文件的方式替换壁纸文件适用) 
Else 
    _SaveAndLoadIconPos($inifile) 
EndIf 

Func _SaveAndLoadIconPos($iFile, $iLoad = 0) 
    Local $iCount, $iIndex, $sName, $xy     
    If Not IsHWnd($hWndManager) Then $hWndManager = WinGetHandle("Program Manager") 
    If Not IsHWnd($hWndDesktop) Then $hWndDesktop = ControlGetHandle("Program Manager","",1) 
    $iCount = ControlListView($hWndManager, "", $hWndDesktop, "GetItemCount") 
    If @error Then 
        SetError(1) 
        Return 0 
    EndIf 
    If Not $iLoad And FileExists($iFile) Then IniDelete($iFile, "图标位置") 
    For $iIndex = 0 to $iCount - 1 
        $sName = ControlListView($hWndManager, "", $hWndDesktop,"GetText", $iIndex) 
        If $iLoad Then 
            $xy = StringSplit (IniRead ($iFile, "图标位置", $sName, ""), ",") 
            If $xy[0] = 2 Then _ 
            _SendMessage($hWndDesktop, $LVM_SETITEMPOSITION, $iIndex, BitOR(BitShift($xy[2], -16), BitAND($xy[1], 0xffff) ) ) 
        Else;保存图标信息 
            $xy = _GUICtrlListView_GetItemPosition($hWndDesktop, $iIndex) 
            IniWrite($iFile, "图标位置", $sName, $xy[0] & "," & $xy[1] ) 
        EndIf     
    Next 
    Return 1 
EndFunc 
 
发表于 2008-8-20 17:18:11 | 显示全部楼层
大多数人用scite,高手用记事本也行
 楼主| 发表于 2008-8-20 22:08:14 | 显示全部楼层
记得以前有个工具条,有时间研究下那东西!
侧边栏的应用和工具条类似吗?
发表于 2009-5-8 18:15:04 | 显示全部楼层
AU3写桌面程序的确可以,只是楼主你的表达是否可以再明确一点
提问题要清楚些
发表于 2009-5-8 20:03:04 | 显示全部楼层
天气预报和时钟应该是没问题的

主要是界面写好就可以了,没啥技术难点的
发表于 2009-8-25 20:22:30 | 显示全部楼层
顶起来,会的快来帮帮忙,让我们也一起可以跟着提高。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-25 13:28 , Processed in 0.094885 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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