2009-03-06 30 views
5

Tôi đang sử dụng tập lệnh AutoIt để bắt đầu và tự động hóa ứng dụng GUI. Tôi cần phải kích hoạt kịch bản mỗi giờ.Thực hiện các kịch bản AutoIt, được thực hiện dưới dạng dịch vụ, chức năng cho các hành động GUI?

Các tập lệnh AutoIt (thực hiện tác vụ trên GUI) có hoạt động khi được sử dụng làm dịch vụ không? Tập lệnh sẽ được chạy dưới dạng dịch vụ (không phải tác vụ theo lịch).

Trả lời

1

Có vẻ như bạn muốn sử dụng tác vụ theo lịch thay vì dịch vụ. Tác vụ theo lịch biểu có thể thực thi mỗi giờ, trong khi bạn đăng nhập và cũng có thể tương tác với máy tính để bàn của bạn. Chỉ cần nhớ rằng một nhiệm vụ chạy như một người dùng bình thường không thể tương tác (gửi đầu vào) cho một chương trình nâng cao nếu bạn đang sử dụng Vista/Windows Server 2008 với User Account Control được kích hoạt.

2

Như đã đề cập ở trên, tác vụ được lên lịch là những gì bạn đang tìm kiếm. Để chạy tập lệnh dưới dạng dịch vụ, hãy đọc:

Q4. Làm cách nào để chạy tập lệnh của tôi dưới dạng dịch vụ? Đây cũng là một câu hỏi có nhiều câu trả lời và không có câu trả lời nào là cách duy nhất để thực hiện. Câu hỏi đầu tiên là bạn có muốn cài đặt dịch vụ trên các máy tính khác ngoài máy tính của bạn hay không.

A1. If you only wish to install the service on your own computer, The easiest way to do this is to use Pirmasoft RunAsSvc. This program makes services easy to install and easy to remove when necessary. 
A2. If you wish to make the service available to anyone running your script, you can use SRVANY.EXE and ServiceControl.au3. You can then use this code to install your script as a service: 
    #include "ServiceControl.au3" 
    $servicename = "MyServiceName" 
    _CreateService("", $servicename, "My AutoIt Script", "C:\Path_to_srvany.exe", "LocalSystem", "", 0x110) 
    RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\" & $servicename & "\Parameters", "Application", "REG_SZ", @ScriptFullPath) 

or use the following code to delete this service: 
    #include "ServiceControl.au3" 
    $servicename = "MyServiceName" 
    _DeleteService("", $servicename) 

Có một caveat để thiết lập AutoIt như một dịch vụ. Nếu dịch vụ không được cài đặt bằng mã trên, nó phải có cài đặt "cho phép dịch vụ tương tác với máy tính để bàn" hoặc các chức năng tự động hóa khác như chức năng Điều khiển * hoặc Win * sẽ không hoạt động. Để đảm bảo dịch vụ không thực sự có khung cảnh này, sử dụng đoạn mã sau: RegWrite ("HKLM \ SYSTEM \ CurrentControlSet \ Services [ServiceName]", "Loại", "REG_DWORD", 0x110)

Taken từ FAQ chủ đề trên Diễn đàn AutoIt. www.autoitscript.com/forum/index.php?showtopic=37289)

4

Bạn có thể dễ dàng tạo tập lệnh tự động chạy dưới dạng dịch vụ using service.au3 written by archer của diễn đàn tự động. Thật không may hoặc may mắn vì nó là một biện pháp an ninh. Dịch vụ cần phải bắt đầu độc lập với phiên người dùng hiện tại (trước khi đăng nhập). Nó không thể truy cập gửi các API cho thao tác đầu vào của phiên người dùng hiện tại từ đó. Nó có vẻ giống như bạn cần một nhiệm vụ theo lịch trình chứ không phải một dịch vụ.

Các vấn đề liên quan