2009-12-29 42 views
5

Chúng tôi có một ứng dụng C++ hiện có sử dụng WinAPI (hãy gọi nó là "SvcApp"). Chúng tôi có một ứng dụng C++ WinAPI khác gọi là "MgrApp" cài đặt và khởi động "SvcApp" như một dịch vụ Windows.Cách cài đặt dịch vụ Windows bằng Qt?

Tuy nhiên, chúng tôi muốn thay thế "SvcApp" bằng ứng dụng Qt. Tôi có thể bị hiểu sai, nhưng có vẻ như không thể sử dụng <windows.h> từ ứng dụng Qt, vì vậy có vẻ như tôi không thể sao chép và dán tất cả mã hiện có từ "MgrApp" ... hay tôi có thể?

Nói tóm lại, chúng ta cần phải làm như sau từ ứng dụng Qt của chúng tôi:

  • Bắt đầu/dừng một dịch vụ windows
  • Cài đặt/gỡ bỏ cài đặt một dịch vụ windows

Trả lời

2

Bạn chắc chắn có thể sử dụng Windows API (bao gồm windows.h) trong Ứng dụng Qt. Đằng sau Qt sử dụng Windows API. Các ứng dụng Qt trên nền tảng thông thường được xử lý bằng cách sử dụng các khối #ifdef. Qt cung cấp các macro như Q_OS_WIN32 và Q_WS_MAC cho mục đích này. Xem qua mã nguồn Qt và bạn sẽ thấy phương pháp này được sử dụng khắp nơi.

EDIT: Bạn cũng có thể muốn xem xét sử dụng các tiện ích dòng lệnh để cài đặt/gỡ cài đặt và khởi động/dừng dịch vụ cửa sổ. Bằng cách này bạn chỉ có thể sử dụng QProcess để gọi nó, và không phải nghiên cứu kỹ vào WinAPI (luôn luôn tốt đẹp)

1

Tôi không biết cụ thể về tiêu đề windows.h, nhưng nói chung bạn có thể bao gồm mã nền tảng cụ thể trong bất kỳ chương trình Qt nào của bạn. Chương trình chỉ dừng lại trên các nền tảng. (Thông thường, nên đặt phần nền tảng cụ thể ngoài một tệp riêng biệt, nhưng nếu toàn bộ điểm của chương trình là dịch vụ cửa sổ thì ...)

10

Đã có giải pháp cho điều đó - QtService.

Tài liệu ở đây: http://qt.nokia.com/doc/solutions/4/qtservice/

Tải ở đây: ftp://ftp.qt.nokia.com/qt/solutions/lgpl/qtservice-2.6-opensource.zip

+0

Cảm ơn, tốt để biết về vấn đề này – JimDaniel

+0

@Mihai Limbăşan bạn có biết những gì các giấy phép là gì? – sara

+0

@sara Phiên bản cuối cùng cũng là [tại đây tại Gitorious] (http://qt.gitorious.org/qt-solutions/qt-solutions/trees/master/qtservice). Đó là LGPL (trong nguồn) và [cũng BSD] (http://qt.nokia.com/products/qt-addons/solutions-archive/). – tricasse

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