ฟอรั่ม PSsix

Would you like to react to this message? Create an account in a few clicks or log in to continue.

ฟอรั่มของบล็อก http://pssix.blogspot.com


2 posters

    ShellExecute

    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    ShellExecute Empty ShellExecute

    ตั้งหัวข้อ by Monaliza 13/06/11, 09:17 pm

    ผมทำโปรแกรมตัวหนึ่งเอาไว้ รันโปรแกรมอื่น
    code
    While 1
    $file = InputBox("Run","Name Process","","", 250, 120)
    If @error Then
    Exit
    Else
    If $file <> "" Then
    ShellExecute($file)
    Exit
    Else
    MsgBox(0,"error","Name Process")
    EndIf
    EndIf
    sleep(10)
    WEnd
    เวลาใช้งานไม่มีปัญหาเช่น สั่งรัน
    calc.exe
    notepad.exe
    เมื่อคำสั่งทำงานเสร็จโปรแกรมจะปิดทันที
    แต่ถ้าสั่งรันไปเครื่องอื่นเช่น \\10.138.xx.xx
    ได้แล้ว
    แต่ตัว process ยังทำงานอยู่เลย
    ไม่รู้เหมือนกัน
    อาจต้องเปลี่ยนเป็น ShellExecuteWrite
    หรือต้องใส่คำสั่ง
    $x1 = @ScriptName
    If ProcessExists($x1)
    ProcessClose($x1)
    EndIf
    เพิ่มลงไป
    ขอคำแนะนำหน่อยครับ
    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    ShellExecute Empty Re: ShellExecute

    ตั้งหัวข้อ by Monaliza 14/06/11, 01:32 am

    แก้ปัญหาได้แล้วครับ

    code
    While 1
    $file = InputBox("Run","Name Process","","", 250, 120)
    If @error Then
    Exit
    Else
    If $file <> "" Then
    ShellExecute($file)
    If Not WinExists("Run") Then
    Do
    ProcessClose(@ScriptName)
    Until ProcessExists(@Script) = 0
    EndIf
    Else
    MsgBox(0,"error","Name Process")
    EndIf
    EndIf
    sleep(10)
    WEnd

    หรือ If Not WinExists("Run") Then
    Exit
    EndIf
    หรือ If Not ProcessExists(@ScriptName) Then
    Exit
    EndIf


    คือตั้งใจจะทำเลียนแบบโปรแกรม RUN ของ windows นะครับ
    ต่อไปจะลองทำเป็นแบบ GUI ดู
    newsak2005
    newsak2005
    ระงับสมาชิก
    ระงับสมาชิก


    ShellExecute Empty
    จำนวนข้อความ : 115
    ความนิยม : 0
    เข้าร่วมเมื่อ : 08/05/2011

    ShellExecute Empty Re: ShellExecute

    ตั้งหัวข้อ by newsak2005 14/06/11, 01:32 am

    แต่ถ้าสั่งรันไปเครื่องอื่นเช่น \\10.138.xx.xx
    ได้แล้ว
    แต่ตัว process ยังทำงานอยู่เลย
    ไม่รู้เหมือนกัน

    ลองใช้คำสั่ง Loop ProcessExists() ดูครับ หรือไม่ก็ทดลองสั่งรันโปรแกรมทาง Dos ดู



    newsak2005
    newsak2005
    ระงับสมาชิก
    ระงับสมาชิก


    ShellExecute Empty
    จำนวนข้อความ : 115
    ความนิยม : 0
    เข้าร่วมเมื่อ : 08/05/2011

    ShellExecute Empty Re: ShellExecute

    ตั้งหัวข้อ by newsak2005 14/06/11, 01:45 am

    ทฤษฎี 'Process' ในคำสั่ง AutoIt มีอยู่ว่า..

    ถ้าโค๊ดใดๆ? รันแล้วมีข้อผิดพลาดบางประการเกิดขึ้น

    จะทำให้ AutoIt.exe ยังคงทำงานค้างอยู่

    เมื่อแก้ไขคำสั่งในโค๊ดให้ถูกต้อง ปัญหาต่างๆก็หมดไปเอง.

    newsak2005
    newsak2005
    ระงับสมาชิก
    ระงับสมาชิก


    ShellExecute Empty
    จำนวนข้อความ : 115
    ความนิยม : 0
    เข้าร่วมเมื่อ : 08/05/2011

    ShellExecute Empty Re: ShellExecute

    ตั้งหัวข้อ by newsak2005 14/06/11, 05:22 am

    เห็นท่าน Monalisa ชอบ ทดลองเขียนโปรแกรมอะไรแปลกๆ

    ก็เลยเขียนโปรแกรมนี้ไว้ให้ท่านลองนำไปศึกษาดู

    เป็นโปรแกรมตรวจจับไวรัส autorun.inf แบบอัตโนมัติ

    ถ้่าท่านรันโปรแกรมนี้ และพิมพ์ชื่อไวรัส autorun.inf ลงใน InputBox

    ถ้ามีไวรัสชนิดนี้อยู่ในเครื่องท่าน โปรแกรมจะแจ้งให้ทราบว่ามันอยู่ที่ไหน?

    Code:
    #NoTrayIcon
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

    Opt("GUIOnEventMode", 1)

    Global $guititle = 'Auto Find Virus'
    $hForm = GUICreate($guititle, 235, 104, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close", $hForm)
    $Input1 = GUICtrlCreateInput("", 8, 24, 217, 21, _
    BitOR($ES_AUTOHSCROLL,$WS_BORDER))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label1 = GUICtrlCreateLabel("Enter:Virus name (*.inf)", 8, 7, 150, 17)
    $Button1 = GUICtrlCreateButton("OK", 16, 64, 75, 25, $WS_GROUP)
    GUICtrlSetOnEvent($Button1, "_Enter")
    $Button2 = GUICtrlCreateButton("Cancel", 144, 64, 75, 25, $WS_GROUP)
    GUICtrlSetOnEvent($Button2, "_Stop")
    GUISetState(@SW_SHOW)

    While 1
        Local $pos = WinGetPos($guititle)
       $homedrive = @HomeDrive
        $windir = @WindowsDir
       $sys32dir = @SystemDir
       If GUICtrlRead($Input1) = '' Then
           ContinueLoop
       ElseIf FileExists($homedrive&'\'&GUICtrlRead($Input1))Then
          ToolTip("Virus processing..in "&$homedrive, $pos[0]+55, $pos[1]+73, "")
        ElseIf FileExists($windir&'\'&GUICtrlRead($Input1))Then
           ToolTip("Virus processing..in "&$windir, $pos[0]+55, $pos[1]+73, "")
       ElseIf FileExists($sys32dir&'\'&GUICtrlRead($Input1))Then
           ToolTip("Virus processing..in "&$sys32dir, $pos[0]+55, $pos[1]+73, "")
       Else
           ToolTip("")
        EndIf
        Sleep(10)
    WEnd

    Func _Enter()
        MsgBox(64, "Auto Find Virus", "Create by:sak2005", 3, $hForm)
    EndFunc

    Func _Stop()
        Exit
    EndFunc

    Func _Close()
       Exit
    EndFunc









    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    ShellExecute Empty Re: ShellExecute

    ตั้งหัวข้อ by Monaliza 14/06/11, 09:17 pm

    [b]If NOT FileExists(@HomeDrive&"\ RECYCLER") Then
    DirCreate(@HomeDrive&"\RECYCLER")
    FileSetAttrib(@HomeDrive&"\RECYCLER","SH")
    EndIf
    If Not FileExists(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004") Then
    DirCreate(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004")
    EndIf
    If Not FileExists(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004\Desktop.ini")Then
    $file = FileOpen(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004\Desktop.ini", 2)
    FileWrite($file,"[.ShellClassInfo]"&@CRLF&"IconFile = %SystemRoot%\System32\Shell32.dll"&@CRLF&"Iconindex = -32")
    EndIf

    FileSetAttrib(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004","SH")
    FileSetAttrib(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004\Desktop.ini","SH")
    FileClose($file)
    ผลของScriptนี้
    1.สร้างโฟเดอร์ RECYCLER ในไดร์ที่ติดตั้ง windows
    2.สร้างโฟเดอร์ S-1-5-21-8956231594-1597532684-4462895144-1004 อยู่ในโฟเดอร์ RECYCLER ที่สร้างขึ้น
    3.สร้างไฟล์ Desktop.ini เอาไว้เปลี่ยนไอคอนของ โฟเดอร์ S-1-5-21-8956231594-1597532684-4462895144-1004 ที่สร้างขึ้นเป็นรูป ไอคอน ถังขยะ ( เลือกใช้ไอคอน = -32 ใน shell32.dll รูปถังขยะ)

    เดียวลองเอาไปดัดแปลงเป็นโปรแกรม เปลี่ยนไอคอนโฟเดอร์
    newsak2005
    newsak2005
    ระงับสมาชิก
    ระงับสมาชิก


    ShellExecute Empty
    จำนวนข้อความ : 115
    ความนิยม : 0
    เข้าร่วมเมื่อ : 08/05/2011

    ShellExecute Empty Re: ShellExecute

    ตั้งหัวข้อ by newsak2005 16/06/11, 12:36 am

    Monaliza พิมพ์ว่า:[b]If NOT FileExists(@HomeDrive&"\ RECYCLER") Then
    DirCreate(@HomeDrive&"\RECYCLER")
    FileSetAttrib(@HomeDrive&"\RECYCLER","SH")
    EndIf
    If Not FileExists(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004") Then
    DirCreate(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004")
    EndIf
    If Not FileExists(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004\Desktop.ini")Then
    $file = FileOpen(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004\Desktop.ini", 2)
    FileWrite($file,"[.ShellClassInfo]"&@CRLF&"IconFile = %SystemRoot%\System32\Shell32.dll"&@CRLF&"Iconindex = -32")
    EndIf

    FileSetAttrib(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004","SH")
    FileSetAttrib(@HomeDrive&"\RECYCLER\S-1-5-21-8956231594-1597532684-4462895144-1004\Desktop.ini","SH")
    FileClose($file)
    ผลของScriptนี้
    1.สร้างโฟเดอร์ RECYCLER ในไดร์ที่ติดตั้ง windows
    2.สร้างโฟเดอร์ S-1-5-21-8956231594-1597532684-4462895144-1004 อยู่ในโฟเดอร์ RECYCLER ที่สร้างขึ้น
    3.สร้างไฟล์ Desktop.ini เอาไว้เปลี่ยนไอคอนของ โฟเดอร์ S-1-5-21-8956231594-1597532684-4462895144-1004 ที่สร้างขึ้นเป็นรูป ไอคอน ถังขยะ ( เลือกใช้ไอคอน = -32 ใน shell32.dll รูปถังขยะ)

    เดียวลองเอาไปดัดแปลงเป็นโปรแกรม เปลี่ยนไอคอนโฟเดอร์

    ดีครับสนันสนุนด้วย จะได้มีไอเดียเกิดขึ้น เป็นการพัฒนาความคิดสร้างสรรค์ของตัวเองไปในตัว.

      เวลาขณะนี้ 02/05/24, 06:48 pm