VicoTas
Câu hỏi
Phương pebuon_8x
26/04/2013 20:59

Xin chỉ cách viết chương trình tính thời gian chạy của máy tính từ khi bắt đầu bật máy đến khi tắt máy bằng Visual Basic?

Xin chỉ cách viết chương trình tính thời gian chạy của máy tính từ khi bắt đầu bật máy đến khi tắt máy bằng Visual Basic. Hàm API nào có khả năng thực hiện tính năng này?

Danh sách câu trả lời (1)
Chip chip chipchip 26/04/2013 20:59
Một trong các ý tưởng hiện thực chương trình theo yêu cầu của bạn là viết 1 chương trình chạy trong nền Windows (ẩn giao diện), khi bắt đầu chạy thì ghi nhận thời điểm này và khi dừng chương trình thì ghi nhận thời điểm dừng rồi tính hiệu số thời gian giữa 2 thời điểm ghi nhận. Nếu ta khai báo chương trình vừa viết cho Windows chạy tự động mỗi khi boot máy thì thời gian chạy của chương trình cũng chính là thời gian chạy của Windows (vì khi shutdown Windows, chương trình sẽ bị hệ thống yêu cầu dừng). Có nhiều hàm API của Windows phục vụ cho việc lấy thời gian hiện hành, thí dụ như hàm GetSystemTime(), GetLocalTime()... Tuy nhiên nếu lập trình bằng VB thì bạn không cần gọi các hàm API này vì VB đã cung cấp hàm Now() có cùng chức năng. Sau đây là qui trình viết và cài đặt 1 ứng dụng VB ghi nhận thời gian chạy của Windows:

1. Viết ứng dụng VB: chạy môi trường lập trình VB, khi cửa sổ "New Project" hiển thị, hãy ấn button Open để tạo mới 1 project "Standard EXE", project này sẽ tạo ứng dụng VB có 1 form giao diện đơn giản. Bạn không cần vẽ bất kỳ phần tử giao diện nào cả mà chỉ cần chọn menu View.Code để hiển thị cửa sổ code của form rồi nhập đoạn lệnh sau:

Option Explicit

' Khai báo biến lưu thời điểm bắt đầu

Dim StartTime As Date

' Khai báo biến lưu thời điểm kết thúc

Dim StopTime As Date



' Hiện thực thủ tục khởi động ứng dụng

Private Sub Form_Load()

' Lưu thời điểm bắt đầu chạy

StartTime = Now

' ẩn form để không làm phiền người dùng

Form1.Hide

End Sub



' Hiện thực thủ tục kết thúc ứng dụng

Private Sub Form_Unload(Cancel As Integer)

Dim timelog As String

' Lưu thời điểm bắt dừng

StopTime = Now

' Tính thời gian chạy được

timelog = "Windows chạy lúc : " & StartTime & _

", dừng lúc : " & StopTime & _

", chạy được : " & DateDiff("s", StartTime, StopTime) & "giay"

' Mở file chứa các thông báo eventlog

Open "timelog.txt" For Append As #1

' ghi thông báo timelog lên file

Write #1, timelog

' đóng file

Close #1

End Sub

2. Dịch ứng dụng VB ra dạng khả thi *.exe: vào menu File.Make Project1 để yêu cầu dịch ứng dụng VB ra file khả thi. Khi cửa sổ "Make Project" hiện ra, bạn hãy chọn thư mục và tên file chứa kết quả.

3. Khai báo cho Windows chạy ứng dụng tự động mỗi khi boot máy. Việc này có thể được khai báo ở hàng lệnh "load=" hay "run=" của file win.ini (trong thư mục Windows) hay thiết lập 1 key trong registry của Windows. Nếu khai báo trong file win.ini, bạn hãy dùng 1 trình soạn thảo văn bản nào đó (NotePad, WordPad...) mở file win.ini trong thư mục Windows, đưa cursor nhập liệu về phía phải của hàng lệnh "load=" hay "run=" rồi thêm đường dẫn file khả thi vừa xây dựng được trong bước 2. Nếu khai báo trong registry, bạn hãy chọn menu Start.Run rồi nhập regedit để chạy ứng dụng này, hãy dùng chuột để vào key sau "My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run". Lúc này bạn sẽ thấy các tiện ích được chạy tự động khi boot máy đã được khai báo trước đó trong cửa sổ ListControl bên phải. Hãy dời chuột vào ListControl này, ấn phải chuột rồi chọn New.String Value, nhập chuỗi nhận dạng chương trình, thí dụ là "Đếm thời gian chạy Windows" vào cột Name, ấn phải chuột lên chuỗi vừa nhập rồi chọn chức năng Modify. Khi cửa sổ "Edit String" hiển thị, bạn hãy nhập đường dẫn của file chương trình vào textbox "Value data" rồi ấn button OK.

