banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows [C++]Giao tiếp giữa 2 ứng dụng như thế nào ?  XML
  [Programming]   [C++]Giao tiếp giữa 2 ứng dụng như thế nào ? 24/03/2007 23:07:03 (+0700) | #1 | 49029
lychailon
Member

[Minus]    0    [Plus]
Joined: 03/09/2005 01:56:48
Messages: 30
Offline
[Profile] [PM]
Em có 2 chương trình. A và B.
A: Chương trình chỉ là một hộp thoại nhỏ, trong nó có một TextBox.
B: Chương trinh cũng là một hợp thoại nhỏ, trong nó có một Tlabel.

Yêu cầu : khi em gõ một chuỗi ký tự vào textbox của chương trình A thì chuỗi này xuất hiện lên ở chương trình B.

Sau khi vào codeproject thì học được dùng cách hook vào một process (dùng cách CreateRemoteThread và LoadLibrary).

Vấn đề nằm ở chỗ là sau khi hook rồi thì làm sao giao tiếp được giữa 2 chương trình thì bài báo hong có nói tới. Truy tìm trên google nói nhiều thứ lắm, nhưng em chưa học nhiều thứ nên hong hiểu nổi.

Giờ nhờ mấy anh chị giúp em giới hạn lại phạm vi để giải quyết được vấn đề. Em dùng Borland Developer Studio 2006 để viết ứng dụng C++. Tài liệu em tìm thấy trên mạng toàn dùng cú pháp của VC++ . Chưa biết nhiều về C++builder nên không biết có hàm nào tương ứng với các ví dụ minh họa dùng VC++ với lại đọc code minh họa bằng VC++ cũng hong hiểu nó đang minh họa phần nào. hix ngồi mấy bữa , chóng cả mặt nhứt cả đầu, tay chân bủng rủng mà còn chưa giải quyết được >,< . Giờ em đi coi AXN chờ mấy anh chị giúp đỡ .

cám ơn pà con trước ! smilie


[Up] [Print Copy]
  [Question]   [C++]Giao tiếp giữa 2 ứng dụng như thế nào ? 25/03/2007 01:28:17 (+0700) | #2 | 49060
mfeng
Researcher

Joined: 29/10/2004 15:16:29
Messages: 243
Offline
[Profile] [PM]
Yêu cầu của bạn có thể thực hiện bằng một trong các cách sau:

1. Sử dụng socket programming:
Cho B làm server, tạo một socket listen, chờ kết nối của A. A kết nối socket tới B. Tại A bắt sự kiện key_down của textbox, sự kiện này thực hiện lấy chuỗi ký tự từ textbox, gửi tới B qua socket. B nhận được chuỗi ký tự và hiển thị lên label.

2. Dùng các cơ chế inter-processes communication:
- Dùng pipe: Các hàm CreatePipe, ReadFile, WriteFile.
- Dùng RegisterWindowMessage để định nghĩa một message chung. A tạo một vùng nhớ trong A bằng VirtualAlloc và gửi địa chỉ cho B bằng message trên. B truy xuất vào vùng nhớ này bằng hàm ReadProcessMemory.
- Dùng cơ chế sharing memory của module dll: A và B sử dụng chung một module DLL. Module này định nghĩa vùng nhớ chung bằng chỉ thị biên dịch #pragma section("MyShare", shared, read, write). A và B chia sẻ vùng nhớ chung này.
- Dùng memory-map-file: dùng các hàm CreateFileMapping, MapViewOfFile.. để tạo một mapped-file chung giữa tiến trình A và B.
...
[Up] [Print Copy]
  [Question]   [C++]Giao tiếp giữa 2 ứng dụng như thế nào ? 25/03/2007 01:58:33 (+0700) | #3 | 49065
lychailon
Member

[Minus]    0    [Plus]
Joined: 03/09/2005 01:56:48
Messages: 30
Offline
[Profile] [PM]
Tuyệt ! Phần cơ chế inter-processes communication, bạn có thể đánh giá sơ bộ về chúng được hong vậy ? Để mình có cái nhìn được tổng quát một chút mà chọn phương pháp nào cho cái ứng dụng bé tí của mình. Tại sao lại có nhiều phương pháp chỉ để giải quyết một việc duy nhất là chia sẻ dữ liệu giữa 2 chương trình ?!
[Up] [Print Copy]
  [Question]   Re: [C++]Giao tiếp giữa 2 ứng dụng như thế nào ? 28/03/2007 05:37:40 (+0700) | #4 | 49907
lychailon
Member

[Minus]    0    [Plus]
Joined: 03/09/2005 01:56:48
Messages: 30
Offline
[Profile] [PM]
#pragma section()... không được hỗ trợ trong bộ borland developer studio 2006 . Kiém nát nước luôn cũng không thấy chỗ nào hướng dẫn. Có mỗi cái bài hướng dẫn này http://rxlib.ru/faqs/faqc_en/20132.html, nhưng nó lại áp dụng cho thằng C++builder 4.0 hix, ai biết share memory kiểu này trong BDS2006 thì chỉ em với

[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|