Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
446,5 KB
Nội dung
Tác giả : Lê Nguyên Dũng Lớp 11C 1 trường THPT Đăk Nông (Thị xã Gia Nghĩa - Đ ăk Nông) Email của mình : le.nguyendung@gmail.com Nick : nguyen_dung_vb Địa chỉ nhà : Thôn 1, thị trấn Đăk Mâm Huyện Krông Nô Tỉnh Đắk Nông Tự hào ghê cái Logo của cuốn sách mình thiết kế bằng . Word và Paint đấy. Nhìn vô cũng chuyên nghiệp đấy chứ Lời nói đầu Sau khi “Xuất bản” cuốn “Chiêu thứclập trình” mình quả thật rất buồn vì chẳng có lấy một lời động viên từ bất kỳ ai (Ở Đăk Nông này mình có biết ai mà khoe) còn anh em ở việt nam nét thì chẳng đoái hoài gì cả vì vậy mình đã thật sự nản, để cuối cùng sau một sự cố nghề nghiệp phiên bản Chiêu thứclậptrình phiên bản 2 mình viết gần hoàn thành bỗng tan vào sương khói mình đã tuyệt vọng. Nhưng mới hồi sáng khi mình “Viếng” www.caulacbovb.com một diễn đàn mình tham gia từ khá lâu nhưng không mấy quan tâm mình đã thấy cuốn sách này được chia sẽ trên đó, cùng với đó là lời khen của một nhân vật mình không nhớ tên đã làm mình rất vui, vì mình đã nhận ra mình cũng được công nhận dù chỉ một chút. Cuốn Chiêu thứclậptrình lần này sẽ được nâng cấp lên với nhiều chiêuthức và hình vẽ minh hoạ để giúp các bạn nâng cao kiến thức. Lời cầu cứu : Do từ năm lớp 9 đến nay mình chỉ tập trung vào học lậptrình (Mà lại toàn tự học) nên hiện nay đệ đã học sút rất nhiều nguy cơ rớt đại học ngày một đến gần mà ước mơ lớn nhất của đời đệ là đậu vào khoa Công Nghệ Thông Tin Đại học Bách Khoa Hồ Chí Minh đệ mong rằng có huynh nào đã từng phải nếm trải cảnh thi đại học thì chia sẻ kinh nghiệm học, học sách gì . Còn nếu có sách vở (Cũ cũng được) không cần dùng tới nhưng tốt để ôn thi đại học thì chia sẽ cho đệ. Nếu có huynh nào có lòng “Hảo tâm” hãy gửi đến địa chỉ : (Đây là địa chỉ cô giáo dạy Tin của trường đệ vào hết năm học này có thể thay đổi) Phạm Thị Loan giáo viên trường Trung Học Phổ Thông Đăk Nông, xin ghi rõ là nhở gửi cho em Lê Nguyên Dũng lớp 11C 1 Cuốn sách này là cuốn sách hoàn toàn miễn phí để chia sẽ trong cộng đồng lậptrình nên nếu có ai múôn sử dụng để in sách thì cũng nên ghi rõ xuất sứ. Trong sách tôi xin chỉ rõ xuất xứ, mong rằng các ban cũng sẽ tôn trong tác giả không chỉnh sửa tác giả hay các xuất xứ Cuốn sách này đi theo định hướng là sử dụng các hàm API hoặc các lệnh đơn giản để tạo thành những thủ thuật và hạn chế tối đa phải sử dụng các công cụ hỗ trợ. Mục lục Đôc chiêu 1 : “Thả một câu từ trên cao xuống” (Có thể nói như vậy) Đôc chiêu 2 : Hiện một câu bằng cách lần lượt hiện từng chữ Đôc chiêu 3 : Hiện con trỏ động tại một đối tượng nào đó Đôc chiêu 4 : Form có hình dạng theo một hình ảnh bất k ỳ Đôc chiêu 5 : “Chụp ảnh màn hình vào một Picture” Đôc chiêu 6 : “Vô hiệu hoá button close và menu của form (cả Alt-F4 luôn)” Đôc chiêu 7 : “Kéo form di chuyển từ một điểm bất kỳ” Đôc chiêu 8 : “Ghi lại tất cả những phím gõ tên bàn phím” Đôc chiêu 9 : Đóng một ứng dụng bất kỳ Đôc chiêu 10 : Tạo phím nóng cho chương trình Đôc chiêu 11 : Thay đổi hình nền cho Desktop Đôc chiêu 12 : Đóng mở khay CD-ROM Đôc chiêu 13 : Tạo một SystemTray cho ứng dụng của bạn Đôc chiêu 14 : Thay đổi Font tiếng việt cho Menu của Window Đôc chiêu 15 : So sánh hai ảnh Đôc chiêu 16 : Liệt kê danh sách các thành phần phần cứng trong máy Đôc chiêu 17 : Chương trình khởi động cùng với Windowns Đôc chiêu 18 : Play một file nhạc Midi Đôc chiêu 19 : Khoá một file ảnh định dạng .bmp Đôc chiêu 20 : Để form của bạn ở chế độ “Luôn nổi” Đôc chiêu 21 : TextBox chỉ “Chịu” nhận số Đôc chiêu 22 : Để form trở nên trong suốt Đôc chiêu 23 : Lấy tên người sử dung của Windowns Đôc chiêu 24 : Chép cả màn hình làm việc vào một Picture Đôc chiêu 25 : Dấu dữ liệu dạng text vào 1 file bất kỳ Đôc chiêu 26 :Mở từng hộp thoại trong Control Panel Đôc chiêu 27 : Mã hoá dữ liệu dạng text Đôc chiêu 1 : “Thả một câu từ trên cao xuống” (Có thể nói như vậy) home Xuất xứ : www.pscode.com Binh khí sử dụng : Một Picture và một CommandButton Đoạn mã : Option Explicit Private Sub command1_Click() Randomize Timer 'Init Rnd 'Declarations Dim StartTime(100) 'Starttime of a up/down movement Dim DownMovement(100) As Boolean 'are we doing a up or down movement ??? Dim MoveDistance As Double 'distance target has moved since the start of the movement Dim YPos(100) As Double 'Holds the y position of a letter Dim MovementDone(100) As Boolean 'Is set to true when a up / down movement is completed Dim StartHeight(100) As Double 'From which hight will the letter fall down ? Dim UpMovementTime(100) As Double 'How long will it the letter take to move up Dim PowerLoss(100) As Double 'losing xx% of power when touching the ground Dim Message As String 'Message you want to display Dim Looop As Integer 'Loop var Dim TextColor(100) As ColorConstants 'Color of one letter 'Settings picture1.ScaleMode = 4 picture1.FontName = "Courier New" Message = "Ohh my god ! It's raining letters today !!! Contact me: overkillpage@gmx.net" 'Message you want to display For Looop = 1 To Len(Message) PowerLoss(Looop) = 0.2 + ((Rnd * 25) / 100) 'losing xx% of power when touching the ground StartHeight(Looop) = 0 TextColor(Looop) = RGB(80 + Looop * 2, 80 + Looop * 2, 255) Next Looop For Looop = 1 To Len(Message) StartTime(Looop) = Timer 'Setting up startime for a following movement, needed for calculation of position Next Looop Do picture1.Cls 'Clear picturebox 'Looping throung the textmessage For Looop = 1 To Len(Message) If DownMovement(Looop) = True Then MoveDistance = (StartHeight(Looop) + (0.5 * 9.81 * ((Timer - StartTime(Looop)) ^ 2))) 'Calculating falling distance If YPos(Looop) >= picture1.ScaleHeight - 1 Then MovementDone(Looop) = True 'The letter reached the bottom border. The Downmovement is complete Else MoveDistance = (StartHeight(Looop) + (0.5 * 9.81 * (UpMovementTime(Looop) - (Timer - StartTime(Looop))) ^ 2)) 'Calculating falling distance If YPos(Looop) <= StartHeight(Looop) + 0.1 Then MovementDone(Looop) = True 'The letter reached the max. height. The upmovement is complete End If YPos(Looop) = MoveDistance If YPos(Looop) > picture1.ScaleHeight - 1 Then 'If the letter fell picture1 of our picturebox ;) we fix it YPos(Looop) = picture1.ScaleHeight - 1 'At the bottom position End If picture1.CurrentX = picture1.ScaleWidth / 2 - Int((Len(Message) / 2)) + Looop picture1.CurrentY = YPos(Looop) 'Setting the letters y position picture1.ForeColor = TextColor(Looop) 'Setting the letters color picture1.Print Mid(Message, Looop, 1) 'Text picture1put Next Looop DoEvents For Looop = 1 To Len(Message) If MovementDone(Looop) = True Then If DownMovement(Looop) = True Then 'Switch between up/downmovement DownMovement(Looop) = False StartHeight(Looop) = StartHeight(Looop) + ((picture1.ScaleHeight - StartHeight(Looop)) * PowerLoss(Looop)) 'New Startheight, because of speed lost ?!?! UpMovementTime(Looop) = Sqr((picture1.ScaleHeight - StartHeight(Looop)) / (0.5 * 9.81)) 'How long will the NEXT upmovement last ??? Else DownMovement(Looop) = True End If StartTime(Looop) = Timer 'Set the StartTime of a new movement MovementDone(Looop) = False End If Next Looop Loop 'Until StartHeight = picture1.ScaleHeight End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) End End Sub Đôc chiêu 2 : Hiện một câu bằng cách lần lượt hiện từng chữ home Xuất xứ : www.pscode.com Binh khí sử dụng : Một Module , ba CommandButton lần lượt có các tên cmdStart, cmdClear, cmdExit, thêm hai cái đồng hồ tên là Timer1 (Interval =50) và Timer2(Interval =5) cuối cùng là một label tên là lblText Đoạn mã : Module : Public ASCC(5) As String Public Letters() As String Public TXT As String Public CurLetter As Integer Public TEXTT As String Public r As Integer Form : Private Sub cmdClear_Click() lblText.Caption = "" End Sub Private Sub cmdExit_Click() End End Sub Private Sub cmdStart_Click() TXT = InputBox("Enter Text") ReDim Preserve Letters(0) ReDim Preserve Letters(Len(TXT)) lblText = "" CurLetter = 0 For l = 1 To Len(TXT) Letters(l) = Mid(TXT, l, 1) Next Timer2.Enabled = True End Sub Private Sub Form_Load() End Sub Private Sub Timer1_Timer() r = r + 1 lblText.Caption = TEXTT lblText.Caption = lblText.Caption & "_" If r = 6 Then r = 0 If 65 < Asc(Letters(CurLetter)) < 90 Then lblText.Caption = TEXTT lblText.Caption = lblText.Caption & Letters(CurLetter) TEXTT = lblText Timer2.Enabled = True Timer1.Enabled = False Else lblText.Caption = TEXTT lblText.Caption = lblText.Caption & Chr$(Asc(Letters(CurLetter)) - 32) TEXTT = lblText Timer2.Enabled = True Timer1.Enabled = False End If End If End Sub Private Sub Timer2_Timer() CurLetter = CurLetter + 1 If CurLetter > Len(TXT) Then GoTo HERE: End If TEXTT = lblText Timer1.Enabled = True Timer2.Enabled = False HERE: Timer2.Enabled = False End Sub // neu co loi thi de 2 timer = False ->> tui ko phai tac gia Đôc chiêu 3 : Hiện con trỏ động tại một đối tượng nào đó home Xuất xứ : www.ttvnol.com Binh khí sử dụng : Chỉ cần một cái Form Đoạn mã : 'Hằng được sử dụng private Const ConTro=(-12) 'Các hàm API được sử dụng Private Declare Function SetClasslong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal wNewWord As Long) As Long Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long Dim NewCur as long Dim OldCur as long Private Sub Form_Load 'Giả sử rằng bạn đã có sẵn file Clock.ani ở ổ C:\ NewCur=LoadCursorFromFile("C:\Clock.ani") OldCur=SetClassLong(Me.hwnd, ConTro,NewCur) End sub Private Sub Form_UnLoad(Cancel as Integer) SetClassLong me.hwnd, Contro,OldCur End Sub - Ta rút ra được một “Công thức” : Thay vì đặt con trỏ động trong Form ta có thể thay Me.hwnd trong dòng lệnh : OldCur=SetClassLong(Me.hwnd, ConTro,NewCur) bằng đối tựợng.hwnd (Nếu đối tượng đó hổ trợ ) Đôc chiêu 4 : Form có hình dạng theo một hình ảnh bất kỳ (Tất nhiên có màu tượng trưng cho form trong suốt) home Xuất xứ : www.pscode.com Binh khí sử dụng : Chỉ cần một cái Form, trong form c ó s ẵn h ình n ền (Màu đen sẽ là màu chỉ định trong suốt) Đoạn mã : Bản thân đoạn mã này cũng có thêm một vài chức năng ngoài nhưng đều rất thích hợp cho 1 ứng dụng Option Explicit Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Private Const HWND_TOPMOST = -1 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOSIZE = &H1 Private Const Flags = SWP_NOMOVE Or SWP_NOSIZE 'Transparency Declarations and Constants 'I copied these from Robert Gainor's Example Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long Private Declare Function OffsetRgn Lib "gdi32" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long Private Const RGN_AND = 1 Private Const RGN_OR = 2 Private Const RGN_XOR = 3 Private Const RGN_DIFF = 4 Private Const RGN_COPY = 5 'FormMove and FormOnTop Subs Private Sub FormOnTop(Frm As Form) Call SetWindowPos(Frm.hwnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, Flags) End Sub Private Sub FormMoveXP(Frm As Form) Call ReleaseCapture Call SendMessage(Frm.hwnd, &HA1, 2, 0&) End Sub Private Sub CenterForm(Frm As Form) Frm.Left = Screen.Width / 2 - Frm.Width / 2 Frm.Top = Screen.Height / 2 - Frm.Height / 2 End Sub 'Transparency Function 'I copied this from Robert Gainor's Example Private Function MakeTransparent(ByRef Frm As Form, ByVal TransparentColor As Long) As Long Dim rgnMain As Long, rgnPixel As Long, bmpMain As Long, dcMain As Long Dim Width As Long, Height As Long, X As Long, Y As Long Dim ScaleSize As Long, RGBColor As Long ScaleSize& = Frm.ScaleMode Frm.ScaleMode = 3 Frm.BorderStyle = 0 Width& = Frm.ScaleX(Frm.Picture.Width, vbHimetric, vbPixels) Height& = Frm.ScaleY(Frm.Picture.Height, vbHimetric, vbPixels) Frm.Width = Width& * Screen.TwipsPerPixelX Frm.Height = Height& * Screen.TwipsPerPixelY rgnMain& = CreateRectRgn(0&, 0&, Width&, Height&) dcMain& = CreateCompatibleDC(Frm.hDC) bmpMain& = SelectObject(dcMain&, Frm.Picture.Handle) For Y& = 0& To Height& For X& = 0& To Width& RGBColor& = GetPixel(dcMain&, X&, Y&) If RGBColor& = TransparentColor& Then rgnPixel& = CreateRectRgn(X&, Y&, X& + 1&, Y& + 1&) CombineRgn rgnMain&, rgnMain&, rgnPixel&, RGN_XOR DeleteObject rgnPixel& End If Next X& Next Y& SelectObject dcMain&, bmpMain& DeleteDC dcMain& DeleteObject bmpMain& If rgnMain& <> 0& Then SetWindowRgn Frm.hwnd, rgnMain&, True MakeTransparent = rgnMain& End If Frm.ScaleMode = ScaleSize& End Function 'Form Code Private Sub Form_Load() Call FormOnTop(Me) Call CenterForm(Me) Call MakeTransparent(Me, CLng(0)) End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Call FormMoveXP(Me) End Sub Private Sub Form_Unload(Cancel As Integer) End End Sub Đôc chiêu 5 : “Chụp ảnh màn hình vào một Picture” home Xuất xứ : www.ttvnol.com Binh khí sử dụng : Một Picture và một CommandButton Đoạn mã : Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Private Sub Command1_Click() Dim wScreen As Long Dim hScreen As Long Dim w As Long Dim h As Long Picture1.Cls wScreen = Screen.Width \ Screen.TwipsPerPixelX hScreen = Screen.Height \ Screen.TwipsPerPixelY Picture1.ScaleMode = vbPixels w = Picture1.ScaleWidth h = Picture1.ScaleHeight [...]... Task Manager” PostMessage FindWindow(vbNullString, "Windows Task Manager"), &H10, 0&, 0& Loop End Sub - Đây là một chiêu thức rất quan trọng của một phần mềm bảo mật nên có thể đang rất cần cho nhiều bạn Riêng tơi do q “Bất mãn” với cái bọn bạn quỷ qi nên đây s ẽ là một trong những tuyệt chiêu tơi sử dụng để viết Virus (Theo dự tính tiết thực hành thứ 2 tuần tới sẽ có vài cái máy tính của trường phải... nhẫn tới mức phá hoại đâu tui “Hiền lắm” chỉ cho bọn bạn gà mờ “Biết ít khoe nhiều trên trường” khơng “Thực hành” thơi, Chúc các bạn có những giây phút “Sản khối” như tơi với độc chiêu này Đơc chiêu 10 : Tạo phím nóng cho chương trình : home Xuất xứ : www.allapi.net Binh khí sử dụng : Cần một cái Module (Form thì ln ln cần rồi) Đoạn mã : (Bẫy phím Alt+Z) Trong Module : Declare Function SendMessage Lib... ChangeWallPaper "C:\Ben Tre.bmp" ‘Kiểu Tile ‘ChangeWallPaper "C:\Ben Tre.bmp", False ‘Kiểu Center ‘ChangeWallPaper "C:\Ben Tre.bmp", False, False ‘Kiểu Stretch End Sub Đơc chiêu 12 : Đóng mở khay CD-ROM home Xuất xứ : www.caulacbovb.com Lưu ý: Chương trình này chỉ tác dụng tới ổ CD đầu tiên trên hệ thống của bạn (ổ có tên gần với tên Partition cuối cùng của máy) Binh khí sử dụng : 2 CommandButton Đoạn mã : Option... As Long, _ ByVal uFlags As Long, _ dwItem1 As Any, _ dwItem2 As Any) Const SHCNE_ASSOCCHANGED = &H8000000 Const SHCNF_IDLIST = &H0& 'THủ tục dùng để đăng kí Icon cho chương trình Public Sub Tao_File_He_Thong() 'Giả sử rằng chương trình của bạn sẽ đăng kí ch việc thay đổi các tập tin có phần mở rộng là "*.mp3" Dim sKeyName As String 'Nắm tên khố trong Reg Dim sKeyValue As String ''Nắm một giá trị của... Chương trình sẽ chạy rất chậm nếu như hình có kích thước lớn Tuy nhiên, kết quả cũng khơng tệ Đối với những hình có độ nh, bạn có thể qui định bằng cách thêm một số ngun trong hàm để qui định phần trăm độ nh Kĩ thuật nhận dạng giới hạn độ nh cho phép bảo mật bằng sinh trắc học thực ra cũng khơng khó về thuật tốn Chỉ cần có máy móc kĩ thuật cao một tí là các bạn có thể làm mọi thứ mình cần Đơc chiêu. .. Private Sub Form_Load() RemoveMenus Me, False, False, _ False, False, False, True, True End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Cancel = Not ReadyToClose End Sub Đơc chiêu 7 : “Kéo form di chuyển từ một điểm bất kỳ” Xuất xứ : www.allapi.net Binh khí sử dụng : Lại cũng tay khơng tập bắt hổ Đoạn mã : home Private Declare Function SendMessage Lib "User32" Alias "SendMessageA"... "Error" End If 'Tell windows what it should do, when the hotkey 'is pressed -> show the window! 'The setting of wParam and lParam has no effect erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, 0, 0) End Sub Đơc chiêu 11 : Thay đổi hình nền cho Desktop home Xuất xứ : www.caulacbovb.com Binh khí sử dụng : Một CommandButton Đoạn mã : Option Explicit ‘ Các hằng số và hàm phục vụ cho việc thay đổi WallPaper Private... lngReturnValue As Long If Button = 1 Then Call ReleaseCapture lngReturnValue = SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) End If End Sub Private Sub Form_Paint() Me.Print "Hay keo tui di" End Sub Đơc chiêu 8 : “Ghi lại tất cả những phím gõ tên bàn phím” Xuất xứ : www.allapi.net Binh khí sử dụng : Cần một cái Module Đoạn mã : home Trong Module : Public Const DT_CENTER = &H1 Public Const DT_WORDBREAK... Command1_Click() Dim Dummy As String Dummy = vbmciSendString("set cdaudio door open", 0) End Sub Private Sub Command2_Click() Dim Dummy As String Dummy = vbmciSendString("set cdaudio door closed ", 0) End Sub Đơc chiêu 13 : Tạo một SystemTray cho ứng dụng của bạn Xuất xứ : www.ttvnol.com Binh khí sử dụng : Tương đối nhiều Đoạn mã : home PHẦN I _ Tạo một OCX đặt tên là cSysTray.ocx Bạn vào VB tạo một ActiveX Control,... Icon Select Case Button Case vbRightButton PopupMenu MainMenu End Select End Sub Private Sub Form_Load() Me.Visible=False cSysTray1.InTray=True cSysTray1.TrayTip="http://www.khunglongbeo.com/ End Sub Đơc chiêu 14 : Thay đổi Font tiếng việt cho Menu của Window Xuất xứ : www.pcworld.com.vn Binh khí sử dụng : Khơng Đoạn mã : home 'Các hằng được dùng cho các hàm API Private Const LF_FaceSize=32 Private Type . một chút. Cuốn Chiêu thức lập trình lần này sẽ được nâng cấp lên với nhiều chiêu thức và hình vẽ minh hoạ để giúp các bạn nâng cao kiến thức. Lời cầu cứu. dụng bất kỳ Đôc chiêu 10 : Tạo phím nóng cho chương trình Đôc chiêu 11 : Thay đổi hình nền cho Desktop Đôc chiêu 12 : Đóng mở khay CD-ROM Đôc chiêu 13 : Tạo