2013-11-15 14 views
5

Tôi có ứng dụng C#, tôi muốn gọi tên hàm ví dụ SendChatMessage (chuỗi tin nhắn, int userid) từ ứng dụng của tôi. Nhưng chức năng này thuộc về một máy khách/máy chủ đang chạy khác ứng dụng trên máy tính của tôi. Tôi không thể tìm ra cách tôi có thể làm điều này.Cách gọi từ xa một phương thức xử lý khác từ ứng dụng C#

Tôi cố gắng thực hiện điều này bằng Thư viện phản chiếu nhưng không thành công. Hy vọng ai đó giúp tôi về điều này.

Cảm ơn bạn đã trợ giúp.

+3

Bạn có kiểm soát mã nguồn trong chương trình khác không hoặc bạn có muốn tiêm các lệnh vào quá trình không? Sau đó, bạn có thể phải sử dụng DLL-tiêm để có "kiểm soát" trên các ứng dụng khác. – NoLifeKing

+0

Bạn có sở hữu ứng dụng khác không? Ứng dụng khác có được thiết kế để cho phép các quy trình khác gọi các phương thức không? – Rob

+1

bản sao có thể có của [Sử dụng C# để gọi hàm từ quá trình khác] (http://stackoverflow.com/questions/15767482/using-c-sharp-to-call-a-function-from-another-process) –

Trả lời

12

Chào mừng bạn đến với thế giới của Inter-process communication. Có nhiều phương pháp để thực hiện việc này, như ống được đặt tên, RPC, bộ nhớ dùng chung, v.v.

Tóm lại, chương trình của bạn đang chạy bên trong một quy trình. Chương trình khác đang chạy bên trong một tiến trình khác. Nó giống như cha của bạn đang cố gắng hỏi điều gì đó từ cậu bé bên cạnh. Các quy trình này có thể giao tiếp với nhau và gọi các phương thức của nhau, hoặc sử dụng dữ liệu của nhau. Nhưng không tùy ý hay là khóa học. Họ cần một số tiêu chuẩn chung cho giao tiếp.

Hãy xem những câu hỏi này:

What is the simplest method of inter-process communication between 2 C# processes?

What is the best choice for .NET inter-process communication?

What is the easiest way to do inter process communication in C#?

+1

Cảm ơn bạn đã trả lời nhưng câu trả lời này đúng nếu tôi có quyền kiểm soát mã chương trình xử lý khác. Nhưng tôi havent kiểm soát mã nguồn của chương trình khác. –

0

Nếu bạn không có quyền kiểm soát các mã trong quá trình mục tiêu, sau đó nó có vẻ như bạn cần phải sử dụng một phương tiện DLL-injection để tiêm mã của bạn vào nó.

Nếu quá trình gọi điện không cần xác nhận hoặc phản hồi; sau đó tiêm mã thực hiện mã lệnh gọi phương thức có thể xuất hiện, nhưng nếu đáp ứng được yêu cầu thì có khả năng bạn sẽ cần phải thực hiện một số hình thức liên lạc giữa các quá trình trong mã đang được tiêm.

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