找回密码
 加入
搜索
查看: 9276|回复: 23

[AU3基础] 这个语句是否存在问题,为何不能正常写入文本呢?

 火.. [复制链接]
发表于 2010-11-16 16:11:32 | 显示全部楼层 |阅读模式
本帖最后由 木头人 于 2010-11-16 17:13 编辑
 
        $TForm3 = GUICreate("注意!!!", 300, 130, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_BORDER), 0, $XForm1)
        If @OSVersion = "WIN_2003" Or @OSVersion = "WIN_XP" Or @OSVersion = "WIN_2000" Then
           $CKFIXMBR = GUICtrlCreateCheckbox("自动修复MBR,解除MBR病毒如:“鬼影”", 12, 64, 288, 17)
        EndIf
        If GUICtrlRead($CKFIXMBR) = 1 Then
        _FileWriteToLine(@ScriptDir&"\abc.bat", 1, "fdisk /mbr", 1)
       Endif
测试了半天 ,一直没能搞定,麻烦哪个同学帮我写一下,谢谢
要实现的如下:
创建一个窗体。
一个单选框。
当单选 框选 中时,写入  fdisk /mbr  至当前目录下的  a.bat  文本中的第一行。
如果未选中,则放弃操作。

非常感谢。
发表于 2010-11-16 16:20:42 | 显示全部楼层
代码不全?还是结构存在问题?
很明显判断语句 If 没有结束语
 楼主| 发表于 2010-11-16 16:29:49 | 显示全部楼层
只提取了主要的部份,没有全文贴出,由于涉及到一些隐私问题,不方便全贴出。
ENDIF没有复制进去。
只想知道这个语句有没有问题。
发表于 2010-11-16 17:00:11 | 显示全部楼层
文件必须存在,并且存在所需要写的行,才能成功
 楼主| 发表于 2010-11-16 17:11:37 | 显示全部楼层
文件及文本行都存在,但是就是不行。。。
发表于 2010-11-16 17:19:49 | 显示全部楼层
"..... a.bat  文本中的第一行"?
不是要写abc.bat?
 楼主| 发表于 2010-11-16 18:20:16 | 显示全部楼层
回复 6# netegg
举例的,写哪个都可以。
发表于 2010-11-16 18:45:00 | 显示全部楼层
回复 7# 木头人


没有   FileOpen 语句吧。。。。。
发表于 2010-11-16 18:48:29 | 显示全部楼层
Opt('GUIOnEventMode', 1)

Local $File = @ScriptDir & '\abc.bat.txt'
GUICreate('')
GUISetOnEvent(-3, '_Exit')
Local $CKFIXMBR = GUICtrlCreateCheckbox('自动修复MBR,解除MBR病毒如:“鬼影”', 10, 50)
GUICtrlSetOnEvent(-1, '_CK')
GUISetState()

While 1
        Sleep(100)
WEnd

Func _CK()
        Local $str = FileRead($File)
        If GUICtrlRead($CKFIXMBR) = 1 Then
                If StringRegExp($str, '^\s*fdisk /mbr') Then Return
                $FO = FileOpen($File, 2)
                FileWrite($FO, 'fdisk /mbr' & @CRLF & $str)
                FileClose($File)
        Else
                If Not StringRegExp($str, '^\s*fdisk /mbr') Then Return
                $FO = FileOpen($File, 2)
                $str = StringRegExpReplace($str, '^\s*fdisk /mbr\V*\s*', '')
                FileWrite($FO, $str)
                FileClose($File)
        EndIf
EndFunc   ;==>_CK

Func _Exit()
        Exit
EndFunc   ;==>_Exit
发表于 2010-11-16 18:51:34 | 显示全部楼层
回复 1# 木头人

If GUICtrlRead($CKFIXMBR) = 1 似乎不对


GUICtrlRead($CKFIXMBR) =  $GUI_CHECKED 如何。。。
发表于 2010-11-16 19:00:23 | 显示全部楼层
afan 发表于 2010-11-16 18:48


为何    GUICtrlRead($CKFIXMBR) = 1 与 GUICtrlRead($CKFIXMBR) = $GUI_CHECKED

同样有效果,只是 GUICtrlRead($CKFIXMBR) = $GUI_CHECKED 要加

#include <GUIConstantsEx.au3>
发表于 2010-11-16 19:07:18 | 显示全部楼层
回复 11# 131738


$GUI_CHECKED 是个常量,其值就等于 1 呀~

在GUIConstantsEx.au3中有定义:
Global Const $GUI_CHECKED = 1
Global Const $GUI_UNCHECKED = 4
发表于 2010-11-16 19:48:20 | 显示全部楼层
回复 11# 131738 老兄呀,这图中的解释误人不浅……………………

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-11-16 19:52:02 | 显示全部楼层
回复 13# lchl0588
那倒也不是
如果是不这么用
而是用
if bitor(guictrlread($check), $gui_check) then
就对了
发表于 2010-11-16 19:53:59 | 显示全部楼层
本帖最后由 lchl0588 于 2010-11-16 22:03 编辑

回复 14# netegg
http://www.autoitx.com/forum.php ... amp;fromuid=7648431

不过话说回来“GUICtrlSetState ”这个函数来判断的话,有点............
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 20:10 , Processed in 0.097666 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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