木头人 发表于 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没有复制进去。
只想知道这个语句有没有问题。

h20040606 发表于 2010-11-16 17:00:11

文件必须存在,并且存在所需要写的行,才能成功

木头人 发表于 2010-11-16 17:11:37

文件及文本行都存在,但是就是不行。。。

netegg 发表于 2010-11-16 17:19:49

"..... a.bat文本中的第一行"?
不是要写abc.bat?

木头人 发表于 2010-11-16 18:20:16

回复 6# netegg
举例的,写哪个都可以。

131738 发表于 2010-11-16 18:45:00

回复 7# 木头人


没有   FileOpen 语句吧。。。。。

afan 发表于 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

131738 发表于 2010-11-16 18:51:34

回复 1# 木头人

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


GUICtrlRead($CKFIXMBR) =$GUI_CHECKED 如何。。。

131738 发表于 2010-11-16 19:00:23


afan 发表于 2010-11-16 18:48 http://www.autoitx.com/images/common/back.gif

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

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

#include <GUIConstantsEx.au3>

afan 发表于 2010-11-16 19:07:18

回复 11# 131738


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

在GUIConstantsEx.au3中有定义:
Global Const $GUI_CHECKED = 1
Global Const $GUI_UNCHECKED = 4

lchl0588 发表于 2010-11-16 19:48:20

回复 11# 131738 老兄呀,这图中的解释误人不浅……………………

netegg 发表于 2010-11-16 19:52:02

回复 13# lchl0588
那倒也不是
如果是不这么用
而是用
if bitor(guictrlread($check), $gui_check) then
就对了

lchl0588 发表于 2010-11-16 19:53:59

本帖最后由 lchl0588 于 2010-11-16 22:03 编辑

回复 14# netegg
http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=19737&pid=233514&fromuid=7648431

不过话说回来“GUICtrlSetState ”这个函数来判断的话,有点............
页: [1] 2
查看完整版本: 这个语句是否存在问题,为何不能正常写入文本呢?