Re: [問題] 程式啟動方式問題

看板Programming作者 (AzureBlaze)時間14年前 (2011/05/01 13:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《opcode (Qoo)》之銘言: : 1.檢查機制: firefox 先進行檢查系統是否已經有瀏覽器執行 : 2.通訊機制: 若檢查出已經有瀏覽器執行中,就通知執行中的瀏覽器將此網頁載入 假設是windows / C的話 1.MUTEX 2.SendMessage int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE, LPSTR cmdline, int) { HANDLE hd; LPCWSTR mu = (LPCWSTR)"appMUTEX"; //某個程式唯一的標籤 hd = CreateMutexW(NULL, FALSE, mu); if(GetLastError() == ERROR_ALREADY_EXISTS) //MUTEX已經被建立過 { HWND wnd = FindWindowA(NULL,"app"); //抓之前的視窗 //視情況方法可能不一樣 COPYDATASTRUCT MyCDS; MyCDS.dwData = 1; // function identifier MyCDS.cbData = sizeof(char) * (strlen(cmdline) + 1); // size of data MyCDS.lpData = cmdline; // data structure SendMessage( wnd, //用COPYDATA把參數丟過去 WM_COPYDATA, (WPARAM)(HWND) NULL, (LPARAM) (LPVOID) &MyCDS ); return 1; //關掉 } .... } 接收 LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { ..... switch(msg){ case WM_COPYDATA: PCOPYDATASTRUCT pMyCDS = (PCOPYDATASTRUCT) lparam; foo( (char *) pMyCDS->lpData ); //把字串抓出來看看你要幹麻 } ..... } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.120.64.139 ※ 編輯: azureblaze 來自: 221.120.64.139 (05/01 13:21)
文章代碼(AID): #1DlErJbG (Programming)
文章代碼(AID): #1DlErJbG (Programming)