thesnow 发表于 2009-5-7 19:12:26

每周任务#1

      抱着学习,交流的态度。也为了聚集论坛的人气。来个每周任务。
      同时对新手提一点建议:
1.脚踏实地.认清编程与脚本
如果你对编程有兴趣,请不要学习autoit,它只是一个脚本,虽然它目前是做很多事情。但它不是编程语言。有很多无法超越的问题。比如C++下,我可以定义一个类(class),然后调用。AU3不行。我可以用C++在数据结构中包含另外的自定义数据结构,AU3不行。等等。这是编程语言必须具备的能力。
如果你对autoit感兴趣,那么我建议你,放下你手中XX牛人写的脚本。从帮助一个一个的看起,特别是每个帮助的例子以及包含文件,这是基础,也是高手的思路与结晶。因为一个复杂的脚本都是简单的代码累积起来的.看牛人的脚本也许你能知道可以这么做,但是为什么要这么做却不明白.明白原理,才能按照自己的思路写出自己的脚本.

2.坚持.
不要以为学会自动安装,能写几个GUI就是会了,懂了.任何一门学问都没有它的极致.有牛人用VBS写DirectX的3D演示.有人用画图画跑车.知识永远是学不完的,请坚持你的探索.
万事万物都有相通性,武侠YY小说常说,人剑合一,或者是心中有剑,手中无剑,更或者是人就是自然的一部分.心相通与自然相通.万事万物都有自己的规律.但是都在自然的规律下.任何语言也是.你学会C++,不会不明白DELPHI的使用,因为它们大多数的操作都有一个核心:系统接口.每个语言都有自己的规定,语法,但是它们仍然得在系统的规定下.那么.我们是不是就得非去学习系统呢.内核,API,驱动?编程高手都是系统高手.它们知道系统怎么运转,知道把自己的代码与系统融为一体.所以,请坚持你的学习.

3.理性宽容与人为善.
08年4月底时,论坛发生了一些变故.导致论坛数据丢失,重新起来后.到现在有 16441 个论坛会员,而发帖数超过10帖的人,却只有700来人,从这里大致可以反映出论坛现在的尴尬局面.
我们都生活在现实中,面临各种各样的问题,大部分来自现实生活中,论坛很多朋友都忙于生计,有些离开了,有些潜水了,还有一些在坚持着.
建议各位能够花1分钟的时间低头想想自己当初来论坛注册并在此驻足是为了什么?学习吗?得到一个汉化版?发广告?
当然,既然是论坛就有争论,有抄袭的,辱骂的,装B的(应该有很多人说我就是).请放开你们的成见,抄袭的是你的代码,不是你的思路,其实别人什么都没有得到.(需要有阿Q精神).
新手老是抱怨无从下手.到处求助.请不要忘了,程序帮助才是最具核心价值的东西.里面有思路,有想法,也有做法.
人无完人,没人是全能的.只是长处和短处的问题.指出别人短处是会让人心痛的,但是没有风雨,他是不会明白彩虹的原理的.学习本身就是自己的事情,请不要强求.
高手也请不吝赐教,你的指点可能会让新手茅塞顿开,打开任督二脉.对您没有损失,但是你的身价却抬高了.不理会只是让人觉得你高深,而不会让别人对你敬佩.
4.也请新手朋友看看这个文章
http://www.autoitx.com/forum.php?mod=viewthread&tid=6538&extra=page%3D1

================================废话分割线==============================================
下面是任务,请按照你能想到的办法实现吧,白猫黑猫,会抓耗子的才是好猫.所以请你用不同的方法来实现它.旁门左道也可以,名门正派的也可以.

A.让桌面上的图标,显示为小图标.并在右方显示(系统默认左方)
参考:ListView控件/系统消息/句柄/DLLCALL等方面的知识

B.当按住CTRL键时,如果鼠标指针在屏幕右上角则最小化当前窗口,左上角时则关闭当前窗口,左下角时则隐藏当前窗口,右下角时显示隐藏的窗口.
参考:窗口句柄,窗口状态设置,按键,鼠标等方面的知识.

ceoguang 发表于 2009-5-8 00:10:32

晕,这么好的贴居然没人顶?

sanhen 发表于 2009-5-8 01:29:18

老潇说得非常经典。所说的这些话憋在心里很久了,一直没有说出来。

menfan 发表于 2009-5-8 08:06:01

呵呵,说的太经典啦!继续坚持中。。。

thesnow 发表于 2009-5-8 12:14:15

老潇说得非常经典。所说的这些话憋在心里很久了,一直没有说出来。
sanhen 发表于 2009-5-8 01:29 http://www.autoitx.com/images/common/back.gif

其实问题是:你比我更能憋。

hynq2000 发表于 2009-5-8 12:48:48

刚刚看见 关注一下定一个

bob 发表于 2009-5-8 15:03:19



