2009-01-05 30 views
9

Tôi có thể sẽ sớm thực hiện một vài dự án, nơi tôi sẽ cần lấy dữ liệu từ một tệp và nhập dữ liệu đó vào chương trình của bên thứ ba khác (không phải của riêng tôi). Một vấn đề: Tôi không có ý tưởng làm thế nào để làm điều này. Tôi sẽ cần phải nhập dữ liệu (như thời gian trên một tờ thời gian, cho exampls) Bất cứ ai có thể chỉ đạo tôi đi đúng hướng để có được kỹ năng này?Làm thế nào để tương tác với một ứng dụng lập trình

SPECIALAL SPECS: Tôi đã viết bài đăng gốc vào ban đêm nên có thể không được chi tiết như tôi nên có. Dưới đây là một ví dụ: Khách hàng của tôi có một ứng dụng ERP mà họ sử dụng để thu thập tem thời gian từ các nhân viên trực tuyến khi họ thực hiện công việc của họ và nhận các dự án ngoài cửa suốt cả ngày. Ứng dụng này KHÔNG có API mà tôi có thể sử dụng để nạp dữ liệu vào. Tôi đã nghe nói về một anh chàng có thể thực sự đẩy dữ liệu lên màn hình trong cửa sổ của ứng dụng này và điều khiển theo chương trình, sao cho dữ liệu có thể được thu thập, nói, bảng tính Excel, sau đó tải lên ứng dụng này một cách hiệu quả. Sắp xếp của một màn hình đảo ngược-scrape. Nó không giống như một API, nhưng nó hoạt động.

Tôi đã thấy tương tác của ứng dụng với các ứng dụng khác theo cách tương tự. Một ví dụ tốt tôi có thể nghĩ đến là SnagIt, tiện ích chụp màn hình. Bạn có thể đặt nó để chụp màn hình một cửa sổ trong một ứng dụng cụ thể và khi bạn di chuyển chuột quanh cửa sổ đó, các điều khiển bên dưới con trỏ sẽ tô màu đỏ để cho biết bạn sẽ nắm quyền kiểm soát nào. Tôi nghĩ điều đó thật thú vị và có lẽ chỉ cần thực hiện một bước nữa là có thể nhập văn bản vào kiểm soát như vậy.

Cảm ơn các nhận xét và câu trả lời cho đến nay, tôi đang theo đuổi tất cả.

+0

Bạn có muốn nhập dữ liệu một cách có lập trình vào GUI của ứng dụng của bên thứ ba không? – Artelius

+0

@Mike: Có thể cần phải làm rõ các yêu cầu của bạn ... –

+0

Câu trả lời của Frederick là tốt, nhưng câu hỏi cần các yêu cầu tốt hơn như Mitch nói. – kenny

Trả lời

8

Bạn có thể tự động hóa nó bằng tập lệnh AutoIt. Đây là một ngôn ngữ kịch bản đơn giản ẩn một số phức tạp của việc gửi tin nhắn đến các cửa sổ và điều khiển.

+1

Điều này giống như chính xác những gì tôi đã có trong tâm trí. Thật ngạc nhiên, đó là phần mềm miễn phí! Nếu nó hoạt động tốt như tôi mong đợi, một khoản quyên góp sẽ được thực hiện theo thứ tự. –

6

Các ứng dụng khác nhau cho phép bạn kiểm soát chúng theo cách lập trình theo nhiều cách khác nhau. Hai phương pháp phổ biến nhất là:

1) Một số ứng dụng hiển thị đối số dòng lệnh. Ví dụ:

c:\> someapp.exe arg1 arg2 

Bạn có thể gọi các ứng dụng như vậy từ một chương trình C++ với một cuộc gọi như thế này:

System("C:\\>someapp.exe arg1 arg2"); 

2) Các ứng dụng khác có thể khiến nhiều mạnh mẽ, hướng đối tượng API. Ví dụ: Microsoft Excel cho phép bạn lập trình nó bằng cách sử dụng Ứng dụng với tư cách là một đối tượng trong chương trình C# của bạn:

Excel.Application excelApp = new Excel.App() 

Khi bạn có đối tượng ứng dụng, bạn có thể gọi các phương pháp để kiểm soát hành vi của ứng dụng. Bạn có thể, ví dụ, mở tập tin với một cuộc gọi tiếp theo như thế này một Excel mới:

excelApp.Workbooks.Open("\\Somefile.xls", ...); 

Đối với bất kỳ ứng dụng của bên thứ ba, bạn đang cố gắng để kiểm soát, bạn sẽ phải đọc tài liệu hướng dẫn của nó như thế nào nó cho phép bạn làm điều đó. Thông tin về cách lập trình Excel, ví dụ, có thể được tìm thấy here.

0

Tôi đã từng làm một việc như thế này khi ứng dụng cửa sổ được ứng dụng web kiểm soát. Tôi đã sử dụng rất nhiều Win32 API cho điều đó. Nếu ứng dụng của bạn là một ứng dụng tương tự, hãy tìm bộ điều khiển từ xa mã nguồn mở Winamp để bắt đầu.

3

Có thể sẽ rất khó khăn nếu ứng dụng không được thiết kế để tương tác. Bạn sẽ cần gửi các sự kiện giả lập (giả vờ như con chuột đang làm những việc nhất định chẳng hạn). Một cách để làm điều đó là viết trình điều khiển chuột không kết nối với chuột thực. Nhưng, như tôi nói, nó phụ thuộc vào ứng dụng.Các ứng dụng có cơ sở người dùng lớn hơn thường có API để cho phép tương tác có lập trình hoặc có khả năng tạo kịch bản (do đó bạn có thể làm cho ứng dụng sử dụng mã của bạn thay thế).

0

Hoặc nếu bạn muốn còn nhiều hơn "hacky", hãy bắt đầu đọc bộ nhớ chương trình và truyền trực tiếp dữ liệu. : P

Nhưng điều đó có thể rất phức tạp và thường không làm việc chút nào vì chương trình sử dụng bộ nhớ như thế nào.

0

Đây không phải là cách đẹp nhất để làm điều đó, nhưng tôi đã thấy một số ứng dụng sử dụng khay nhớ tạm để thực hiện những việc như thế này. Thật không may, điều này cũng có thể sẽ yêu cầu can thiệp thủ công vì bạn có thể không có cách nào để làm cho ứng dụng lập trình kéo từ/đẩy vào clipboard.

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