Ứng dụng HTML. Kỹ thuật hệ thống - Ứng dụng HTML

Giới thiệu

Cho đến một thời điểm nhất định trong sự phát triển của công nghệ thông tin, các chương trình chỉ có thể được tạo ra bởi các chuyên gia trong lĩnh vực lập trình; với sự ra đời và phát triển tiếp theo của ngôn ngữ kịch bản cũng như công nghệ trình duyệt, việc tạo ứng dụng trở nên dễ dàng hơn đối với máy tính bình thường. người dùng. Vì vậy, HTA (Ứng dụng HTML) là một công nghệ đơn giản cho phép bạn tạo các ứng dụng hữu ích ngay cả khi không có kiến ​​​​thức về ngôn ngữ lập trình nghiêm túc.

Bạn có thể tạo một ứng dụng HTA bằng cách chỉ cần viết một trang HTML và lưu nó với phần mở rộng .hta, được chương trình mshta.exe xử lý. Nhiệm vụ của nó là đảm bảo rằng chương trình của bạn giao tiếp với trình duyệt. Vì các ứng dụng như vậy sử dụng công cụ trình duyệt nên chúng kết hợp tất cả các khả năng của chúng - mô hình đối tượng, bố cục trang (HTML), biểu định kiểu xếp tầng (CSS), tập lệnh (VBS và JS). Ngoài ra, các ứng dụng như vậy không bị hạn chế về bảo mật - chúng hoạt động giống như bất kỳ tệp thực thi nào.

Nghĩa là, bằng cách sử dụng HTML, mọi giao diện người dùng đều được tạo ra với nỗ lực tối thiểu và không có bất kỳ hạn chế đáng kể nào, logic chương trình được tổ chức theo mã trong Java Script hoặc Visual Basic Script và bản thân ứng dụng vượt ra ngoài trình duyệt - chương trình khi chạy sẽ không có gì khác biệt so với các ứng dụng cửa sổ thông thường dành cho Windows - ứng dụng được khởi chạy sẽ hiển thị trên thanh tác vụ, có cửa sổ, menu và biểu tượng riêng. Mặc dù có một cảnh báo ở đây: chương trình sẽ không hiển thị trong số các ứng dụng đang chạy trong trình quản lý tác vụ, phương tiện duy nhất để bạn có thể kiểm soát chương trình đang chạy là quy trình mshta.exe.

Tạo một ứng dụng

Các ứng dụng HTA có thể được viết bằng bất kỳ trình soạn thảo văn bản hoặc hàm tạo HTML chuyên dụng nào. Ví dụ: tôi sử dụng Notepad2.

Để tạo một ứng dụng mới, hãy mở Notepad, sao chép cấu trúc của tài liệu HTML vào đó và lưu dưới dạng tệp htm.

Ứng dụng HTA của tôi Ứng dụng HTA thử nghiệm của tôi

Vì vậy, chúng tôi đã nhận được một tài liệu HTML có thể xem được trên trình duyệt. Bây giờ, để biến trang này thành một ứng dụng HTA, bạn cần thay đổi phần mở rộng của tài liệu HTML thành .hta, sau đó bạn có thể khởi chạy nó bằng cách nhấp đúp vào tệp.

Để sử dụng đầy đủ khả năng của các ứng dụng đó, cần phải đưa thẻ vào phần này. Hãy chuyển đổi tệp thử nghiệm của chúng tôi như thế này:

Ứng dụng HTA của tôi Ứng dụng HTA thử nghiệm của tôi

Phần mở rộng .hta cho hệ thống biết cách vận hành ứng dụng và thẻ đặc biệt cho hệ thống biết cách hiển thị cửa sổ. Thẻ này cung cấp một tập hợp các thuộc tính kiểm soát các thuộc tính của cửa sổ ứng dụng.

Thuộc tính và thuộc tính thẻ

Vì vậy, để cho ứng dụng HTA biết cách hiển thị cửa sổ chương trình, bạn cần đặt thuộc tính thẻ.

Ngoài việc kiểm soát cửa sổ ứng dụng, thẻ này còn giúp truy cập các thuộc tính ứng dụng từ các tập lệnh nằm trong mã ứng dụng HTA. Điều đáng chú ý là tất cả thuộc tính của thẻ này đều ở chế độ chỉ đọc.

Id thuộc tính và thuộc tính

Xác định mã định danh đối tượng - một tên duy nhất trong tệp ứng dụng HTA.

Thuộc tính và thuộc tính ApplicationName

Chứa tên ứng dụng. Nếu thuộc tính SingleInstance được đặt thành "True", thì giá trị ApplicationName sẽ tự động được kiểm tra trước khi khởi chạy phiên bản ứng dụng. Để thử nghiệm thành công, giá trị ApplicationName phải là duy nhất. Nghĩa là, giá trị của thuộc tính ApplicationName được sử dụng để xác định tính duy nhất của ứng dụng đang chạy.

Thuộc tính và thuộc tính viền

Chứa loại đường viền cửa sổ. Thuộc tính Border ảnh hưởng đến độ dày của đường viền và chỉ hợp lệ đối với các cửa sổ HTA có thanh tiêu đề và thanh tiêu đề. Bằng cách đặt Đường viền thành "Không", bạn xóa thanh tiêu đề, biểu tượng chương trình cũng như các nút phóng to và thu nhỏ. Thuộc tính này có thể được sử dụng cùng với thuộc tính BorderStyle. Những giá trị khả thi:

Thuộc tính và thuộc tính BorderStyle

Chứa kiểu đường viền của vùng máy khách của cửa sổ. Thuộc tính BorderStyle đặt kiểu cho đường viền nội dung của cửa sổ, trong khi thuộc tính Border kiểm soát đường viền của cửa sổ ứng dụng. Những giá trị khả thi:

Thuộc tính và thuộc tính chú thích

Xác định xem cửa sổ ứng dụng HTML có hiển thị thanh tiêu đề hay không. Tiêu đề ứng dụng chỉ được hiển thị khi thuộc tính Caption được đặt thành "Yes". Việc tắt thuộc tính Chú thích cũng sẽ tắt các nút Thu gọn, Phóng to và biểu tượng mềm. Trong trường hợp này, bạn phải nhớ cung cấp một cách khác để thoát khỏi ứng dụng, ví dụ: nút "Đóng" trên biểu mẫu ứng dụng gọi phương thức Window.Close. Những giá trị khả thi:

Thuộc tính dòng lệnh

Một chuỗi chứa các tùy chọn đường dẫn và dòng lệnh được sử dụng để khởi chạy ứng dụng HTA. Nếu ứng dụng HTA được khởi chạy bằng giao thức HTTP thì thuộc tính CommandLine chứa một chuỗi trống.

Thuộc tính và thuộc tính ContextMenu

Xác định xem menu ngữ cảnh có xuất hiện khi nhấp vào nút chuột phải hay không. Những giá trị khả thi:

Thuộc tính và thuộc tính biểu tượng

Xác định đường dẫn đến tệp biểu tượng được sử dụng trong ứng dụng HTML. HTA sử dụng biểu tượng hệ thống nếu giá trị không được xác định. Thuộc tính Biểu tượng nhận dạng các tệp tiêu chuẩn có phần mở rộng .ico chứa hình ảnh 32x32 pixel và cũng nhận dạng thành công biểu tượng đầu tiên từ các tệp "*.exe", "*.icl" (thư viện biểu tượng), "*.dll" và "*.ocx" ".

Thuộc tính và thuộc tính InnerBorder

Xác định xem đường viền 3-D bên trong có được hiển thị hay không. Những giá trị khả thi:

Thuộc tính và thuộc tính MaximizeButton

Xác định xem nút Phóng to có hiển thị trên thanh tiêu đề của cửa sổ ứng dụng HTML hay không. Để hiển thị các nút Thu gọn và Phóng to, cửa sổ phải có thanh tiêu đề (thuộc tính Caption). Những giá trị khả thi:

Thuộc tính và thuộc tính MinimifyButton

Xác định xem nút Thu gọn có hiển thị trên thanh tiêu đề của cửa sổ ứng dụng HTML hay không. Để hiển thị các nút Thu gọn và Phóng to, cửa sổ phải có thanh tiêu đề (thuộc tính Caption). Những giá trị khả thi:

Thuộc tính và thuộc tính có thể điều hướng

Xác định cửa sổ nào tài liệu được tải xuống sẽ mở. Những giá trị khả thi:

Thuộc tính và thuộc tính cuộn

Xác định xem thanh cuộn có được hiển thị hay không. Những giá trị khả thi:

Thuộc tính và thuộc tính ScrollFlat

Xác định cách hiển thị thanh cuộn. Những giá trị khả thi:

Thuộc tính và thuộc tính lựa chọn

Xác định xem nội dung tài liệu có thể được chọn bằng chuột hoặc bàn phím hay không. Giá trị "Không" sẽ ngăn menu ngữ cảnh xuất hiện và việc đặt thuộc tính ContextMenu thành "Có" sẽ không có hiệu lực. Những giá trị khả thi:

Thuộc tính và thuộc tính ShowInTaskBar

Xác định xem ứng dụng HTML có xuất hiện trên thanh tác vụ Windows hay không. Những giá trị khả thi:

Thuộc tính và thuộc tính SingleInstance

Xác định xem có thể chạy nhiều phiên bản của ứng dụng HTML cùng lúc hay không. Những giá trị khả thi:

Thuộc tính và thuộc tính SysMenu

Xác định xem menu hệ thống có được hiển thị trong ứng dụng HTML hay không. Menu hệ thống HTA được biểu thị bằng biểu tượng phần mềm ở góc trái của thanh tiêu đề. Menu hệ thống HTA hiển thị tất cả các lệnh có trong menu hệ thống Windows tiêu chuẩn, bao gồm Khôi phục, Di chuyển, Thay đổi kích thước, Thu nhỏ, Tối đa hóa và Đóng. Những giá trị khả thi:

Thuộc tính và thuộc tính phiên bản

Chỉ định số phiên bản HTML của ứng dụng.

Thuộc tính và thuộc tính WindowState

Xác định kích thước ban đầu của cửa sổ ứng dụng HTML. Những giá trị khả thi:

Ví dụ này sử dụng tất cả các thuộc tính của thẻ, mặc dù một số giá trị thuộc tính bị ghi đè bởi các tham số khác hoặc một số giá trị đã được đặt theo mặc định và không yêu cầu khai báo. Điều này được thực hiện để hiển thị cách sử dụng tất cả các thuộc tính của một thẻ nhất định. Trong thực tế thông thường, chỉ những thuộc tính có giá trị cần thay đổi mới được khai báo.

Ứng dụng HTA của tôi Ví dụ về sử dụng thuộc tính ứng dụng HTA

  • biên giới: bất biến;
  • tiêu đề cửa sổ: hiện tại;
  • menu hệ thống: hiện tại;
  • kích thước cửa sổ: bình thường.
  • Các tập lệnh trong ứng dụng HTA

    Vì các ứng dụng HTA về cơ bản là các trang HTML nên các ngôn ngữ kịch bản có thể được sử dụng trong đó. Vì tôi biết rõ ngôn ngữ Visual Basic Script nên tất cả các ví dụ tiếp theo sẽ dựa trên ngôn ngữ này, tuy nhiên, bạn có thể sử dụng cả VBS và JS để tạo ứng dụng của mình.

    Các tập lệnh được viết trong một thẻ và nằm trong một phần hoặc trong một tệp bên ngoài. Phần tập lệnh mô tả các hành động được thực hiện khi một số sự kiện nhất định xảy ra trên các thành phần biểu mẫu ứng dụng. Ví dụ: để ứng dụng thực thi tập lệnh khi tải biểu mẫu (khởi tạo chương trình), cần chỉ định trong thẻ một quy trình sẽ được khởi chạy bởi sự kiện OnLoad và mô tả chính các hành động đó trong thẻ.

    Tập lệnh phổ biến nhất khi tải biểu mẫu là thay đổi kích thước cửa sổ và đặt nó ở giữa màn hình.

    Ví dụ về việc sử dụng tập lệnh

    Hãy thay đổi ví dụ của chúng ta như sau: xóa các thuộc tính thẻ không sử dụng, thêm tập lệnh để thay đổi kích thước cửa sổ, thêm tập lệnh để hiển thị phiên bản của tập lệnh trên biểu mẫu và định dạng nội dung của biểu mẫu bằng một bảng ẩn sao cho mỗi phần tử đều được hiển thị vào đúng vị trí của nó, bất kể nội dung của biểu mẫu.

    Ứng dụng HTA của tôi " Quy trình khởi tạo cửa sổ biểu mẫu Sub WindowOnLoad " Kích thước cửa sổ iWidth = 800 iHeight = 600 " Độ phân giải màn hình mặc định iHorizontal = 1024 iVertical = 768 " Lấy độ phân giải màn hình hiện tại Đặt oWMIService = GetObject("winmgmts:\\.\root\ cimv2 ") Đặt colItems = oWMIService.ExecQuery("Select * From Win32_DesktopMonitor") Cho mỗi oItem trong ColItems iHorizontal = oItem.ScreenWidth iVertical = oItem.ScreenHeight Thoát cho tiếp theo " Thay đổi kích thước và căn giữa cửa sổ iLeft = (iHorizontal - iWidth) / 2 iTop = (iVertical - iHeight) / 2 Self.Focus() Self.resizeTo iWidth, iHeight Self.moveTo iLeft, iTop " Hiển thị phiên bản ứng dụng trên biểu mẫu Version_Div.InnerHTML = "Version: " & oHTA.Version End Sub

    Ứng dụng HTA của tôi
    Ứng dụng này trông như thế này:
  • biên giới: bất biến;
  • kiểu viền: nổi lên và lõm xuống;
  • tiêu đề cửa sổ: hiện tại;
  • biểu tượng: từ chương trình Hyper Terminal;
  • đường viền 3-D bên trong: không hiển thị;
  • nút "mở rộng": vắng mặt;
  • nút "thu gọn": vắng mặt;
  • tài liệu có thể tải xuống: mở trong một cửa sổ mới;
  • thanh cuộn: không hiển thị;
  • kiểu thanh cuộn: ba chiều;
  • nội dung tài liệu được chọn bằng chuột: không;
  • ứng dụng xuất hiện trên thanh tác vụ: không;
  • chỉ một phiên bản của ứng dụng được khởi chạy: có;
  • menu hệ thống: hiện tại;
  • kích thước cửa sổ: bình thường.
  • Phiên bản: X.X

    Tương tác với hệ điều hành

    Các ứng dụng HTA rất thuận tiện cho việc tập trung các kịch bản quản lý cơ sở hạ tầng CNTT của công ty mà quản trị viên sử dụng hàng ngày. Trước khi tạo một ứng dụng như vậy, cần phải làm quen với các tính năng tương tác giữa các tập lệnh ứng dụng HTA và hệ điều hành.

    Ứng dụng tương tác với hệ điều hành bằng cách đưa các tập lệnh đặc biệt vào mã. Các tập lệnh như vậy không chỉ thực thi logic ứng dụng mà còn gửi yêu cầu đến hệ điều hành thông qua các thư viện đặc biệt và hệ điều hành trả về dữ liệu được yêu cầu cho chúng hoặc thực hiện các hành động cần thiết.

    Các phương thức và thuộc tính của lớp gốc WScript

    HTA không thể sử dụng trực tiếp các phương thức và thuộc tính của lớp cơ sở WScript. Các phương thức CreateObject(.), GetObject(), ConnectObject(, ), DisconnectObject() được gọi mà không chỉ định lớp cha và tất cả các phương thức lớp cơ sở khác đều không có sẵn để sử dụng.

    Nói cách khác, bạn không thể gọi một phương thức đơn giản nhưng rất hữu ích như WScript.Sleep. Để khắc phục hạn chế này, bạn phải sử dụng các phương thức có hành động tương tự từ các thư viện khác. Dưới đây là một quy trình ví dụ thay thế phương thức WScript.Sleep bị thiếu.

    Sub ccSleep(giây) Đặt oShell = CreateObject("Wscript.Shell") sCommand = "%COMSPEC% /c ping -n " ​​​ ​​& 1 + giây & " 127.0.0.1>nul" oShell.Run sCommand,0,1 Kết thúc phụ

    Quy trình này sử dụng thuộc tính của lệnh ping tiêu chuẩn rằng khoảng thời gian giữa việc gửi gói đến máy chủ là 1 giây. Nghĩa là, nếu chúng ta cần độ trễ khi thực thi tập lệnh là 1 giây thì chúng ta cần gửi 2 gói, khoảng thời gian giữa chúng sẽ là 1 giây. Điểm thứ hai của phương pháp này là các gói tin được gửi đến máy chủ còn sơ khai 127.0.0.1 - tức là đến chính nó nên thời gian phản hồi từ máy chủ bằng mili giây và ít ảnh hưởng đến việc tính toán thời gian giữa các lần gửi gói tin . Điểm thứ ba là thực thi lệnh ping ở chế độ ẩn.

    Các phương thức và thuộc tính của lớp Shell

    Để làm việc với hệ điều hành, một lớp Shell đặc biệt được sử dụng, cho phép bạn thực hiện các thao tác như khởi chạy chương trình, thay đổi sổ đăng ký, tạo lối tắt, truy cập các thư mục hệ thống và biến hệ thống cũng như truy cập nhật ký hệ thống.

    Quy trình phổ biến nhất là khởi chạy một ứng dụng bên ngoài. Dưới đây là một ví dụ về quy trình khởi động ứng dụng.

    Sub RunApplication(sApplication) sCommandLine ="" Set oShell = CreateObject("Wscript.Shell") Select Case sApplication Case "CommandPrompt" sCommandLine = "%ComSpec%" Case "TestScript" sCommandLine = "%COMSPEC% /C CScript C:\ Scripts\Test.vbs" Case "FarManager" sCommandLine = "C:\FarManager\Far.exe" Case "Notepad" sCommandLine = "notepad.exe" Case Else sCommandLine ="" End Chọn Nếu Len(sCommandLine) > 0 Then oShell .Run sCommandLine,1,0 End Sub

    Quy trình này nhận dưới dạng tham số mã định danh của phần tử đã gọi nó, chọn dòng lệnh mong muốn và chạy nó nếu có thể tìm thấy dòng khởi chạy.

    Các phương thức và thuộc tính của lớp FileSystemObject

    Rất thường xuyên có những trường hợp bạn cần tạo, xóa, di chuyển hoặc thay đổi nội dung nào đó trên đĩa máy tính. Vấn đề này có thể được giải quyết bằng lớp FileSystemObject, được thiết kế để hoạt động với hệ thống tệp.

    Tác vụ hệ thống tệp phổ biến nhất là đọc tệp. Dưới đây là hàm đọc tệp văn bản, hàm này lấy đường dẫn đến tệp làm tham số và trả về một mảng các dòng từ tệp đã đọc.

    Hàm ReadFile(sFileName) Đặt oFSO = CreateObject("Scripting.FileSystemObject") Đặt oInFile = oFSO.OpenTextFile(sFileName, 1, False, 0) sFileContent = oInFile.ReadAll oInFile.Close ReadFile = sFileContent End Function

    Một tính năng hữu ích khác là kiểm tra sự tồn tại của tệp, chẳng hạn như trước khi chạy chương trình bên ngoài hoặc trước khi đọc tệp văn bản. Tham số đầu vào của hàm là đường dẫn tới file, tham số đầu ra là biến logic.

    Hàm CheckFile(sFilePath) Đặt oFSO = CreateObject("Scripting.FileSystemObject") Nếu oFSO.FileExists(sFilePath) Then CheckFile = True Khác CheckFile = false End Nếu End Function

    Các lớp công cụ quản lý Windows

    Công cụ quản lý Windows (WMI) là một bộ giao diện để quản lý hệ điều hành thông qua các thành phần đặc biệt, cả cục bộ và qua mạng. Đây là một bộ công cụ rất phong phú mà bạn có thể thực hiện bất kỳ hành động nào trong môi trường Windows.

    Trường hợp sử dụng đơn giản và phổ biến nhất của WMI là xác định cài đặt hiển thị của người dùng để căn giữa biểu mẫu ứng dụng trên màn hình.

    Hàm GetDisplayResolution() Đặt oWMIService = GetObject("winmgmts:\\.\root\cimv2") Đặt colItems = oWMIService.ExecQuery("Select * From Win32_DesktopMonitor") Cho mỗi oItem Trong colItems iHorizontal = oItem.ScreenWidth iVertical = oItem.ScreenHeight Thoát để chuyển sang phần tiếp theo GetDisplayResolution = iHorizontal & ";" & Chức năng kết thúc iVertical

    Ví dụ thứ hai về việc sử dụng WMI cũng hữu ích và thường được sử dụng - đó là chức năng xác định tính khả dụng của máy tính trên mạng.

    Hàm PingComputer(sComputer) Đặt oPing = GetObject("winmgmts:(impersonationLevel=impersonate)").ExecQuery("SELECT" & _ * FROM Win32_PingStatus WHERE address = "" & sComputer & """) Cho mỗi oStatus Trong oPing Nếu IsNull (oStatus.StatusCode) Hoặc oStatus.StatusCode

    Một ví dụ về việc sử dụng các hàm để tương tác với hệ điều hành

    Hãy biến đổi ứng dụng của chúng ta như sau: thay đổi văn bản của biểu mẫu, thêm tất cả các ví dụ được mô tả ở trên, đặt một số nút trên biểu mẫu để chạy các tác vụ, trong thư mục chứa tệp ứng dụng HTA, tạo một thư mục "MyHTA_files" trong đó chúng tôi sẽ đặt một số tập tin:

    • text.txt - bất kỳ tệp văn bản nào;
    • test.vbs là một file chỉ chứa một dòng: MsgBox("Hello script!");
    • MyHTA.ico - bất kỳ biểu tượng nào;
    • MyHTA.vbs là một file chứa tất cả các đoạn script trên.

    Danh sách file "MyHTA.hta"

    Ứng dụng HTA của tôi

    Ứng dụng HTA của tôi
    Phiên bản: X.X

    " Quy trình khởi tạo cửa sổ biểu mẫu Sub WindowOnLoad Dim CurrentResolution " Kích thước cửa sổ iWidth = 800 iHeight = 600 " Lấy độ phân giải màn hình hiện tại CurrentResolution = GetDisplayResolution() " Thay đổi kích thước cửa sổ và căn giữa nó iLeft = (Split(CurrentResolution,";")(0) - iWidth) / 2 iTop = (Split(CurrentResolution,";")(1) - iHeight) / 2 Self.Focus() Self.resizeTo iWidth, iHeight Self.moveTo iLeft, iTop " Hiển thị phiên bản ứng dụng trên biểu mẫu Version_Div .InnerHTML = "Phiên bản: " & oHTA.Version End Sub RunApplication(sApplication) sCommandLine ="" Đặt oShell = CreateObject("Wscript.Shell") Chọn trường hợp Trường hợp ứng dụng "CommandPrompt" sCommandLine = "%ComSpec%" Case "TestScript " Nếu CheckFile (oShell. CurrentDirectory & "\MyHTA_files\Test.vbs") = True Thì sCommandLine = "WScript """ & oShell. CurrentDirectory & _ "\MyHTA_files\Test.vbs""" Else MsgBox("Không tìm thấy tệp ") Kết thúc Nếu trường hợp "TextFile" Nếu CheckFile(oShell. CurrentDirectory & "\MyHTA_files\Test.txt") = True Thì sCommandLine = "Notepad """ & oShell. CurrentDirectory & _ "\MyHTA_files\Test.txt""" Khác MsgBox( "Không tìm thấy tệp") Kết thúc Nếu trường hợp "TempDir" sCommandLine = "Explorer " & oShell.ExpandEnvironmentStrings("%Temp%") Trường hợp khác sCommandLine ="" End Chọn Nếu Len(sCommandLine) > 0 Then oShell.Run sCommandLine,1 ,0 End Chức năng phụ ReadFile(sFileName) Đặt oFSO = CreateObject("Scripting.FileSystemObject") Đặt oInFile = oFSO.OpenTextFile(sFileName, 1, False, 0) sFileContent = oInFile.ReadAll oInFile.Close ReadFile = sFileContent End Hàm Chức năng CheckFile (sFilePath) Đặt oFSO = CreateObject("Scripting.FileSystemObject") Nếu oFSO.FileExists(sFilePath) Then CheckFile = True Ngược lại CheckFile = false Kết thúc nếu kết thúc Chức năng GetDisplayResolution() Đặt oWMIService = GetObject("winmgmts:\\ .\root \cimv2") Đặt colItems = oWMIService.ExecQuery("Chọn * Từ Win32_DesktopMonitor") cho mỗi oItem trong colItems iHorizontal = oItem.ScreenWidth iVertical = oItem.ScreenHeight Thoát cho GetDisplayResolution = iHorizontal & ";" & iVertical End Function tiếp theo Hàm PingComputer( sComputer) Đặt oPing = GetObject("winmgmts:(impersonationLevel=impersonate)").ExecQuery(_ "select * from Win32_PingStatus trong đó address = "" & sComputer & """) Cho mỗi oStatus Trong oPing Nếu IsNull(oStatus .StatusCode) Hoặc oStatus.StatusCode 0 Thì PingComputer = Sai Khác PingComputer = True End Nếu Chức năng kết thúc tiếp theo

    Vì vậy, bây giờ chúng ta có một biểu mẫu với một hành động cụ thể được liên kết với mỗi nút. Để làm sinh động biểu mẫu và làm cho giao diện trở nên dễ chịu hơn, chúng ta sẽ cần sử dụng các biểu định kiểu cũng như các thuộc tính của đối tượng biểu mẫu mà chúng ta sẽ thay đổi linh hoạt khi các sự kiện biểu mẫu mới xảy ra.

    Giao diện động

    Giao diện động hoặc giao diện thay đổi tùy theo hành động của người dùng, được triển khai bằng DHTML. Việc triển khai DHTML bao gồm ba trụ cột: bản thân HTML, các biểu định kiểu xếp tầng (CSS) và ngôn ngữ tập lệnh (Java Script hoặc Visual Basic Script). Ba thành phần DHTML này được liên kết với nhau bằng Mô hình đối tượng tài liệu (DOM), về cơ bản là Giao diện lập trình ứng dụng (API). DOM liên kết ba thành phần này lại với nhau, mang lại chất lượng mới cho một tài liệu HTML đơn giản - khả năng thay đổi nội dung một cách linh hoạt mà không cần tải lại trang.

    Trên thực tế, chúng tôi đã sử dụng giao diện động trong các ví dụ trước - điều này thay đổi kích thước và vị trí của biểu mẫu khi tải, cũng như hiển thị phiên bản ứng dụng trên biểu mẫu.

    Ví dụ về tạo giao diện động

    Vì vậy, điều đầu tiên chúng ta cần là tạo một cấu trúc tĩnh cho biểu mẫu của mình. Trong ví dụ của chúng tôi, chúng tôi đã tạo cơ sở của biểu mẫu - một bảng. Bây giờ chúng ta cần bổ sung nó với các khu vực sẽ nhận dữ liệu động. Để làm điều này, chúng ta hãy thay đổi phần thân của bảng theo sơ đồ trong hình.

    Danh sách file "MyHTA.hta"

    Ứng dụng HTA của tôi

    Ứng dụng HTA của tôi
    Chào mừng

    Bây giờ cấu trúc biểu mẫu đã sẵn sàng, bạn cần tạo một biểu định kiểu để xác định diện mạo của tất cả các đối tượng biểu mẫu. Nếu bạn đã nhận thấy, tất cả các thuộc tính chịu trách nhiệm hiển thị các đối tượng đã biến mất khỏi đánh dấu biểu mẫu - bây giờ tất cả các thuộc tính đều được xác định bởi tệp CSS "MyHTA.css". Tệp biểu định kiểu này nằm trong thư mục "MyHTA_files" và được kết nối bằng lệnh

    Danh sách tập tin "MyHTA_files\MyHTA.css"

    Bảng nội dung ( màu nền: nút bấm; họ phông chữ: Tahoma; ) ( chiều cao: 100%; chiều rộng: 100%; ) .Header_Row ( chiều cao:40px; ) .Content_Row ( căn chỉnh dọc: trên cùng; ) #StaticMenu_Cell ( chiều rộng : 20%; căn chỉnh văn bản: giữa; ) #StaticMenu_Cell đầu vào ( chiều rộng: 150px; lề: 2px 2px 2px 2px; ) #DynamicContent_Cell ( lề: 2px 2px 2px 2px; ) #DynamicContent_Cell #DynamicContent_Div ( text-align: center; ) #DynamicContent_Cell #DynamicContent_Div .NormalLink ( họ phông chữ: Tahoma; cỡ chữ: 10pt; màu: đen; con trỏ: mặc định; căn chỉnh dọc: đáy văn bản; căn chỉnh văn bản: trái; đệm-phải: 20px ) #DynamicContent_Cell # DynamicContent_Div .NormalLinkMouseOver ( họ phông chữ: Tahoma; cỡ chữ: 10pt; màu: Navy; trang trí văn bản: gạch chân; con trỏ: bàn tay; căn chỉnh dọc: văn bản dưới cùng; căn chỉnh văn bản: trái; đệm-phải: 20px ) #DynamicContent_Cell #DynamicContent_Div .TextFile ( font-family: Tahoma; font-size: 10pt; text-align: left; ) .Footer_Row ( Height:30px; ) #Version_Div ( float: left; ) #Button_Div ( float: right; )

    Điều cuối cùng và khó khăn nhất cần làm là viết logic của biểu mẫu - một đoạn script trong Visual Basic. Tập lệnh phải xử lý các sự kiện của biểu mẫu và thay đổi giao diện của nó tùy theo nhu cầu của người dùng.

    Sự kiện đầu tiên xảy ra trong ứng dụng là tải biểu mẫu. Tại sự kiện này, tập lệnh phải lấy độ phân giải màn hình từ hệ thống, căn giữa hình dạng và thay đổi kích thước của nó. Tiếp theo, các sự kiện nhấn nút có thể xảy ra, trong thời gian đó cần xác định nút được nhấn, thực hiện lệnh thích hợp và vẽ lại vùng động của biểu mẫu. Sự kiện cuối cùng là khi nút Đóng được nhấp vào, nút này sẽ tự đóng biểu mẫu.

    Nếu chúng ta xem xét kỹ hơn sự kiện nhấp vào nút "Tệp test.txt", chúng ta có thể phân biệt một số giai đoạn logic:

  • kiểm tra sự hiện diện của tập tin trên đĩa máy tính;
  • xuất ra vùng động câu hỏi về cách hiển thị tệp văn bản - tạo hai đối tượng mới với xử lý sự kiện "khi nhấp chuột";
  • xử lý sự kiện của đối tượng đã chọn - mở trong notepad hoặc hiển thị trên biểu mẫu;
  • mở tệp văn bản bằng notepad nếu hành động này được chọn;
  • xuất nội dung của tệp văn bản sang vùng động của biểu mẫu, nếu hành động này được chọn.
  • Tập lệnh xử lý sự kiện nằm trong thư mục "MyHTA_files" và được kết nối bằng lệnh trong tệp ứng dụng "MyHTA.hta".

    Danh sách file "MyHTA_files\MyHTA.vbs"

    " Quy trình khởi tạo cửa sổ biểu mẫu Sub WindowOnLoad Dim CurrentResolution " Kích thước cửa sổ iWidth = 800 iHeight = 600 " Lấy độ phân giải màn hình hiện tại CurrentResolution = GetDisplayResolution() " Thay đổi kích thước cửa sổ và căn giữa nó iLeft = (Split(CurrentResolution,";")(0) - iWidth) / 2 iTop = (Split(CurrentResolution,";")(1) - iHeight) / 2 Self.Focus() Self.resizeTo iWidth, iHeight Self.moveTo iLeft, iTop " Hiển thị phiên bản ứng dụng trên biểu mẫu Version_Div .InnerHTML = "Phiên bản: " & oHTA.Version End Sub RunApplication(sApplication) sCommandLine ="" Đặt oShell = CreateObject("Wscript.Shell") Chọn trường hợp Trường hợp ứng dụng "CommandPrompt" sCommandLine = "%ComSpec%" DynamicContent_Div.InnerHTML = "Dòng lệnh đang mở" Trường hợp "TestScript" Nếu CheckFile(oShell. CurrentDirectory & "\MyHTA_files\Test.vbs") = True Thì sCommandLine = "WScript """ & oShell. CurrentDirectory & _ "\MyHTA_files\Test.vbs """ DynamicContent_Div .InnerHTML = "Script " & oShell. CurrentDirectory & _ "\MyHTA_files\Test.vbs" & " đã hoàn thành" Khác DynamicContent_Div.InnerHTML = "Không tìm thấy tệp" Kết thúc nếu có "TextFile" Nếu CheckFile(oShell.CurrentDirectory & "\MyHTA_files \Test.txt") = True Then sDinamicContent = "Chọn chế độ hiển thị nội dung file: - Mở file trong Notepad" sDinamicContent = sDinamicContent & "- Hiển thị ở đây" DynamicContent_Div.InnerHTML = sDinamicContent Else DynamicContent_Div.InnerHTML = "File not đã tìm thấy" End If Case "TextFile_Form" sDinamicContent = "" & _ "Tệp văn bản: " & _ oShell.CurrentDirectory & "\MyHTA_files\Test.txt" sDinamicContent = sDinamicContent & "Đóng" sDinamicContent = sDinamicContent & "
    " & _ Thay thế(ReadFile(oShell. CurrentDirectory & _ "\MyHTA_files\Test.txt"),vbCrLf,"
    ") & "" DynamicContent_Div.InnerHTML = sDinamicContent Case "TextFile_Notepad" sCommandLine = "Notepad """ & oShell.CurrentDirectory & "\MyHTA_files\Test.txt""" DynamicContent_Div.InnerHTML = "File " & oShell.CurrentDirectory & _ " \MyHTA_files\Test.txt" & " mở bằng notepad" Trường hợp "TextFile_Close" DynamicContent_Div.InnerHTML = "Chào mừng" Trường hợp "TempDir" sCommandLine = "Explorer " & oShell.ExpandEnvironmentStrings("%Temp%") DynamicContent_Div.InnerHTML = " Tạm thời thư mục tệp đang mở" Case Else sCommandLine ="" End Select If Len(sCommandLine) > 0 Then oShell.Run sCommandLine,1,0 End Sub Function ReadFile(sFileName) Đặt oFSO = CreateObject("Scripting.FileSystemObject") Đặt oInFile = oFSO.OpenTextFile(sFileName, 1, False, 0) sFileContent = oInFile.ReadAll oInFile.Close ReadFile = sFileContent Chức năng kết thúc CheckFile(sFilePath) Đặt oFSO = CreateObject("Scripting.FileSystemObject") Nếu oFSO.FileExists(sFilePath) Then CheckFile = True Khác CheckFile = false End If End Chức năng GetDisplayResolution() Đặt oWMIService = GetObject("winmgmts:\\.\root\cimv2") Đặt colItems = oWMIService.ExecQuery("Select * From Win32_DesktopMonitor") cho mỗi oItem trong colItems iHorizontal = oItem.ScreenWidth iVertical = oItem.ScreenHeight Thoát cho lần tiếp theo GetDisplayResolution = iHorizontal & ";" & iVertical End Chức năng PingComputer(sComputer) Đặt oPing = GetObject("winmgmts:(impersonationLevel=impersonate)").ExecQuery(_ "select * từ Win32_PingStatus trong đó địa chỉ = "" & sComputer & """) Đối với mỗi oStatus Trong oPing Nếu IsNull(oStatus.StatusCode) Hoặc oStatus.StatusCode 0 Thì PingComputer = Sai Khác PingComputer = True End Nếu Chức năng kết thúc tiếp theo Sub ccSleep(giây) Đặt oShell = CreateObject("Wscript.Shell") sCommand = "%COMSPEC% /c ping -n " ​​​​ ​ & 1 + giây & " 127.0.0.1>nul" oShell.Run sCommand,0,1 End Sub tại đây .

    Ứng dụng Bảng điều khiển dành cho quản trị viên

    Ứng dụng Bảng điều khiển dành cho Quản trị viên là tập hợp các lệnh được sử dụng thường xuyên với tư cách là quản trị viên miền hoặc bộ phận trợ giúp miền. Sử dụng chương trình này, bạn có thể: điều khiển máy tính, điều chỉnh dịch vụ, tìm hiểu thông tin về máy tính, tìm hiểu thông tin về người dùng, mở khóa người dùng hoặc thay đổi mật khẩu của anh ta.

    Ứng dụng này là một biểu mẫu có khả năng chọn lệnh cần thiết, các trường nhập cho máy tính và tên người dùng, nút "Chạy" và một dòng thông tin hiển thị kết quả thực hiện lệnh. Bảng điều khiển có tệp cấu hình "MyHTA.ini" trong đó các tham số miền được đặt. Một kho lưu trữ với một chương trình ví dụ có thể được tải xuống.

    Vitaly Bochkarev

    liện kết ngoại

    Phần liên kết bên ngoài, nghĩa là liên kết đến các trang web khác mà tài nguyên này không liên quan. Ngoài ra, chủ sở hữu trang web không chịu bất kỳ trách nhiệm nào về tính khả dụng của các tài nguyên này và nội dung của chúng.

    Ứng dụng HTML

    Bắt đầu với Internet Explorer 5.0, người ta có thể tạo các ứng dụng HTML với bất kỳ giao diện người dùng nào bằng cách sử dụng JavaScript hoặc VBScript. Hơn nữa, ứng dụng html đã tạo sẽ được khởi chạy bên ngoài trình duyệt và sẽ không khác biệt chút nào so với các ứng dụng Windows tiêu chuẩn.

    Ứng dụng đã tạo sẽ xuất hiện trên thanh tác vụ với cửa sổ, menu và biểu tượng riêng. Ngoài ra, không cần xác nhận việc sử dụng các thành phần ActiveX (hệ thống bảo mật của Internet Explorer cung cấp các thông báo cảnh báo xuất hiện khi bạn cố gắng sử dụng ActiveX trong tài liệu HTML). Bạn có toàn quyền kiểm soát hệ thống, bao gồm đọc/ghi tệp, dữ liệu đăng ký và quản lý quy trình. Để tạo một ứng dụng như vậy, một Notepad thông thường (hoặc trình soạn thảo văn bản khác) là đủ.

    Dữ liệu ứng dụng HTML phải có phần mở rộng *.hta. Trường hợp đơn giản nhất sẽ như thế này:

    Chương trình của tôi