Trang 1 / 3 123 LastLast
Hiển thị kết quả từ 1 đến 10 / 23
  1. #1
    Tham gia
    15-11-2002
    Bài viết
    228
    Like
    0
    Thanked 0 Times in 0 Posts

    [Q] Kiểm soát thời gian sử dụng máy

    Chào các bạn !
    Mình đang tìm cách kiểm soát thời gian sử dụng máy của thằng em mình.
    Mình muốn biết 1 ngày nó sử dụng máy tính bao nhiêu giờ.
    Các bạn cho hỏi có cách nào biết được OS Start và Shutdown lúc nào không.
    Mình sử dụng VB để lập trình.
    Đầu tiên cũng định đặt 1 CT trong menu StartUp nhưng lại sợ
    có lúc vô ý lại xóa mất shortcut này.
    Í quên mất :
    Có cách nào chặn được sự kiện Shutdown của HĐH để mình làm
    vài thứ rùi hãy Shutdown không nhỉ.
    Quote Quote

  2. #2
    Tham gia
    15-09-2002
    Location
    Tp.Hcm
    Bài viết
    1,171
    Like
    0
    Thanked 2 Times in 2 Posts
    chặn sự kiện shutdown bạn chặn event querryunload của form là xong, việc xem thời gian sử dụng thì cho CT vào registry, hide nó ( kể cả nhất ctrl+alt+del ), muốn biết rõ hơn về thằng em nữa thì hook luôn.

  3. #3
    Tham gia
    10-09-2002
    Location
    The Hell
    Bài viết
    636
    Like
    0
    Thanked 1 Time in 1 Post
    Chà theo dõi thằng em kĩ quá nhỉ.
    Ngăn ShutDown trong sư kiện QueryUnload không tốt đâu. Vì nếu sử dụng WinXP thì coi như vô tác dụng. Cách tốt nhất là SubClass. Cách này có thể làm cho thằng m khỏi tắt máy luôn..hê..hê..trừ phi nhấn nút Power.
    Phần còn lại thì như anh Wall đã nói rồi đấy.

  4. #4
    Tham gia
    05-09-2002
    Location
    Cần Đước - Long An
    Bài viết
    1,547
    Like
    0
    Thanked 5 Times in 5 Posts
    bạn viết làm chi cho mệt vậy. vừa tốn công, vửa không hay. Bạn cài một số soft như 007 Starts, WinBoot,... tất cả đều có trong site của Lê Hoàn. 007 có thể chụp ảnh màn hình, theo dõi, lập báo cáo, khoá này kia,... độc chiêu lắm

  5. #5
    Tham gia
    26-11-2002
    Location
    hcm
    Bài viết
    267
    Like
    0
    Thanked 1 Time in 1 Post
    dtt_vn nói đúng lắm. Cần phải xem người dùng có nhu cầu như thế nào thì mới đưa phương án tương ứng. Người ta chỉ cần chương trình để quản lý ... cậu em thôi, chứ không cần phải biết là viết như thế nào.

  6. #6
    Tham gia
    15-11-2002
    Bài viết
    228
    Like
    0
    Thanked 0 Times in 0 Posts
    Gửi Nicky
    Bạn có thể nói rõ hơnvề SubClass không
    Gửi Kem_Wall huynh
    Theo em biết thì Hide 1 app kể cả khi sử dụng Ctrl+Alt+Del
    chỉ có tác dụng trong Win9x thôi mà.
    Anh nói : "muốn biết rõ hơn về thằng em nữa thì hook luôn. "
    Hook là gì vậy anh ?

    Đặt chương trình khởi động cùng OS chỉ giải quyết vấn đề được
    với những máy mình chủ động.
    Có 1 lần chọc ngoáy vào phần nào đó của WIN em nhìn thấy
    dòng báo thời điểm khởi động và thời gian HĐH chạy.
    Có cách nào biết được những thông tin ấy khi ta ngồi vào 1 PC bất kỳ không huynh(em sử dụng VB).

  7. #7
    Tham gia
    07-10-2002
    Location
    Dragon mountain
    Bài viết
    246
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn lập một chương trình VB đơn giản thôi, có thể như sau:
    -Hide Form, ẩn trong phần Application của Cltr+Alt+Del(còn trong Process thì không ẩn được). Đặt tên Application là gì đó nhưng không mang tính gợi nhớ để không ai biết lả gì (như:Systen,Taskbas...)
    -Ghi vào khoá HKCU\Software\Windows\current Version\Run, để mỗi lần WIn khởi động thì gọi nó.
    -Trong Form_Load thì cho đồng hồ chạy.
    -Khi Form_Unload thì tắt đồng hồ rồi ghi ra file hay Registry.

  8. #8
    Tham gia
    05-09-2002
    Location
    Cần Đước - Long An
    Bài viết
    1,547
    Like
    0
    Thanked 5 Times in 5 Posts
    ông lighting_dragon hiểu sai ý của QG muốn nói rồi. ông làm kểiuj đó không ổn đâu.
    muốn ần thì ẩn form chính trước, sau đó gọi lện app.taskvisible = boolean trong một module. thế là ẩn mất iêu, không sợ phát hiện
    bạn có vào site của WR để tìm những tài liệu căn bản về hook. nói trắng ra, hook là phương pháp ta kiểm soát và thao tác với đối tược thông qua một con số do OS cấp phát cho đối tượng lúc nó 9ược LoAd

  9. #9
    Tham gia
    16-07-2002
    Location
    Ha Noi
    Bài viết
    1,218
    Like
    0
    Thanked 0 Times in 0 Posts
    Hi QuynhGiao!
    Tất cả các ứng dụng chạy trong môi trường Windows đều hoạt động dựa trên hệ thống message. Mỗi khi có một hành động nào đó xảy ra (thời gian thay đổi, user di chuột, gõ phím....) thì Windows sẽ tạo ra các message và gửi nó đến các window (bao gồm cả các control trong VB...).
    Nhằm mang lại thuận tiện và sự dễ dàng nhất cho lập trình viên, VB tự động xử lý tất cả các message gửi đến ứng dụng và từ các message đó nó tạo ra các event cho lập trình viên sử dụng. Không may là không phải message nào cũng được tạo ra một event tương ứng. Vì vậy, lập trình viên bị hạn chế rất nhiều.
    Subclassing (có từ VB5.0) cho các VBprogrammer một cơ hội để "vượt qua rào cản đó". Với kĩ thuật này, chúng ta có thể biết khi nào một message được gửi đến một window (control) và vì vậy, chúng ta có thể đón nhận, xử lý và đưa ra một kết quả theo ý mình.
    Một ví dụ: menu mà VB cung cấp chỉ đơn giản là text. Thay vì vậy, nếu ta chặn message WM_PAINT (được gửi đến nếu menu cần được vẽ lại) thì ta sẽ có cơ hội thay đổi lại hình thức menu, giống như menu trong bộ OfficeXP chẳng hạn (tất nhiên, đấy là nói về lý thuyết còn thực tế thì để làm hoàn chỉnh thì sẽ tốn rất nhiều công sức).
    Thi hành kĩ thuật này không quá khó khăn, các bước như sau:
    - Khai báo:
    Code:
    Declare Function SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" (ByVal hwnd As Long, _
    Byval nIndex As Long, ByVal dwNewLong As Long) As Long
    - Tạo một WindowProcedure mới:
    Code:
    Function MyWndProc(ByVal hWnd As Long, _
    ByVal uMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
      'gọi thủ tục window gốc
      MyProc = CallWindowProc(oldAddress, hWnd, _
      uMsg, wParam, lParam)
      'phát thiện cần phải vẽ lại menu
      If uMsg = WM_PAINT Then
        'xử lý
      End If
    End Function
    
    hay
    
    Function MyWndProc(ByVal hWnd As Long, _
    ByVal uMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
      'phát thiện cần phải vẽ lại menu
      If uMsg = WM_PAINT Then
        'xử lý
      End If
      'gọi thủ tục window gốc
      MyProc = CallWindowProc(oldAddress, hWnd, _
      uMsg, wParam, lParam)
    End Function
    - Khởi tạo
    Code:
    oldAddress = SetWindowLong(hWnd, _
    GWL_WNDPROC, AddressOf MyWindowProc)
    'lưu ý hWnd chính là handle của window (control) 
    'được subclassing
    - Sau khi kết thúc chương trình, nhớ phục hồi lại nếu không thì chương trình bị crash là điều tất yếu
    Code:
    SetWindowLong hWnd, GWL_WNDPROC, oldAddress
    Hook cũng tương tự như Subclassing nhưng nó khác với Subclassing ở chỗ nó không hướng đến một window (control) cụ thể nào. Mỗi khi có một loại message nào đó được tạo ra thì thủ tục mà ta đã gài vào chuỗi mắt xích (hook chain) sẽ được kích hoạt trước khi message đó được hướng đến một window(control) cụ thể. Có 14 loại hook khác nhau nhưng phần lớn không thể sử dụng trong VB (do nó không thể tạo ra các DLL), số còn lại cũng bị sử dụng hạn chế (do không thể hook toàn cục trong VB được).
    Một số hook hay được sử dụng: WH_KEYBOARD, WH_MOUSE
    Thi hành hooking như sau:
    - Khai báo:
    Code:
    Public Declare Function SetWindowsHookEx Lib "user32" _
    Alias "SetWindowsHookExA" (ByVal idHook As Long, _
    ByVal lpfn As Long, ByVal hmod As Long, _
    ByVal dwThreadId As Long) As Long
    
    Public Declare Function CallNextHookEx Lib "user32" _
    Alias "CallNextHookEx" (ByVal hHook As Long, _
    ByVal ncode As Long, ByVal wParam As Long, _
    lParam As Any) As Long
    
    Public Declare Function UnhookWindowsHookEx Lib "user32" _
    Alias "UnhookWindowsHookEx" (ByVal hHook As Long) As Long
    - Tạo một procedure để xử lý
    Code:
    Function MyMsgProc(ByVal lMsg As Long, _
    MyVal wParam As Long, ByVal lParam As Long) As Long
      If lMsg =  HCBT_SETFOCUS Then
        'Xử lý
      End If
      MyMsgProc = CallNextHookEx ( _
        hHook, lMsg, wParam, lParam)
    End Function
    - Thiết lập
    Code:
    hHook = SetWindowsHookEx(IdHook, _
    AddressOf MyMsgProc, hInst, hThread)
    - Loại bỏ khi kết thúc:
    Code:
    Call UnHookWindowsHookEx(hHook)
    Có thể tham khảo thêm hai bài viết sau:
    http://www.diendantinhoc.com/showthr...threadid=11032 (Subclassing)
    http://www.diendantinhoc.com/showthr...&threadid=7749 (Hooking)

  10. #10
    Tham gia
    16-07-2002
    Location
    Ha Noi
    Bài viết
    1,218
    Like
    0
    Thanked 0 Times in 0 Posts
    À, làm gì mà kiểm soát em dữ vậy? Ghê quá. May mà không phải là em QG

Trang 1 / 3 123 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •