ฟอรั่ม 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

    ใช้งาน Autoit ในอีก User Account ของ Window

    Quixotic
    Quixotic
    PSsix Member High Class
    PSsix Member High Class


    PSsix Program Coder
    จำนวนข้อความ : 91
    ความนิยม : 1
    เข้าร่วมเมื่อ : 29/03/2011

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by Quixotic 05/12/11, 10:00 pm

    คือผมใช้ Win7 32bit

    ผมลองสร้าง User Account ขึ้นมาอีกตัวนึง ประเภท Admin

    แล้วไปลองสั่งรันสคริปดู เปิด ScITE แบบ Admin และโปรแกรมเป้าหมายแบบ Admin เหมือนกัน

    แต่ปัญหาของผมคือ ฟังชั่นมันทำงานไม่ครบอ่ะครับ

    อย่างเช่น

    Winactive ....

    ControlClick .....

    ControlSend ........

    ControlSend ...... //บางทีตรงนี้ไม่ทำงาน

    ControlCick .......

    มันจะเป็นประมาณนั้นอ่ะครับ

    เลยอยากทราบว่าต้องทำยังไงถึงจะให้ Autoit ทำงานในอีก user สมบูรณ์แบบครับ em228
    POS
    POS
    PSsix
    PSsix


    ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window  Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty Re: ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by POS 06/12/11, 08:28 am

    นำสคริปต์ด้านล่างนี้ไปทดสอบดูว่าส่งข้อความได้หรือไม่


    Code:
    Local $sUserName = "xxxx" ;ชื่อแอ็คเคาน์
    Local $sPassword = "xxxx" ;รหัส

    RunAs($sUserName, @ComputerName, $sPassword, 0, "C:\Windows\system32\calc.exe", @SystemDir)
    Sleep(1000)

    $hWnd ="Calculator"
    $hWnd = WinGetHandle($hWnd)
    $ss =ControlSend($hWnd,"","","2")
    ConsoleWrite('1 ส่งได้  0 ส่งไม่ได้  =' & $ss & @crlf )


    และลองตั้งค่าให้ Filter Keys ให้ทำงาน

    [You must be registered and logged in to see this image.]

    Quixotic
    Quixotic
    PSsix Member High Class
    PSsix Member High Class


    PSsix Program Coder
    จำนวนข้อความ : 91
    ความนิยม : 1
    เข้าร่วมเมื่อ : 29/03/2011

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty Re: ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by Quixotic 06/12/11, 09:52 pm

    ผลการทดลองออกมาเป็น 1 ครับแสดงว่ารันได้ ^_^

    แต่ว่า เลข 2 ที่มันส่งไปนั้นมันก็ไปโผล่อยู่ใน ScITE ที่เปิดแก้ไขอยู่อ่ะครับ แบบนี้มันปกติไหมอ่ะครับ - -"

    แล้วการเปิด Filter Key มันมีผลไรต่อ Autoit หรอครับ

    แต่ผมชอบเสียงตอนพิมอ่ะครับที่ดัง ป๊อกแป๊กป๊อกแป๊ก มันหูดี อิอิ

    มีวิธีทำให้มันมีแต่เสียงแต่เอาระบบกันอุบัติมือออกไหมอ่ะครับ -0-


    [ เพิ่มเติมซักนิส ] ...

    สคริปที่ให้รันแล้วก็การเปิด Filter Key นั้นให้ทำใน Account Admin หรือ ที่สร้างใหม่อ่ะครับ
    POS
    POS
    PSsix
    PSsix


    ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window  Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty Re: ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by POS 07/12/11, 10:10 am

    ตามปกติมันก็ต้องส่งเข้าไปกดที่โปรแกรมเครื่องคิดเลขครับ

    Filter Key เป็นฟีเจอร์สำหรับป้องกันเด็กหรือคนแก่ที่เพิ่งเริ่มหัดคอมกดแช่ ตามปกติถ้ากดปุ่มแช่ตัวหนังสือจะออกมาจำนวนมาก แต่ถ้าใช้ Filter Key จะจำกัดที่ 0.5 วิ ต่อหนึ่งตัวในการกดแช่ (ตั้งค่าเวลาได้ โดยดับเบิลคลิกที่ไอคอนรูปนาฬิกาตรง system tray)

    Quixotic
    Quixotic
    PSsix Member High Class
    PSsix Member High Class


    PSsix Program Coder
    จำนวนข้อความ : 91
    ความนิยม : 1
    เข้าร่วมเมื่อ : 29/03/2011

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty Re: ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by Quixotic 07/12/11, 02:01 pm

    เอ่อ...แล้วมีวิธีทำให้มันเป็นปกติไหมอ่ะครับ >_<
    POS
    POS
    PSsix
    PSsix


    ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window  Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty Re: ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by POS 08/12/11, 06:23 am

    ทำให้กลับมาเป็นปกติก็เอาเครื่องหมายถูกที่ตัวเลือก Turn on Filter Key ออกครับ (ทำเหมือนในรูปด้านบน)
    Quixotic
    Quixotic
    PSsix Member High Class
    PSsix Member High Class


    PSsix Program Coder
    จำนวนข้อความ : 91
    ความนิยม : 1
    เข้าร่วมเมื่อ : 29/03/2011

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty Re: ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by Quixotic 09/12/11, 09:16 pm

    คือผมหมายถึงทำให้สคริปมันส่งค่าเข้าเครื่องคิดเลขตามที่เรากำหนดไว้อ่ะครับ >_<

    ขอเสียบอีกคำถามนะครับ คือ ....

    จะทำยังไงให้ฟังชั่น ProcessClose หรืออื่นๆ มันทำงานเฉพาะใน Account ของ window ที่เราเปิดโปรแกรมไว้อ่ะครับ

    คือผมไปเปิดโปรแกรมไว้ในอีกแอคเค้านึง แล้วก็ กลับมาแอคเค้าแอดมินที่ใช้ปกติ

    แต่ปรากฏว่ามันมีเศษเสี้ยวการทำงานของสคริปโผล่มาหลอนด้วยอ่ะครับ

    ผมสั่งให้สคริปที่รันไว้ในอีกแอคเค้ามันปิด IE ไว้ โดยใช้ ProcessClose

    พอมันทำงาน มันก็มาปิดในแอคเค้าผมด้วยซะงั้นเลยอ่ะครับ

    อาการแบบนี้มีทางแก้ไหมครับ

    หรือประมาณว่าเชค User ของ Process ID แล้วค่อยปิดงี้ก่อนอ่ะครับ
    POS
    POS
    PSsix
    PSsix


    ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window  Empty ใช้งาน Autoit ในอีก User Account ของ Window  Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty Re: ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by POS 10/12/11, 07:41 am

    ตามตัวอย่างสคริปต์ที่ให้ไป ผมสามารถส่งค่าคีย์เลข 2 เข้าไปยังโปรแกรมเครื่องคิดเลขได้ตามปกติ (ไม่ได้ตั้ง Filter Key ให้ทำงาน)

    สำหรับสคริปต์เช็ค username ใช้สคริปต์ด้านล่างนี้ครับ เปลี่ยนชื่อโปรแกรมที่ต้องการตรวจเช็ค และชื่อusername ที่ต้องการเช็ค

    Code:
    $listacc = listuser("iexplore.exe") ;ใส่ชื่อโปรแกรม

     if IsArray($listacc) then
    for $i =1 to $listacc[0]
       $dv = StringSplit($listacc[$i], "|")
       ConsoleWrite('pid  ' & $dv[1] & @crlf & 'username ' & $dv[2]  & @crlf)
       if  $dv[2]  = "xxxxxxx" then ProcessClose($dv[1] ) ; ใส่ชื่อ username ที่ต้องการสั่งปิดโปรแกรม
       Next
    EndIf



    Func listuser($Process)
       Local $UserName,  $avProcs,$avProcs[1] = [""], $n = 1
       If StringIsInt($Process) Then $Process = Int($Process)
       $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy, (Debug)}!\\.\root\cimv2")
       If IsObj($oWMI) Then
          If $Process == "" Then
             $colProcs = $oWMI.ExecQuery("select * from win32_process")
          ElseIf IsInt($Process) Then
             $colProcs = $oWMI.ExecQuery("select * from win32_process where ProcessId = " & $Process)
          Else
             $colProcs = $oWMI.ExecQuery("select * from win32_process where Name = '" & $Process & "'")
          EndIf
          If IsObj($colProcs) Then
             If $colProcs.count = 0 Then Return $avProcs
             ReDim $avProcs[$colProcs.count + 1]
             $avProcs[0] = UBound($avProcs) - 1
             For $oProc In $colProcs
                If $oProc.GetOwner($UserName) = 0 Then $avProcs[$n] = $oProc.ProcessId &"|"&$UserName
                $n += 1
             Next
          Else
             SetError(2)
          EndIf
       Else
          SetError(1)
       EndIf
          Return $avProcs
    EndFunc
    Quixotic
    Quixotic
    PSsix Member High Class
    PSsix Member High Class


    PSsix Program Coder
    จำนวนข้อความ : 91
    ความนิยม : 1
    เข้าร่วมเมื่อ : 29/03/2011

    ใช้งาน Autoit ในอีก User Account ของ Window  Empty Re: ใช้งาน Autoit ในอีก User Account ของ Window

    ตั้งหัวข้อ by Quixotic 11/12/11, 03:35 am

    ขอบคุณครับผม

      เวลาขณะนี้ 28/04/24, 02:40 am