有半天的時間都在研究"比對字串和字元的方法"
結果...用個很簡單的方式就成功了...
真是去你的C++!!!!!!!!!!!!!!
好啦...........其實是自己學藝不精啦 / _\
如果這些不寫下來...
哪天我一定會忘記...
Start...
目的是這樣的:
我們取得window的名稱
然後再比對我們想要比對的名稱
用message方式把資料從A送給B
首先, 接收端與發送端都要有"同樣"的 message定義...
(沒有一樣的語言, 你是要怎樣溝通!?!?!?!?!?!?)
所以就在A跟B的宣告上, 定義一message吧...
#define WM_FPSMSG WM_USER+624
以下為發送端AP的寫法======
HWND hForeWin;
// 先宣告一個可以掌控視窗的變數吧 (handle window = hwnd, 真人性化的宣告定義)
hForeWin = ::GetForegroundWindow();
// 接著得到最前端視窗的控制權 (沒有先取得王位, 你是要怎樣控制子民們為你賣錢賣命!?)
TCHAR achWnd[160];
// 宣告一個字元, 準備存取名稱的變數, 給他個160的空間
::GetWindowText (hForeWin,achWnd,160);
// 用GetWindowText(視窗控制權, 名稱變數, size)
StringCchPrintf(achWnd,160,achWnd);
// 這個我忘記幹嘛了, 以後再查吧 = ="
TCHAR achWnd2[160];
StringCchPrintf(achWnd2,160,TEXT("PCamTest"));
// 宣告字元變數之後, 存放我們要比對的名稱吧
// commpare foreground window text (使用wcscmp 來比對兩個字串)
if (wcscmp(achWnd,achWnd2) ==0)
{
OutputDebugString(achWnd);
// 輸出名稱到debugview
::PostMessage (hForeWin,WM_FPSMSG,i_fps,0);
// 把計算的fps使用 postmessage 傳出去給接收端的AP
}
/////////發送端AP準備完成!!!!!!//////////
以下為接收端AP的寫法======
// 定義我們的訊息地圖吧!!!!!!
BEGIN_MESSAGE_MAP(CPCamTestDlg, CDialog)
ON_MESSAGE(WM_FPSMSG, OnCatchFps)
// on_message(message編號, 收到message後要前往的function)
END_MESSAGE_MAP()
// 收到message後, 程式就會來到這段function.....
LRESULT CPCamTestDlg::OnCatchFps(WPARAM wParam, LPARAM lParam)
{
// wParam 就是我們收到的參數啦...................
CString strTemp;
strTemp.Format (_T("%d"),wParam);
log_text.InsertString (log_text.GetCount (), strTemp);
log_text.SetCurSel(log_text.GetCount()-1);
return 0;
}
/////////接收端AP完成!!!!!!//////////
經本人我測試之後,
順利的達到我的目的.........
這幾段code...由達人來寫的話
應該不用一分鐘吧!!!!!!!!!!!!!!!!!!!!!
馬的結果我花了三小時.........
幹!!!!!!!!!
果然是不經一事, 不長一智!!!!!!!!!!
留言列表