Re: [問題] 程式啟動方式問題
※ 引述《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)
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章