如何發送&從其他Delphi創建的應用程序接收命令?
我想發送命令給我的其他應用程序。
Delphi:如何發送命令給其他應用程序?
回答
發件人:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
WM_MY_MESSAGE = WM_USER + 1;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
begin
h := FindWindow(nil, 'My Second Window');
if IsWindow(h) then
SendMessage(h, WM_MY_MESSAGE, 123, 520);
end;
end.
接收機:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
const
WM_MY_MESSAGE = WM_USER + 1;
type
TForm1 = class(TForm)
private
{ Private declarations }
protected
procedure WndProc(var Message: TMessage); override;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WndProc(var Message: TMessage);
begin
inherited;
case Message.Msg of
WM_MY_MESSAGE:
ShowMessageFmt('The other application sent the data %d and %d.', [Message.WParam, Message.LParam]);
end;
end;
end.
確保接收形式的標題是 '我的第二個窗口'。
這是低調,因爲...? – 2011-05-24 19:32:48
...重寫WndProc並不理想。 – 2011-05-24 19:38:04
@userNN:是的,但我*真的*不認爲它激勵downvote。另外,如果你沒有解釋你爲什麼低估了,沒有人會理解這是它的原因,所以你的低估將被完全浪費!真的,如果你想爲那些幾乎不值得做評論的小事情付出代價,那麼你需要對所有的答案都下決心...... – 2011-05-24 19:38:52
查找進程間通信。你一些輕量級適當的選項可以是:
- 定義自己的自定義窗口 消息
- 使用WM_COPYDATA
Windows消息可能是一個解決方案 - 一個有趣的文章可以在這裏找到:http://delphi.about.com/od/windowsshellapi/a/aa020800a.htm
這是*解決方案。沒有理由downvote。補償,+1。 – 2011-05-24 19:00:00
@robrok你很快就會暈倒。這樣做會使我們不那麼熱衷於回答。如果我是你,我會集中注意力。我個人從來沒有對自己的問題冷落。我把它留給別人。 – 2011-05-24 19:31:28
你是什麼意思*編輯答案*?你問了一個問題,我提供了一個答案,這對你所問的問題就足夠了。它沒有代碼,但這並不意味着它是錯誤的。你還沒有要求代碼。我鏈接的文章將幫助你理解消息傳遞的主題,這是一個複雜的話題,在使用Delphi或Windows進行編程時非常值得了解。 EOT。 – Sorrow 2011-05-24 19:41:13
以下是關於此主題的完整教程,您可以在此處找到它:
http://delphi.about.com/od/windowsshellapi/a/wm_copydata.htm
鏈接不是答案! – 2011-05-24 19:07:15
爲什麼你看不懂? – opc0de 2011-05-24 19:28:12
@Robrok,你提出的問題對於其複雜的主題同樣微小且不確定。閱讀[this](http://msdn.microsoft.com/en-us/library/aa365574(VS.85).aspx)並返回有關您選擇的特定方法的問題。 – 2011-05-24 19:31:42
如果你正在編寫這兩個應用程序,TCP/IP可以是一個比windows消息更清潔的解決方案。這兩個應用程序甚至可以位於網絡中的不同計算機上。
- 1. 發送命令到其他命令行程序
- 2. 如何使用delphi將虛擬鍵發送到其他應用程序
- 3. 發送消息給其他用戶Android應用程序
- 4. 結合awk和其他命令發送報告給用戶
- 5. Android - 發送App消息給其他Messenger應用程序
- 6. Maya和Android應用程序 - TCP將Mel命令發送給Maya
- 7. 如何發送文本給其他用戶在同一個應用程序
- 8. 如何使用其他應用程序發送圖片?
- 9. 如何從swift中將應用程序發送到其他應用程序?
- 10. 如何從我的應用程序發送操作到其他應用程序?
- 11. 如何從GUI應用程序向控制檯應用程序發送命令
- 12. 如何發送文件給其他人在小nodejs聊天應用程序
- 13. 發送/發送消息到其他應用程序
- 14. 我如何打開一個命令行程序並用java發送命令給他們(安卓)
- 15. 從Delphi程序發出Netsh命令
- 16. 連續將數據從一個應用程序發送到其他應用程序的其他應用程序?
- 17. 通過twistd啓動Twisted應用程序時,如何將命令行參數發送給應用程序?
- 18. 如何從C程序向Linux命令發送命令
- 19. 如何使用「uri」將圖像發送給其他課程? (android)
- 20. 如何檢測發送到其他應用程序的推送通知?
- 21. 通過其他應用程序發送序列化文件
- 22. 其他應用程序是否可以使用APNS令牌發送通知?
- 23. 使用其他應用程序發送消息到線應用程序
- 24. 從其他應用程序/命令行/ Apple腳本運行Xcode
- 25. Android - 點擊發送給其他活動的圖片時應用程序崩潰
- 26. 使用Objective-C爲OS X應用程序發送CURL命令
- 27. 發送facebook_question給其他用戶
- 28. 發送消息給其他用戶
- 29. socket.io沒有發送給其他用戶
- 30. 發送文件給其他用戶
你在問什麼是一個複雜的問題。首先,你的其他應用程序使用哪些輸入管道?它是基於命令行接受stdin輸入嗎?你只是想用一些開關來啓動它嗎?還是它有一些你可以打電話的API?也許它使用信號量或信號?如果不先確定管道,則無法確定如何通信。 – 2011-05-24 18:58:25
它並不複雜。 = p我只是不那麼聰明。 – 2011-05-24 19:04:03
我並不是想暗示任何東西。我只是覺得你的其他應用程序已經寫好了,在這種情況下拋出通信建議並不會很有幫助。如果你沒有API進行交互,那麼解釋如何使用它的答案是無關緊要的。 – 2011-05-24 19:08:15