其实问题是:你比我更能憋。
thesnow 发表于 2009-5-8 12:14 http://www.autoitx.com/images/common/back.gif

看谁憋的过谁!

78391493 发表于 2009-5-8 16:16:30

ctrl没办法单抓的吧

starl 发表于 2009-5-8 16:33:45

用心良苦啊!!!!支持你们的辛勤付出!!!加油

gooker 发表于 2009-5-8 17:32:08

不会 不过论坛搞点外挂方面的内容肯定慢慢就火了.

sxd 发表于 2009-5-8 17:34:14

本帖最后由 sxd 于 2009-5-8 23:41 编辑

嗯 最近也在学习外挂 呵呵#include <Misc.au3>
$hDll = DllOpen("user32.dll")
$hWinHandle = 0
While 1
        Sleep(250)
        If _IsPressed("11", $hDll) Then
                $aMousePos = MouseGetPos()
                Select
                        Case $aMousePos > @DesktopWidth - 5 And $aMousePos < 5
                                WinSetState("", "", @SW_MINIMIZE)
                        Case $aMousePos < 5 And $aMousePos < 5
                                WinClose("")
                        Case $aMousePos < 5 And $aMousePos > @DesktopHeight - 5
                                $hWinHandle = WinGetHandle("")
                                WinSetState($hWinHandle, "", @SW_HIDE)
                        Case $aMousePos > @DesktopWidth - 5 And $aMousePos > @DesktopHeight - 5
                                If $hWinHandle <> 0 Then WinSetState($hWinHandle, "", @SW_SHOW)
                EndSelect
        EndIf
WEnd

Func OnAutoItExit()
        DllClose($hDll)
EndFunc   ;==>OnAutoItExit

131738 发表于 2009-5-8 22:19:56

高手!!!!!!!!

不懂!

纯支持一下!!!!!!!!

78391493 发表于 2009-5-9 16:50:38

看了 sxd写的,明白了

#NoTrayIcon

Global $GUIShow = True

GUICreate("每周任务", 421, 256, -1, -1, 0)
GUICtrlCreateLabel("将鼠标移动到左上角并按Ctrl键可以隐藏/显示本窗口", 0, 88, 420, 17, 1)
GUICtrlCreateLabel("将鼠标移动到右上角并按Ctrl键可以关闭本窗口", 0, 112, 415, 17, 1)
GUISetState(@SW_SHOW)

While 1
        $MousePos = MouseGetPos()
        If _IsPressed() Then
                If $MousePos < 100 And $MousePos < 100 And $GUIShow = True Then
                        GUISetState(@SW_HIDE)
                        $GUIShow = False
                ElseIf $MousePos < 100 And $MousePos < 100 And $GUIShow = False Then
                        GUISetState(@SW_SHOW)
                        $GUIShow = True
                EndIf
                If $MousePos > (@DesktopWidth - 100) And $MousePos < 100 Then Exit
        EndIf
        Sleep(150)
WEnd

Func _IsPressed($sHexKey = 11)
        Local $a_R = DllCall("user32.dll", "int", "GetAsyncKeyState", "int", "0x" & $sHexKey)
        If Not @error And BitAND($a_R, 0x8000) = 0x8000 Then
                Return 1
        Else
                Return 0
        EndIf
EndFunc   ;==>_IsPressed

78391493 发表于 2009-5-9 16:52:34

延迟虽然可以停顿 但是不灵

78391493 发表于 2009-5-9 16:53:57

改一下这样好多了
#NoTrayIcon

Global $GUIShow = True

GUICreate("每周任务", 421, 256, -1, -1, 0)
GUICtrlCreateLabel("将鼠标移动到左上角并按Ctrl键可以隐藏/显示本窗口", 0, 88, 420, 17, 1)
GUICtrlCreateLabel("将鼠标移动到右上角并按Ctrl键可以关闭本窗口", 0, 112, 415, 17, 1)
GUISetState(@SW_SHOW)

While 1
        $MousePos = MouseGetPos()
        If _IsPressed() Then
                If $MousePos < 100 And $MousePos < 100 And $GUIShow = True Then
                        GUISetState(@SW_HIDE)
                        $GUIShow = False
                        Sleep(200)
                ElseIf $MousePos < 100 And $MousePos < 100 And $GUIShow = False Then
                        GUISetState(@SW_SHOW)
                        $GUIShow = True
                        Sleep(200)
                EndIf
                If $MousePos > (@DesktopWidth - 100) And $MousePos < 100 Then Exit
        EndIf
        GUIGetMsg()
WEnd

Func _IsPressed($sHexKey = 11)
        Local $a_R = DllCall("user32.dll", "int", "GetAsyncKeyState", "int", "0x" & $sHexKey)
        If Not @error And BitAND($a_R, 0x8000) = 0x8000 Then
                Return 1
        Else
                Return 0
        EndIf
EndFunc   ;==>_IsPressed
页: [1] 2 3 4 5
查看完整版本: 每周任务#1