執行檔傳回值給呼叫的執行檔的問題~~ |
答題得分者是:taishyang
|
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
|
st33chen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
|
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
大大`````我是bcb的初學者````````我去看了一下關於傳值的東西
有些地方看不懂````希望大大可以幫我解釋一下``````` //=========================================================================== // Send.exe void __fastcall TForm1::Button1Click(TObject *Sender) { HWND hWnd=FindWindow(NULL, "ReceiveForm"); if(hWnd) { AnsiString AStr="This is my char!"; COPYDATASTRUCT CopyData; CopyData.dwData=0; CopyData.cbData=AStr.Length(); CopyData.lpData=AStr.c_str(); SendMessage(hWnd, WM_COPYDATA, (WPARAM)Handle, (LPARAM)&CopyData); } } //========================================================================================== //=========================================================================================== // Receive.exe void __fastcall TForm1::WMCopyData(TMessage& Message) { COPYDATASTRUCT *CopyData=(COPYDATASTRUCT*)(Message.LParam); char *szStr=new char[CopyData->cbData 1]; ZeroMemory(szStr, CopyData->cbData 1); CopyMemory(szStr, CopyData->lpData, CopyData->cbData); AnsiString AStr=(AnsiString)szStr; ShowMessage(AStr); delete [] szStr; } //================================================================================================ HWND hWnd=FindWindow(NULL, "ReceiveForm");`````這段的意思``````HWND是什麼````` COPYDATASTRUCT是用來定義什麼``````````````````` |
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
CopyData.dwData=0;
CopyData.cbData;```````````````````````這3個是什麼```````````````` CopyData.lpData; SendMessage(hWnd, WM_COPYDATA, (WPARAM)Handle, (LPARAM)&CopyData); ```````這段的意思``````````````` 還有阿````在// Receive.exe中```````````````````` void __fastcall TForm1::WMCopyData(TMessage& Message) ````的WMCopyData是元件嗎````可是我找不到這個元件耶``````````` 編譯時````````他就顯示Form1中沒有WMCopyData```````````````` 麻煩大大給我解答```````感恩````` |
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
嗯嗯~~~~我已經有買書來看了~~~~~~~~~~~~~~不過外面的書也都是交一些非常基本的用法~~~~~~~~~~~
像是一些BCB基本元件的用法~~~~~~~~~~~~~~~~~~~~~ 不知道這位大大可以推薦依些好學的書給我~~~~~~~~~~~讓我可以比較上手一點呢~~~~~~~~~~~~ 還有可以幫我解答~~~~~~~~~~~~~~~~WMCOPYDATA~~~~~這是什麼呢~~~~~~~謝謝大大~~~~
編輯記錄
hank73317 重新編輯於 2008-12-15 11:16:50, 註解 無‧
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
你需要的是一本C/C 的書
舉例來說 Q.void __fastcall TForm1::WMCopyData(TMessage& Message)的WMCopyData是元件嗎? 可是我找不到這個元件耶,編譯時,他就顯示Form1中沒有WMCopyData A.WMCopyData他是一個function的名稱,且它是屬於TForm1的member function 怎麼宣告這個function為TForm1這個class的member function,書上都會有說 P.S:濫用符號,問題看起來很吃力!! ,還是您不知道標點符號怎麼用^^? ===================引 用 hank73317 文 章=================== 嗯嗯~~~~我已經有買書來看了~~~~~~~~~~~~~~不過外面的書也都是交一些非常基本的用法~~~~~~~~~~~ 像是一些BCB基本元件的用法~~~~~~~~~~~~~~~~~~~~~ 不知道這位大大可以推薦依些好學的書給我~~~~~~~~~~~讓我可以比較上手一點呢~~~~~~~~~~~~ 還有可以幫我解答~~~~~~~~~~~~~~~~WMCOPYDATA~~~~~這是什麼呢~~~~~~~謝謝大大~~~~ |
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
這位大大,真的很感謝您給我的建議,我一定會好好努力學習,也抱歉讓您看的那麼累.
請您好人做到底,在幫我解答一下,我去看了一些前輩寫的程式,了解了WMcopydata的設定與用法 不過我在照做的時候,兩個EXE不能互傳,在編譯時都沒有發生錯誤. 把這兩個程式編譯成EXE後,還是不能傳值,可以幫我找出還有哪裡沒寫道嗎? 再次感謝這位大大的幫忙. 第一個執行檔的程式: //================================================================================================================================================== // Send.exe =============================================================================================== // Unit1.cpp(在Unit1.cpp中)============================================================================= //--------------------------------------------------------------------------- #include #pragma hdrstop #include #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { HWND hWnd=FindWindow(NULL, "ReceiveForm"); if(hWnd) { AnsiString AStr="This is my char!"; COPYDATASTRUCT CopyData; CopyData.dwData=0; CopyData.cbData=AStr.Length(); CopyData.lpData=AStr.c_str(); SendMessage(hWnd, WM_COPYDATA, (WPARAM)Handle, (LPARAM)&CopyData); } } //=============================================================================================================================================== 這是第2個執行檔的程式: // Receive.exe //Unit1.h(在Unit1.h中)================================================================ #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include #include #include #include <Forms.hpp><br /> #include class TForm1 : public TForm { __published: // IDE-managed Components private: // User declarations void __fastcall WMCopyData(TMessage& Message); public: // User declarations __fastcall TForm1(TComponent* Owner); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_COPYDATA, TMessage, WMCopyData) END_MESSAGE_MAP(TForm) }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif //Unit1.cpp(在Unit1.cpp中)================================================================================================ //--------------------------------------------------------------------------- #include #pragma hdrstop #include #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::WMCopyData(TMessage& Message) { COPYDATASTRUCT *CopyData=(COPYDATASTRUCT*)(Message.LParam); char *szStr=new char[CopyData->cbData 1]; ZeroMemory(szStr, CopyData->cbData 1); CopyMemory(szStr, CopyData->lpData, CopyData->cbData); AnsiString AStr=(AnsiString)szStr; ShowMessage(AStr); delete [] szStr; } //--------------------------------------------------------------------------- 感謝在感謝這位大大給我的指教,謝謝. |
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
編輯記錄
taishyang 重新編輯於 2008-12-15 15:20:40, 註解 無‧
|
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
http://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=96497
副站長大大,這是我壓縮好的專案,把它分開寫在兩個資料夾中,在勞請大大幫我看一下,謝謝 |
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
|
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hank73317
一般會員 ![]() ![]() 發表:20 回覆:47 積分:13 註冊:2008-12-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |