找回密码
 加入
搜索
楼主: yarsye

[系统综合] 统计下大家都拿AutoIT做什么?目的为何?有何用途?

 火... [复制链接]
发表于 2011-7-20 22:08:03 | 显示全部楼层
au3真正要用于大型商业开发,还有阻碍呀:

一,太容易被反编辑了
二,不直接支持多线程,特别是现在的大 ...
happytc 发表于 2011-7-20 20:53


学AU3的很少想拿来开发大型商业软件的。任何语言都有其适用范围。
发表于 2011-7-21 05:46:47 | 显示全部楼层
学AU3的很少想拿来开发大型商业软件的。任何语言都有其适用范围。
friendtasy 发表于 2011-7-20 22:08

同意,什么东西都有最适用它的范围,何必要把一种其他语言可以更好完成的事交给另一种完成起来相对不尽如人意的语言去做呢?
打个比方,大型数据库,大型动态网站,谁又会想到用auto去完成全部功能,不但浪费时间,而且效率也是问题
发表于 2011-7-21 13:22:26 | 显示全部楼层
同意 。适合做自动化测试
 楼主| 发表于 2011-7-22 16:46:02 | 显示全部楼层
Marking !!!
发表于 2011-7-27 09:34:03 | 显示全部楼层
个人兴趣,想学,不过还没有入门。
发表于 2011-7-28 13:23:13 | 显示全部楼层
个人爱好多一些吧!!可是总是专不了心去学这!
发表于 2011-7-28 13:41:56 | 显示全部楼层
水平有限,写不出什么好东西。自己弄弄。
 楼主| 发表于 2011-7-28 17:11:42 | 显示全部楼层
Tracking !
发表于 2011-7-29 04:37:31 | 显示全部楼层
打算用AutoIt写一个比Windows还优秀的操作系统。
发表于 2011-7-29 10:38:30 | 显示全部楼层
回复 54# pusofalse
请教P版:
我在学习使用您 <LocalSecurityAuthority.au3>时 ,遇到了一点问题,小弟研究了很久也在网上搜索了相关帖子没有和我遇到类似的问题的,所以想请教您关于这两个函数的使用。

目的:自动卸载摄像头驱动
函数: _CM_Get_Device_ID_By_Name_Ex,_SetupDiCreateDeviceDevs,_SetupDiDisableDevice
产生背景:当卸载摄像头驱动时,提示需要拔掉camera,所以我就想先disable然后再remove掉这个摄像头最后达到卸载驱动的效果。当我插上摄像头时,在设备管理器里面会在audio和video两处显示同样的设备名,不同的是两个的PID不同
问题产生:当我用上面三个函数时,发现只能disable、remove掉audio的那个部分,video那部分还在。
分析对比:当我停用鼠标键盘时,是没有任何问题的,但是当我停用摄像头时就出现问题了。
问题研究:当我用 _CM_Get_Device_ID_By_Name_Ex函数通过名字获取ID时,只是能得到第一个ID,不能全部都返回,也就不能全部都disable了。

麻烦P版有时间给看看,谢谢了。

粗略代码请看下面:[code]#include <TreeViewConstants.au3>
#include <GUITreeView.au3>
#include <GuiToolBar.au3>
#include <SetupApi.au3>

Local $TitleInDM,$sDeviceId, $hDevs, $tDevInfo
发表于 2011-7-29 10:39:09 | 显示全部楼层
粗略代码请看下面:
#include <TreeViewConstants.au3>
#include <GUITreeView.au3>
#include <GuiToolBar.au3>
#include <SetupApi.au3>

Local $TitleInDM,$sDeviceId, $hDevs, $tDevInfo
        
$TitleInDM = "HID Keyboard Device";这里如果有两个device名字是一样的,只返回第一个deviceID
$sDeviceId = _CM_Get_Device_ID_By_Name_Ex($TitleInDM)
If $sDeviceId == "" Then Exit

; Obtain a handle to device information set.
_SetupDiCreateDeviceDevs($sDeviceId, $hDevs, $tDevInfo)

