有半天的時間都在研究"比對字串和字元的方法"

結果...用個很簡單的方式就成功了...

真是去你的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...由達人來寫的話

應該不用一分鐘吧!!!!!!!!!!!!!!!!!!!!!

 

馬的結果我花了三小時.........

 

幹!!!!!!!!!

 

果然是不經一事, 不長一智!!!!!!!!!!

arrow
arrow
    全站熱搜

    dearsoul 發表在 痞客邦 留言(1) 人氣()