作者azureblaze (AzureBlaze)
看板Programming
标题Re: [问题] 程式启动方式问题
时间Sun May 1 13:19:13 2011
※ 引述《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)