Từ đây trở đi, mỗi lần chạy xong 1 phiên làm việc Windows, chương trình sẽ ghi tiếp 1 hàng thông báo vào file timelog.txt (nằm cùng thư mục với file chương trình khả thi) để ghi nhận thời điểm bắt đầu chạy, thời điểm dừng, số thời gian tính bằng giây mà Windows đã chạy được.
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Lập trình
vietnamconnection Làm thế nào tạo các nút Back và Forward? Có cần sử dụng hàm API không?

Đăng lúc: 20:54 - 26/04/2013 trong Lập trình

Uk Huớng dẫn cho mình cách lập trình asp.net bằng VB?

Đăng lúc: 20:54 - 26/04/2013 trong Lập trình

MrTien Chương trình đồ hoạ Borland C++ 5.01 chạy không được dưới Windows, mặc dù code đúng?

Đăng lúc: 20:54 - 26/04/2013 trong Lập trình

Link Trong Pascal, lập chương trình tính cosin, sau đó tính được tang, dùng hàm arctg để đổi sang góc thì Pascal cho kết quả không phải là độ?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

nophoto Xin hướng dẫn viết các hàm API để chương trình khoá chuột và bàn phím trên Windows?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

nophoto Giới thiệu cho mình các phần mềm hỗ trợ lập trình game??

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Đức Vân Tôi muốn dùng Java để hợp 3 file chứa định dạng của 3 loại màu (Red, Green, Blue) thành 1 file có format là RGB (file ảnh thông thường)?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

nophoto Tôi đang viết chương trình quản lý công nợ sử dụng SQL Server và cần tạo 1 công cụ giống như PivotTable trong Excel, vậy tôi phải làm như thế nào?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Phương Hướng dẫn viết chương trình cho phép người dùng đặt lịch các công việc sẽ được thực hiện khi shutdown Windows (tương tự như mục Startup)?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

nophoto Hướng dẫn viết chương trình làm toán với những phép tính nhân chia cộng trừ..., có những phần tính điểm và thời gian khi kết thúc?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Củ Chuối Hướng dẫn cách tạo chương trình C# đọc một số file như *.pdf, *.doc, text.?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Đức Vân Xin hướng dẫn lập trình macro để chèn thông tin ngày giờ hiện hành chính xác đến 1/100 giây.?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Manh Linh Xin hướng dẫn cách tạo thủ tục (hoặc macro) xuất dữ liệu từ 1 Control Box trên form trong Access 2000 ra những cell qui định trong file Excell?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Uk Gần đây tôi nghe nói nhiều về vấn đề bản quyền, càng ngày càng có nhiều công ty chuyển sang dùng Java và các phần mềm mã nguồn mở? Tại sao?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

nophoto Trong VB.Net, làm thế nào để hiển thị chế độ màn hình từ 640-480 sang 800-600 khi thực hiện Form_load?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

nophoto Xin hướng dẫn cách thực hiện một chương trình đồ họa đơn giản (như AutoCAD) ?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Hoài Nam (Nam Tước) Xin hướng dẫn lập một chương trình có giao diện SDI hoặc MDI tương tác với người dùng để tính toán giống như Maple hay Mathematic?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

nophoto Xin hỏi có thể xem mã nguồn của các lệnh trong DOS ở đâu. Chương trình copy do tôi viết chạy rất chậm so với lệnh copy của DOS, ko biết nguyên nhân?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Ngô Minh Tùng Hai hàm biosdisk() và absread() trong ngôn ngữ C có đọc được đĩa cứng trực tiếp không (đọc sector)?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Chip chip Xin giải thích về Heap và Stack trong C#, cơ chế làm việc như thế nào?

Đăng lúc: 20:53 - 26/04/2013 trong Lập trình

Rao vặt Siêu Vip