; The following 4 calls always returns True if succeeds without an error.
 _SetupDiDisableDevice($hDevs, $tDevInfo, 1)        ; Disable
 Sleep(5000)
 _SetupDiDisableDevice($hDevs, $tDevInfo, 0)        ; Enable
 Sleep(5000) 
 _SetupDiRemoveDevice($hDevs, $tDevInfo, 1)        ; Forcibly remove this device
 Sleep(5000)
 _CM_Scan_Device_Changes("")        ; Detect the device that has been removed from your system.

 ;Release handle and vars.
_SetupDiDestroyDeviceInfoList($hDevs)
_SetupDiApiBufferFree($tDevInfo)
; #### FUNCTION ####
; ================================================================================
; Name        : _CM_Get_Device_ID_By_Name_Ex
; Description        : Specifies a device friendly name (or device description), retrieves the device instance ID binds to this name.
; Parameter(s)        : $sFriendlyName        - Specifies a device friendly name, or description.
;                : $fMatchAll        - A value of TRUE indicates the full words is matched, default to TRUE.
;                : $sDeviceID        - Device identifier string of the device from which the match is started, can be NULL.
;                : $hMachine        - Supplies a machine handle, on which the function to execute, default to local.
; Return values        : If a device instance is matched, the return value is set to the device instance identifier, otherwise returns NULL.
; Author        : Pusofalse
; ================================================================================
Func _CM_Get_Device_ID_By_Name_Ex($sFriendlyName, $fMatchAll = True, $sDeviceID = "", $hMachine = 0)
        Local $aChild, $sDescr, $sName, $hDevInst, $sVal

        If IsString($sDeviceID) = 0 Then
                $hDevInst = $sDeviceID
        Else
                $hDevInst = _CM_Locate_DevNode_Ex($sDeviceID, $hMachine)
        EndIf
        $aChild = _CM_Enumerate_Children_Ex($hDevInst, $hMachine)

        For $i = 1 To $aChild[0]
                $hDevInst = _CM_Locate_DevNode_Ex($aChild[$i], $hMachine)
                $sDescr = _CM_Get_DevNode_Registry_Property_Ex($hDevInst, 1, $hMachine)
                $sName = _CM_Get_DevNode_Registry_Property_Ex($hDevInst, 0xD, $hMachine)
                If $sName <> "" Then $sDescr = $sName
                If $sDescr = "" Then $sDescr = "[Unknown device]"
                If $fMatchAll Then
                        If $sDescr = $sFriendlyName Then Return $aChild[$i];我把这里换成msgbox发现可以显示两个deviceID,但是不懂为什么只返回一个?
                Else
                        If StringInStr($sDescr, $sFriendlyName) Then Return $aChild[$i]
                EndIf
                $sVal = _CM_Get_Device_ID_By_Name_Ex($sFriendlyName, $fMatchAll, $hDevInst, $hMachine)
                If $sVal <> "" Then Return $sVal;把这里换成msgbox发现这个递归会调用很多次
        Next
        Return ""
EndFunc        ;==>_CM_Get_Device_ID_By_Name_Ex
 楼主| 发表于 2011-7-29 15:04:55 | 显示全部楼层
Update ing ...
发表于 2011-7-29 21:24:31 | 显示全部楼层
写点小程序
发表于 2011-7-30 00:43:18 | 显示全部楼层
呵呵,我也来参与一下;
语言学了不少,象VB,C语言,C++,但都没有深入,都是写写算法什么的,没有实战开发应用;
由于有BASIC语言的基础,AU3呢,很快就上手了,语言简练,函数功能集成度高,在C里面要写一堆的代码,都已经在这里面写好了,一条语句就搞定,方便得很,写写一般的小工具足够了,速度又快,就已经相当于一个很完善的库了;再加上对DLL的调用支持,以及大家的功能扩充,也能实现很多功能了;
缺点就是,反编译,解释执行,体积过大这几个硬伤,其他还好,看拿做什么用吧!
发表于 2011-7-30 11:10:19 | 显示全部楼层
自己用的..
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-19 20:58 , Processed in 0.086955 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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