La Minh Trường

Một phần của tài liệu Quan điểm lập trình (Trang 39 - 40)

I. QUÁ TRÌNH THIẾT KẾ HỆ THỐNG SỐ.

La Minh Trường

Lợi dụng đặc điểm này ta có thể thay đổi các status một các dễ dàng bằng cách ghi các status vào registry một cách tự động. Sau đây tôi sẽ trình bày đoạn code minh họa việc change status một cách tự động bằng ngôn ngữ VB

Option Explicit

‘ Mot so khai bao can thiet

Public Declare Function SendMessage Lib “user32”

Alias “SendMessageA” _

(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Declare Function FindWindow Lib “user32”

Alias “FindWindowA” _

(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Declare Function RegOpenKey Lib

“advapi32.dll” Alias “RegOpenKeyA” _

(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegCloseKey Lib

“advapi32.dll” _

(ByVal hKey As Long) As Long

Public Declare Function RegCreateKey Lib

“advapi32.dll” Alias “RegCreateKeyA” _

(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegDeleteKey Lib

“advapi32.dll” Alias “RegDeleteKeyA” _

(ByVal hKey As Long, ByVal lpSubKey As String) As Long

Public Declare Function RegDeleteValue Lib

“advapi32.dll” Alias “RegDeleteValueA” _(ByVal hKey As Long, ByVal lpValueName As String) As Long

Public Declare Function RegQueryValueEx Lib

“advapi32.dll” Alias “RegQueryValueExA” _(ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long

Public Declare Function RegSetValueEx Lib

“advapi32.dll” Alias “RegSetValueExA” _

(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Public Const HKEY_CURRENT_USER =

&H80000001

Public Const REG_SZ = 1 Public hCurKey As Long

‘ Change status

Sub Y_SetStatus(blah As String) Dim It As Long

It = FindWindow(“yahoobuddymain”, vbNullString)

SaveSettingString HKEY_CURRENT_USER, + “\Custom Msgs”, 1, blah ‘luu thong diep vao Registry

SendMessage It, WM_COMMAND, 388, 1&

End Sub

‘ Kiem tra xem nguoi nao la nguoi dang nhap cuoi cung

Function Y_GetLastLogin()

Y_GetLastLogin = GetSettingString(HKEY_ CURRENT_USER, “Software\Yahoo\Pager”, “Yahoo! User ID”, “Yahoo! ID”) ‘lay thong diep tu registry

End Function

‘ Doc gia tri tu registry de lay thong tin nguoi dang nhap cuoi cung

Public Function GetSettingString(hKey As Long,

strPath As String, strValue As String, Default As String) As String

Dim lngValueType As Long Dim strBuffer As String

Dim lngDataBufferSize As Long Dim intZeroPos As Integer

If Not IsEmpty(Default) Then GetSettingString = Default Else

GetSettingString = “” End If

RegOpenKey hKey, strPath, hCurKey RegQueryValueEx hCurKey, strValue, 0&, lngValueType, ByVal 0&, lngDataBufferSize If lngValueType = REG_SZ Then

strBuffer = String(lngDataBufferSize, “ “) RegQueryValueEx hCurKey, strValue, 0&, 0&, ByVal strBuffer, lngDataBufferSize

intZeroPos = InStr(strBuffer, Chr$(0)) If intZeroPos > 0 Then GetSettingString = Left$(strBuffer, intZeroPos - 1) Else GetSettingString = strBuffer End If End If RegCloseKey hCurKey End Function

‘ Luu registry, giup ban thay doi cac status

Public Sub SaveSettingString(hKey As Long, strPath

As String, strValue As String, strData As String) RegCreateKey hKey, strPath, hCurKey

RegSetValueEx hCurKey, strValue, 0, REG_SZ, ByVal strData, Len(strData)

RegCloseKey hCurKey

End Sub

Có lẽ thủ thuật này hơi khác các thủ thuật khác ở chỗ là nó không dễ thực hiện, vì để thực hiện được bạn cần có kiến thức lập trình. Tuy nhiên nếu bạn muốn sử dụng thì có thể liên hệ với toàn soạn để chép chương trình hoàn chỉnh. Chương trình này tương đối dễ sử dụng. Sau khi download về, bạn hãy giải nén vào một thư mục nào đấy, trong thư mục vừa giải nén, bạn sẽ thấ ộ à status.txt và mộ

để chạy chương trình chính, bạn sẽ thay đổi nội dung để có được các status theo ý mình bằng cách sau. Ví dụ bạn muốn status bạn có 2 câu là A và B thì bạn sẽ sử ư sau:

• Hàng 1: 2 . Hàng 1 chỉ số status bạn có

• Hàng 2: A. Các hàng từ 2 trở đi là các status bạn điền vào

• Hàng 3: B

Chú ý khi nhậ ạn không nên nhập hàng trắng, nếu không chương trình sẽ bị lỗi. Theo mặc định thì chương trình sẽ tự động change status sau mỗi 10s (Đây là khoảng thời gian tương đối ổn, nếu khoảng thời gian giữa 2 lần thay đổi quá ngắn thì chương trình sẽ phản tác dụng, có nghĩa là chỉ có bạn thấy được sự thay đổi này còn bạn của bạn thì không : D) và sẽ lặp lại cho đến khi bạn tắt chương trình.

công làm nên. Như đã nói ở trên, URL sẽ được gửi tới chương trình của bạn dưới dạng một tham số (parameter). Tùy bạn sử dụng ngôn ngữ gì để viết chương trình mà cách thức lấy tham số sẽ khác nhau. Tôi xin lấy một ví dụ bằng VB để nhiều bạn có thể hiểu. Bạn hãy cẩn thận lư ày lại, mở VB, tạo một Project mới và thêm vào đoạn Code sau, dịch đoạn code nà đó đổi tên nó thành test. exe rồi copy nó đến thư mục C: (C:\test.exe).

Private Sub Form_Load() MsgBox Command$ End Sub

Ok. Bây giờ lại khởi động lại IE và thử một lần nữa xem sao. Bạn sẽ thấy mỗi khi click vào Menu thì một Message box sẽ hiển thị link mà bạn vừa chọn hoặc URL của hình mà bạn chọn. Nếu bạn không quen lắm với khái niệm tham số của chương trình thì bạn có thể dùng vài cách khác. Ví dụ như bạn có thể lưu URL vào một khóa nào đó trong Registry (VbScript có thể làm được điều này), sau đó chương trình của bạn sẽ tìm đến khóa này để lấy cái mà nó cần. Tuy nhiên bạn hãy cố làm quen với tham số đi là vừa, nó ngắn gọn và dễ dàng. Bây giờ việc còn lại của bạn chỉ là sửa lạ test.htm phù hợp với chương trình của bạn. Cảm ơn các bạn đã đọc bài và chúc thành công !

Một phần của tài liệu Quan điểm lập trình (Trang 39 - 40)

Tải bản đầy đủ (PDF)

(40 trang)